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()
Search¶
import pprint
from googlevoice import Voice
def run():
voice = Voice()
voice.login()
folder = voice.search(input('Search query: '))
print('Found %s messages: ', len(folder))
pprint.pprint(folder.messages)
__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()