Fixing backend support for voicemail download
authorEd Page <eopage@byu.net>
Sun, 27 Feb 2011 00:48:51 +0000 (18:48 -0600)
committerEd Page <eopage@byu.net>
Tue, 19 Apr 2011 23:49:27 +0000 (18:49 -0500)
src/backends/gvoice/browser_emu.py
src/backends/gvoice/gvoice.py

index 3f3cc51..6509e7f 100644 (file)
@@ -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.
index 3f2069f..fda7f24 100755 (executable)
@@ -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__":