kazuki0824 / recisdb-rs

recisdb-rs and b25-sys are more convenient Rust wrapper for libaribb25. recisdb can read both Unix character device-based and BonDriver-based TV sources.
GNU General Public License v3.0
74 stars 4 forks source link

チャンネルスキャン #38

Closed kazuki0824 closed 11 months ago

tsukumijima commented 1 year ago

個人的に欲しい仕様

TypeScript の型として表現するならこんな感じ。

interface ChannelInfo {
  channel_type: 'Terrestrial' | 'CATV' | 'BS' | 'CS';
  channel_number: string;
  tsid: number | null;
}

interface ScanningProgress {
  type: 'scanning';
  total: number;
  remains: number;
  channel: ChannelInfo;
}

interface ScanningResult {
  type: 'scanned';
  total: number;
  remains: number;
  available: boolean;
  channel: ChannelInfo;
}

interface ScanningCompleted {
  type: 'completed';
  available_channels: Array<ChannelInfo>;
}

// 出力可能な全てのメッセージのタイプ
type ScanOutput = ScanningProgress | ScanningResult | ScanningCompleted;

課題

tsukumijima commented 1 year ago

メモ

TSID の抽出処理は以前私が GPT-4 に作らせた https://github.com/tsukumijima/ts-nhk-canceler/blob/master/ts-nhk-canceler.cpp が参考になるかも?(私自身は処理内容をよく理解できていないが…)

log クレートによるログは現状 stderr に出力されているので、チャンネルスキャンの進捗を示す JSONL を stdout に出力すれば、外部プログラムで JSONL を読み取る際に通常ログのフィルタリングが不要になり、よさそう。