pexpect を使用してピアノバー (Pandora オンライン ラジオのクライアント) を開こうとしています。
(Python プログラムからではなく) コマンド ラインからピアノバーを起動すると、構成ファイル (電子メール、パスワード、TLS_fingerprint) の情報を使用して自動的にログインします。
スクリプトを IDLE で実行しても機能します。しかし、コマンド プロンプトから実行すると、構成ファイルが表示されないかのように動作し、電子メールとパスワードを要求されます。
電子メールとパスワードを入力できますが、TLS_fingerprint をどうすればよいかわかりません。「TLS ハンドシェイクに失敗しました」という結果になります。
私はまったくの初心者ですが、これを機能させることができれば素晴らしいと思います。Raspian Wheezy Linuxディストリビューションを使用して、Raspberry Piでこれを行っています。
ありがとう
Here is the relevant code:
from pexpect import spawn
child = spawn('/usr/bin/pianobar')
#starts pianobar which then should log me on automatically with info from its config file
print channel
child.expect('station:') #looks for prompt from pianobar for ‘station:'
print child.before
child.sendline('35') #tells pianobar I’d like it to play station 35
プルダウン メニューから run を使用してアイドル ウィンドウから正常に動作しますが、「sudo python」を使用して bash プロンプトから開始すると、プロセスが開始されてからハングします。
エラーメッセージから、bashプロンプトから実行すると自動ログインしないことがわかりました(これはアイドル状態からうまくいきます)。
停止して「Email:?」と尋ねているため、「station:」には到達しません。
「child.expect」および「child.sendline」ステートメントをスクリプトに追加して電子メールとパスワードを入力することでこれを乗り越えることができましたが、「TLSハンドシェイクに失敗した」ため停止します
電子メール、パスワード、および TLS 情報はすべて構成ファイルであるため、何らかの理由で構成ファイルにアクセスしていないと考えられます。
これを見てくれてありがとう、Zygo