scimmia9286
scimmia9286
### 環境 * Version of EPGStation: `2.6.16` * Version of Mirakurun: `3.9.0-beta.24` * Version of Node: `16.13.0` * Version of NPM: `8.1.0` * OS: Ubuntu 20.04.2 (docker) * Architecture: x64...
### 環境 * Version of EPGStation: `2.6.11` * Version of Mirakurun: `3.9.0-beta.7` * Version of Node: `16.8.0` * Version of NPM: `7.21.0` * OS: Ubuntu 20.04.1 * Architecture: x64 ###...
### 環境 * Version of EPGStation: `2.6.11` * Version of Mirakurun: `3.9.0-beta.7` * Version of Node: `16.8.0` * Version of NPM: `7.21.0` * OS: Ubuntu 20.04.1 * Architecture: x64 ###...
メモリーリーク?
### 環境 * Version of EPGStation: `2.6.10` * Version of Mirakurun: `3.8.0` * Version of Node: `v16.6.2` * Version of NPM: `7.20.3` * OS: `Ubuntu 20.04.1` * Architecture: x64 *...
## DRCSデータのパース不具合 DRCSデータの内容によっては不具合が生じるケースがありました。 "ARIB STD-B24 Table D-1 DRCS structure syntax" の値を例に正常動作するケース、不具合が生じるケースを記載します。 CharacerCodeが0x4121から始まり、抜けなく0x4122, 0x4123, ... のように並んでいるケースでは正常に動作します。 正常ケース1 ` { "NumberOfCode":1, "Codes": [ {"CharacterCode":0x4121, ...} ] } ` 正常ケース2 ` { "NumberOfCode":2,...
## バグの内容 番組スケジュールが変更になった際に放送時間の重なりをチェックして番組を削除しているが、必要な番組まで削除されてしまう ## バグの原因 例えば、スポーツ番組などで放送時間が延長された場合、後続番組との重なりは避けられないので、"Forrowing"の番組も含めて削除される場合がある 以降受信するEIT[p/f]やEIT[schedle]で番組情報が復活されることが望まれるが、重なりが生じて削除された番組はProgramクラスが保持している情報にすでに存在しないため、以下に示すコードの229行目の"set"が失敗する(例外としてはEIT[schedule]からEIT[p/f]へテープルが移行した番組はこの限りではない) https://github.com/Chinachu/Mirakurun/blob/31b22cc83cb2166c117a2fba8f2499d467750dc8/src/Mirakurun/EPG.ts#L217-L236 また、Following番組の開始が早まった場合、EIT[p]よりもEIT[f]を先に受信してしまうと、Following番組でPresent番組が削除されてしまう https://github.com/Chinachu/Mirakurun/blob/31b22cc83cb2166c117a2fba8f2499d467750dc8/src/Mirakurun/Program.ts#L187-L193 ## 改善内容 - Programオブジェクトに"Present","Following"を識別できるプロパティを追加し、"Following"と"Present"を識別することで"Present"が削除されない様にする - 番組の延長などにより一旦削除されても直後に受信するEITにより完全なプログラム情報を提供できるよう、削除した番組情報を一時保管するバッファを用意し、削除済みの番組に対して"add"が呼ばれないで再び"set"メソッドが呼ばれたら一時保管バッファに保管していた情報を戻して処理する - 放送番組の変更(例えばスポーツ番組が中止になり、他の番組に差し替えなど)が発生じた際の削除では、一時保管バッファに溜まったままになるので、gcを実行するタイミングで一時保管バッファから削除する
## 概要(Summary) preprec前(timerがfireする前)の予約をキャンセルしたケースでは、this.recordingIndex[]からRecorderModelが削除されない RecordingManageModelのcancelメソッドであらかじめリストから削除するよう修正
## 概要(Summary) 番組の放送時刻変更および番組の組み替えに伴う番組削除への対応を強化 ## 内容 ### epgUpdater - 番組編成変更に迅速に対応するため、epgUpdateIntervalTime間隔のキューのフラッシュに追加して、受信した番組がすでに開始している(※放送終了の変更)か開始時刻が5分以内の番組がキューにあれば迅速にdbへフラッシュする - キューをフラッシュする必要がなかった場合は"updated"イベントを通知せず、スケジュールの無駄な更新を避ける - 番組が削除された際の処理に問題があったため改善した。このことで、削除された番組が番組表に存在し続けて、正しい番組が裏に隠れて見えなくなる事象が解消する ### recording - 録画中の場合、スケジュール更新によるキャンセルは行わない。これは、EPGstationの番組情報の更新が間に合わなかたことを示す事象であるから。録画を継続しても影響はない - preprec(スタンバイ中)の番組の開始時刻変更を検知した場合はprecrecをキャンセルする。この際、10分ほどの通信タイムアウトを待たないでmirakurunとの通信を即座に閉じるためabortSignalを使用 - 録画対象の直前の番組が終了時刻延長になった場合、mirakurunから番組削除電文が届く場合がる。これにより録画が失敗しずらい様対処した(当該番組が存在しない状態でスケジュール更新すると警告は出力されるがレコードは削除されない様である。mirakurunから新しい当該番組情報が届けばスケジュールは正常に戻る) ※この事象をさらに改善するためにmirakurunへプルリクエストを行ったが取り込まれるかは現時点で不明