From 4d3fa2c7ce1589b07dd2014a49e1f308c73d6da3 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Sat, 26 Feb 2011 18:48:51 -0600 Subject: [PATCH] Fixing backend support for voicemail download --- src/backends/gvoice/browser_emu.py | 1 + src/backends/gvoice/gvoice.py | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/backends/gvoice/browser_emu.py b/src/backends/gvoice/browser_emu.py index 3f3cc51..6509e7f 100644 --- a/src/backends/gvoice/browser_emu.py +++ b/src/backends/gvoice/browser_emu.py @@ -48,6 +48,7 @@ def add_proxy(protocol, url, port): class MozillaEmulator(object): USER_AGENT = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 (.NET CLR 3.5.30729)' + #USER_AGENT = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16" def __init__(self, trycount = 1): """Create a new MozillaEmulator object. diff --git a/src/backends/gvoice/gvoice.py b/src/backends/gvoice/gvoice.py index 3f2069f..fda7f24 100755 --- a/src/backends/gvoice/gvoice.py +++ b/src/backends/gvoice/gvoice.py @@ -414,6 +414,10 @@ class GVoiceBackend(object): return json + def recording_url(self, messageId): + url = self._downloadVoicemailURL+messageId + return url + def download(self, messageId, adir): """ Download a voicemail or recorded call MP3 matching the given ``msg`` @@ -423,7 +427,7 @@ class GVoiceBackend(object): @returns location of saved file. @blocks """ - page = self._get_page(self._downloadVoicemailURL, {"id": messageId}) + page = self._get_page(self.recording_url(messageId)) fn = os.path.join(adir, '%s.mp3' % messageId) with open(fn, 'wb') as fo: fo.write(page) @@ -1013,6 +1017,21 @@ def grab_debug_info(username, password): ) +def grab_voicemails(username, password): + cookieFile = os.path.join(".", "raw_cookies.txt") + try: + os.remove(cookieFile) + except OSError: + pass + + backend = GVoiceBackend(cookieFile) + backend.login(username, password) + voicemails = list(backend.get_voicemails()) + for voicemail in voicemails: + print voicemail.id + backend.download(voicemail.id, ".") + + def main(): import sys logging.basicConfig(level=logging.DEBUG) @@ -1022,6 +1041,7 @@ def main(): password = args[2] grab_debug_info(username, password) + grab_voicemails(username, password) if __name__ == "__main__": -- 1.7.9.5