Closed nanamaki closed 6 months ago
報告ありがとうございます。
BS/CS環境を手放してしまい検証できないのですが、
mirakc と Mirakurun で relatedItems
の挙動が違うんですかね...
根本的には shared になっているイベントグループの予約が重複しないように、録画ソフト側で対応が必要です。
とあり、当時挙動を確認した限りでは Mirakurun においては以下の判定で問題ありませんでしたが、 mirakc では挙動が異なるのかもしれません。 https://github.com/l3tnun/EPGStation/blob/fd8f3c87d6d49ada9066e2acbeb65c26d27ec0d2/src/model/epgUpdater/EPGUpdateManageModel.ts#L125-L153
fix-681 ブランチにてご報告していただいた json の状況の場合おいて、メインの番組情報として取り扱うようにする修正を入れてみました。 私の環境で確認ができないため、しばらく動作確認していただけると助かります。 問題が解決していれば master へ反映したいと思います。
該当ブランチでビルドして起動してみました。 少なくとも本日5/13 12:00までの番組情報で、報告した番組は番組表に乗り、それ以外に入れ替え前後で減ったor増えた番組情報もない感じです。
5/15 にBS日テレで同じように番組表に乗らなかった番組があり、これが重複なく録画できるか、ほかの録画にも重複がないか、様子を見てみたいと思います。
早急な確認ありがとうございます。
5/15 にBS日テレで同じように番組表に乗らなかった番組があり、これが重複なく録画できるか、ほかの録画にも重複がないか、様子を見てみたいと思います。
お手数ですがよろしくお願いします。
5/15 にBS日テレで同じように番組表に乗らなかった番組があり、これが重複なく録画できるか、ほかの録画にも重複がないか、様子を見てみたいと思います。
18:00 からの野球中継でしたが、正常録画できました。 他の入れ替え前では番組表に乗らなかったものも全て乗ってます。 この期間に地上波16/BS2/CS1番組を録画しましたが、重複なく正常録画できました。 恐らく問題ないと思います。
よろしくお願いします。
確認ありがとうございました。助かりました。 問題なさそうですので、マージして v2.9.1 としてリリースいたします。
リリース完了したので閉じます。
ご対応ありがとうございました。
mirakcの実装に誤りがあれば修正しようと思い,mirakc/Mirakurun/EPGStationの実装を確認しました.
実際に現象を確認したわけではないので,確証はありませんが,恐らくMirakurunは同一event_idのデータをマージするためだと思います. https://github.com/Chinachu/Mirakurun/blob/31b22cc83cb2166c117a2fba8f2499d467750dc8/src/Mirakurun/EPG.ts#L219
ここで既にデータがあれば,既存データを更新しているのが分かります.mirakcではこのような情報のマージは行っていません.単純に上書きしています. https://github.com/mirakc/mirakc/blob/5d929c2f6ba85950bdfd6277f565e0ef09316a7a/mirakc-core/src/epg/mod.rs#L1141
また,Mirakurunは同一network_idのEPG情報をまとめて集めます.そのため,BSなどではEPG情報の収集に使用したTSストリームのサービスに依存し,他サービスのEPG情報の一部が欠落します(ExtendedEventDescriptor
など).mirakcはサービスごとにEPG情報を集めるため,このような欠落は生じませんが,EPG情報収集にかかる時間がMirakurunよりも長くなります.
私は放送局が使用している運用規定の詳細を把握していないため,どのような実装が正しいのか判断する材料を持っていません.もしこのように実装するのが正しいという資料や指摘があるなら,それに従いmirakcを修正します.
@masnagam わざわざ調査ありがとうございます。EPGStation側の実装が雑である事が原因ですので、mirakcはそのままで問題ないかと思います。
環境
2.9.0
3.1.11
Issue
mirakcで確実に番組情報がとれているもののうち、延長情報の入った一部の番組が表示されないことがありました。 event-31233.json 添付ファイルは、mirakcのAPI(GET /api/programs)から取得した番組情報のうち、EPGStationの番組表に取り込めなかった番組のうちの1つのJSONデータになります。 直前まで利用していたMirakurunでも、.relatedItems[] .networkId の要素が無いくらいで殆ど同じものでしたので、恐らくMirakurunを利用する環境でもこの番組は取り込めていないと思われます。
.relatedItems[] 要素があって .relatedItems[].type = 'relay' なイベントだけの番組はメインの番組情報として取り込まれないことはソースから何となく読み取れたのですが、どのようなロジックにすれば正しく番組を取り込めるのかいまいち綺麗なイメージが分からなかったので、取り急ぎ事象だけご報告します。