PythonでのDigest認証
import requests from requests.auth import HTTPDigestAuth r = requests.get('http://@URL@', auth=HTTPDigestAuth('@user@', '@pass@')) r.status_code
東芝テレビ(レグザ:REGZA)のWEB API仕様
WEB API実行時にDigest認証(ダイジェストにんしょう)が必要となります。
ユーザ名およびパスワードは、レグザAppコネクト設定で設定したユーザー名とパスワードになります。
「(リモコン)設定ボタン」「接続機器設定」「外部連携設定」「レグザAppコネクト設定」
プログラムからの利用時には、Digest認証に対応した方法で利用する必要があります。
http://[REGZA IP]/remote/remote.htm?key=[command_key]
IE、Chrome、Firefoxなど一般ブラウザから動作確認できます。
戻り値は、テキスト出力として数字が返ってきました。
「0」成功 「0以外」失敗。
ブラウザで操作している際に、テレビの音量を上げようとすると「4」というエラー番号も見ることが出来ました。電源ボタンを押した直後に音量操作実施のタイミング。
テレビのIPアドレスが192.168.0.77の場合のコマンドサンプル
- 音量を上げたいとき
http://192.168.0.77/remote/remote.htm?key=40BF1A - チャンネル「8」ボタンを押す
http://192.168.0.77/remote/remote.htm?key=40BF08 - リモコンの「青」ボタンを押す
http://192.168.0.77/remote/remote.htm?key=40BF73
[command_key]リスト
ボタン名 | [command_key] |
1 | 40BF01 |
2 | 40BF02 |
3 | 40BF03 |
4 | 40BF04 |
5 | 40BF05 |
6 | 40BF06 |
7 | 40BF07 |
8 | 40BF08 |
9 | 40BF09 |
10 | 40BF0A |
11 | 40BF0B |
12 | 40BF0C |
入力切替 | 40BF0F |
消音 | 40BF10 |
電源 | 40BF12 |
音声切り替え | 40BF13 |
音量↑ | 40BF1A |
チャンネル↑ | 40BF1B |
画面表示 | 40BF1C |
音量↓ | 40BF1E |
チャンネル↓ | 40BF1F |
ブロードバンド | 40BF25 |
クイック | 40BF27 |
マルチ画面 | 40BF29 |
画面サイズ | 40BF2B |
戻る | 40BF3B |
終了 | 40BF3C |
決定 | 40BF3D |
↑ | 40BF3E |
↓ | 40BF3F |
一時停止(静止) | 40BF50 |
→ | 40BF5B |
← | 40BF5F |
CH番号 | 40BF60 |
サーチ | 40BF60 |
ラジオ/データ | 40BF6D |
番組表 | 40BF6E |
番組説明 | 40BF71 |
青 | 40BF73 |
赤 | 40BF74 |
緑 | 40BF75 |
黄 | 40BF76 |
ミニ番組表 | 40BF77 |
地デジ | 40BF7A |
地アナ | 40BF7B |
BS | 40BF7C |
CS | 40BF7D |
録画 | 40BF86 |
設定メニュー | 40BFD0 |
↑↑ | 40BE20 |
↓↓ | 40BE21 |
→→(30秒送り) | 40BE22 |
←←(10秒戻し) | 40BE23 |
早送りスキップ | 40BE26 |
戻るスキップ | 40BE27 |
録画リスト | 40BE28 |
停止 | 40BE2B |
巻き戻し | 40BE2C |
再生 | 40BE2D |
早送り | 40BE2E |
レグザメニュー | 40BE34 |
タイムシフト | 40BE35 |
番組検索 | 40BE36 |
始めにジャンプ | 40BE47 |
イジェクト | 40BE93 |
ディスク | 40BE9E |
dデータ | 43BC14 |
字幕 | 43BC52 |
PythonでのREGZA操作サンプルソースコード
import requests from requests.auth import HTTPDigestAuth TV_IP = "xxx.xxx.xxx.xxx" TV_USER = "user" TV_PASS = "pass" TV_VOLUME_DOWN = "40BF1E" TV_BOTTON_8 = "40BF08" def execjanken(key): url = "http://" + TV_IP + "/remote/remote.htm?key=" + key r = requests.get(url, auth=HTTPDigestAuth(TV_USER, TV_PASS)) return True //Change channel to 8 execjanken(TV_BOTTON_8)