from googlevoice import Voice, util
プログラムが SMS メッセージを送信するために GoogleVoice ( ) にログインしようとすると、次のエラー トレースバックが表示されます。
File "C:\Users\ble1usb\Dropbox\Git\ers-dataanalyzzer\MainFrame.py", line 38, in call_mainframe
ah.compare_status() # compares current status with historical status. alerts alarm team if necessary
File "C:\Users\ble1usb\Dropbox\Git\ers-dataanalyzzer\alarm_handler.py", line 61, in compare_status
self.megaphone = megaphone.MegaPhone() # Am I going to have problems putting this here? I am getting relentless login fails due to the shitty googlevoice login
File "C:\Users\ble1usb\Dropbox\Git\ers-dataanalyzzer\megaphone.py", line 18, in __init__
self.voice.login(bl_google_credentials[0], bl_google_credentials[1])
File "C:\Python27\lib\site-packages\googlevoice\voice.py", line 70, in login
galx = re.search(r"name=\"GALX\"\s+value=\"(.+)\"", content).group(1)
AttributeError: 'NoneType' object has no attribute 'group'
私のプログラムは、過去数週間、正常に実行されています。時々、上記のエラーがスローされ、エラー処理が再試行されます。現在、数百回の試行でログインに成功していません。
私が重要だと思う問題の 1 つは、SMS が送信されたかどうかに関係なく、プログラムが 10 分ごとにログインしていたことです (まれなケースですが、せいぜい数日ごと)。
上記のトレースバックでは、必要な場合にのみ、GoogleVoice ログインを実行する関数呼び出しをループ内に移動したことがわかります。送信する必要があるアラーム通知があるため、まだ問題があります。
Google アカウントへのログインとログアウトを試みましたが、役に立ちませんでした。
ここに手がかりがあります --> 次のコードは、トレースバックの最後の行で特定されたファイルからコピーされました (エラーの原因):
def login(self, email=None, passwd=None):
"""
Login to the service using your Google Voice account
Credentials will be prompted for if not given as args or in the ``~/.gvoice`` config file
"""
if hasattr(self, '_special') and getattr(self, '_special'):
return self
if email is None:
email = config.email
if email is None:
email = input('Email address: ')
if passwd is None:
passwd = config.password
if passwd is None:
from getpass import getpass
passwd = getpass()
content = self.__do_page('login').read()
# holy hackjob
galx = re.search(r"name=\"GALX\"\s+value=\"(.+)\"", content).group(1)
self.__do_page('login', {'Email': email, 'Passwd': passwd, 'GALX': galx})
del email, passwd
try:
assert self.special
except (AssertionError, AttributeError):
raise LoginError
return self
注意すべきは、
galx = re.search(r"name=\"GALX\"\s+value=\"(.+)\"", content).group(1)
はエラーの原因であり、(これは重要です) そのすぐ上の行には次のように書かれています
# holy hackjob