Examples

All of these can be found in the examples directory

Place calls

from googlevoice import Voice


def run():
    voice = Voice()
    voice.login()

    outgoingNumber = input('Number to call: ')
    forwardingNumber = input('Number to call from [optional]: ') or None

    voice.call(outgoingNumber, forwardingNumber)

    if input('Calling now... cancel?[y/N] ').lower() == 'y':
        voice.cancel(outgoingNumber, forwardingNumber)


__name__ == '__main__' and run()

Download MP3s

from googlevoice import Voice


def run():
    download_dir = '.'

    voice = Voice()
    voice.login()

    for message in voice.voicemail().messages:
        message.download(download_dir)


__name__ == '__main__' and run()

Send SMS messages

from googlevoice import Voice


def run():
    voice = Voice()
    voice.login()

    phoneNumber = input('Number to send message to: ')
    text = input('Message text: ')

    voice.send_sms(phoneNumber, text)


__name__ == '__main__' and run()

Phones

import pprint

from googlevoice import Voice


def run():
    voice = Voice()
    voice.login()

    pprint.pprint(voice.phones)


__name__ == '__main__' and run()

Folders

from __future__ import print_function

from googlevoice import Voice, settings


def run():
    voice = Voice()
    voice.login()

    for feed in settings.FEEDS:
        print(feed.title())
        for message in getattr(voice, feed)().messages:
            print('\t', message)


__name__ == '__main__' and run()

List voicemails

from __future__ import print_function

from googlevoice import Voice


def run():
    voice = Voice()
    voice.login()

    for message in voice.voicemail().messages:
        print(message)


__name__ == '__main__' and run()

Delete Messages

from googlevoice import Voice


def run():
    voice = Voice()
    voice.login()

    for message in voice.sms().messages:
        if message.isRead:
            message.delete()


__name__ == '__main__' and run()

Parse received SMS

#
# SMS test via Google Voice
#
# John Nagle
#   nagle@animats.com
#

import bs4

from googlevoice import Voice


def extractsms(htmlsms):
    """
    extractsms  --  extract SMS messages from BeautifulSoup
    tree of Google Voice SMS HTML.

    Output is a list of dictionaries, one per message.
    """
    msgitems = []  # accum message items here
    # Extract all conversations by searching for a DIV with an ID at top level.
    tree = bs4.BeautifulSoup(htmlsms)  # parse HTML into tree
    conversations = tree.findAll("div", attrs={"id": True}, recursive=False)
    for conversation in conversations:
        # For each conversation, extract each row, which is one SMS message.
        rows = conversation.findAll(attrs={"class": "gc-message-sms-row"})
        for row in rows:  # for all rows
            # For each row, which is one message, extract all the fields.
            # tag this message with conversation ID
            msgitem = {"id": conversation["id"]}
            spans = row.findAll("span", attrs={"class": True}, recursive=False)
            for span in spans:  # for all spans in row
                cl = span["class"].replace('gc-message-sms-', '')
                # put text in dict
                msgitem[cl] = (" ".join(span.findAll(text=True))).strip()
            msgitems.append(msgitem)  # add msg dictionary to list
    return msgitems


def run():
    voice = Voice()
    voice.login()

    voice.sms()
    for msg in extractsms(voice.sms.html):
        print(msg)


__name__ == '__main__' and run()

List account settings

import pprint

from googlevoice import Voice


def run():
    voice = Voice()
    voice.login()

    pprint.pprint(voice.settings)


__name__ == '__main__' and run()