Harekaze / pvr.chinachu

Chinachu PVR client for Kodi/XBMC
https://mzyy94.com/blog/2017/02/04/pvr-chinachu-4/
GNU General Public License v3.0
50 stars 10 forks source link

情報取得の失敗 #30

Open orumin opened 5 years ago

orumin commented 5 years ago

Kodi v18.1 (Leia) にて,手元でビルドした pvr.chinachu (18.x-Leia branch) を用いたところ Chinachu の API からデータを取得できないエラーが発生。 環境は

同じコードベースを Windows 上でビルドし,Windows の Kodi v18.1 で使用した際には問題なく動作した。

以下,エラーログ

2019-05-05 17:06:26.931 T:1418703584  NOTICE: AddOnLog: Harekaze (Chinachu PVR client): Transcoding parameter: &c:v=copy&c:a=copy
2019-05-05 17:06:26.939 T:1418703584  NOTICE: PVR Manager: Starting
2019-05-05 17:06:28.892 T:1410310880   ERROR: CCurlFile::FillBuffer - Failed: Server returned nothing (no headers, no data)(52)
2019-05-05 17:06:28.892 T:1410310880   ERROR: CCurlFile::Open failed with code 0 for http://chinachu:10712/api/schedule.json:
2019-05-05 17:06:28.893 T:1410310880   ERROR: Open - failed to open source <http://chinachu:10712/api/schedule.json>
2019-05-05 17:06:28.893 T:1410310880   ERROR: AddOnLog: Harekaze (Chinachu PVR client): [schedule.json] Request failed
2019-05-05 17:06:28.893 T:1410310880   ERROR: GetChannels: Add-on 'Chinachu:http://chinachu:10712/' returned an error: server error
2019-05-05 17:06:28.893 T:1410310880   ERROR: GetChannels: PVR client 'Chinachu:http://chinachu:10712/' returned an error: server error
2019-05-05 17:06:28.940 T:1915889200  NOTICE: Samba is idle. Closing the remaining connections
2019-05-05 17:06:31.542 T:1410310880   ERROR: CCurlFile::FillBuffer - Failed: Server returned nothing (no headers, no data)(52)
2019-05-05 17:06:31.542 T:1410310880   ERROR: CCurlFile::Open failed with code 0 for http://chinachu:10712/api/rules.json:
2019-05-05 17:06:31.543 T:1410310880   ERROR: Open - failed to open source <http://chinachu:10712/api/rules.json>
2019-05-05 17:06:31.543 T:1410310880   ERROR: AddOnLog: Harekaze (Chinachu PVR client): [rules.json] Request failed
2019-05-05 17:06:31.543 T:1410310880   ERROR: GetTimers: Add-on 'Chinachu:http://chinachu:10712/' returned an error: server error
2019-05-05 17:06:31.543 T:1410310880   ERROR: GetTimers: PVR client 'Chinachu:http://chinachu:10712/' returned an error: server error
2019-05-05 17:06:32.595 T:1410310880   ERROR: CCurlFile::FillBuffer - Failed: Server returned nothing (no headers, no data)(52)
2019-05-05 17:06:32.595 T:1410310880   ERROR: CCurlFile::Open failed with code 0 for http://chinachu:10712/api/recorded.json:
2019-05-05 17:06:32.596 T:1410310880   ERROR: Open - failed to open source <http://chinachu:10712/api/recorded.json>
2019-05-05 17:06:32.596 T:1410310880   ERROR: AddOnLog: Harekaze (Chinachu PVR client): [recorded.json] Request failed
2019-05-05 17:06:32.596 T:1410310880   ERROR: GetRecordings: Add-on 'Chinachu:http://chinachu:10712/' returned an error: server error
2019-05-05 17:06:32.596 T:1410310880   ERROR: GetRecordings: PVR client 'Chinachu:http://chinachu:10712/' returned an error: server error
2019-05-05 17:06:32.598 T:1410310880  NOTICE: PVR Manager: Started
2019-05-05 17:06:32.603 T:1418703584  NOTICE: EPG thread started
2019-05-05 17:06:33.696 T:1452274400   ERROR: CCurlFile::FillBuffer - Failed: Server returned nothing (no headers, no data)(52)
2019-05-05 17:06:33.696 T:1452274400   ERROR: CCurlFile::Open failed with code 0 for http://chinachu:10712/api/storage.json:
2019-05-05 17:06:33.696 T:1452274400   ERROR: Open - failed to open source <http://chinachu:10712/api/storage.json>
2019-05-05 17:06:33.697 T:1452274400   ERROR: AddOnLog: Harekaze (Chinachu PVR client): [storage.json] Request failed
2019-05-05 17:06:33.697 T:1452274400   ERROR: GetDriveSpace: Add-on 'Chinachu:http://chinachu:10712/' returned an error: server error
5ym commented 5 years ago

こちら以下確認いただけますでしょうか chinachuというホストネームを使用していますがこちらはkodiが動いているホストで正常に解決できていますでしょうか。 chinachuのデフォルトポートは10772ですがこちらは変更されているということでしょうか。

orumin commented 5 years ago

ホスト名とポート番号は適当に置換したものなので特に意味はないです。 実際に使用しログに出力されてた URL で正しくアクセスできることは確認しています。

5ym commented 5 years ago

初歩的なところで申し訳ありません確認ありがとうございます。 こちらでもkodi18で検証したところ同じログがでました当方ubuntuです。 kodi関係のissueを追って見るとどうやらプラグインの実装の問題の可能性が高そうです。 お力になれず申し訳ありません。

mzyy94 commented 5 years ago

調査します 🌊

ashimokawa commented 5 years ago

今日、Libreelec 9.0.1(Kodi 18.1)を9.0.2(Kodi 18.2)にアップデートしてから、同じ問題があります。

ashimokawa commented 5 years ago

これをrevertすれば、プラグインはまた使えるようになります。 https://github.com/xbmc/xbmc/commit/8839957437f2c1557c5810aff2af820e50826370

多分必要じゃないけど、念の為にこれもrevertしました。 https://github.com/xbmc/xbmc/commit/6285fb4b074ba93e90a772a7fdfa3a3801625321

まだ、詳しく調査してないけど、HTTP/2が関係している問題に見えます。Chinachuのせいかな。

mzyy94 commented 5 years ago

再現確認が難航しております。。

ashimokawa commented 5 years ago

確認しました。やっぱりこれだけをrevertしたら、大丈夫です。

https://github.com/xbmc/xbmc/commit/8839957437f2c1557c5810aff2af820e50826370

次、プラグインからchinachuのURL以外にリクエストしたら、どうなるか調べるつもりです。

ashimokawa commented 5 years ago

https://github.com/xbmc/xbmc/commit/8839957437f2c1557c5810aff2af820e50826370 が入っているkodiからchinachuのhttpサーバーへリクエストすると、エラーが発生します。他のhttpサーバー(LANのlighttpd)は大丈夫です。

ashimokawa@demo:~$ curl --http2 http://chinachu:20772
curl: (52) Empty reply from server

kodi.logの中に、全く同じエラーがあります。 ChinachuのHTTP/2サポートがおかしいのか、TLSなしのHTTP/2のサポートがありません。

mzyy94 commented 5 years ago

ChinachuのHTTP/2サポートがおかしい

curlの結果をみるに可能性としてありそうですね ただ、Issue descriptionにある

同じコードベースを Windows 上でビルドし,Windows の Kodi v18.1 で使用した際には問題なく動作した。

が気になるところです。

orumin commented 5 years ago

Windows で使用していた Kodi がもしかしたら https://github.com/xbmc/xbmc/commit/8839957437f2c1557c5810aff2af820e50826370 の commit 以前でビルドされたものだったかもしれません。

orumin commented 5 years ago

私が Windows で使用していたものは https://github.com/xbmc/xbmc/commit/8cfdc895f3 のようです。

mzyy94 commented 5 years ago

なるほど、、、なるほど、、、

ashimokawa commented 5 years ago

ビルドしたくない方はtinyproxyをつかて、問題を解決できる。 chinachuのホストで

apt install tinyproxy

/etc/tinyproxy/tinyproxy.confの内容は

User tinyproxy
Group tinyproxy
Port 8888
Timeout 600
DefaultErrorFile "/usr/share/tinyproxy/default.html"
StatFile "/usr/share/tinyproxy/stats.html"
LogFile "/var/log/tinyproxy/tinyproxy.log"
LogLevel Info
PidFile "/run/tinyproxy/tinyproxy.pid"
MaxClients 100
MinSpareServers 5
MaxSpareServers 20
StartServers 10
MaxRequestsPerChild 0
ViaProxyName "tinyproxy"
ReversePath "/" "http://localhost:20772"
ReverseOnly Yes

sudo /etc/init.d/tinyproxy restart

pvr.chinachuプラグイン設定でChinachuのポートを8888にしたら。。。。OKです。

kodi18.2のcurl<ー>nodejsのhttpはNGです。 kodi18.2のcurl<ー>tinyproxy<ー>nodejsのhttpはOKです。

ashimokawa commented 5 years ago
diff --git a/app-wui.js b/app-wui.js
index 51bd2ca..3407f12 100644
--- a/app-wui.js
+++ b/app-wui.js
@@ -805,6 +805,7 @@ function iosAddEventListner(io, eventName) {
 }

 function ioAddListener(server, isOpen) {
+       return;
        var io = socketio(server);

        io.on('connection', isOpen ? ioOpenServer : ioServer);

socket.ioとhttpが同じポートを使えば、「HTTP/1.1 Upgrade header」を送ったらだめです。 socket.ioとhttpお別のポートにしたらいいと思います。 とりあえず、上のパッチでChinachu WUIのsocket.ioサポートを無効にしました。

stu2005 commented 4 years ago

古いissueにコメントして申し訳ないのですが..... tinyproxyを使う方法でkodiから接続はできるものの、kodiのガイドから録画予約しようとしたときに下記のエラーが発生します。

2020-04-18 22:22:13.940 T:140122925160576   ERROR: AddOnLog: Harekaze (Chinachu PVR client): Failed to reserve new program: 374wgcke9z
2020-04-18 22:22:13.941 T:140122925160576   ERROR: AddTimer: Add-on 'Chinachu:http://ip:port' returned an error: server error

これは自分に限ったことでしょうか?