hry-naka / rec-radio

0 stars 0 forks source link

タイムフリーに対応する #2

Closed hry-naka closed 1 year ago

hry-naka commented 1 year ago

今のrec_radiko.pyに機能追加することを考えていたけど、なんとなく使い方が違いそうなので、別スクリプトにすることを含めて考える。

hry-naka commented 1 year ago

今の仕様は

usage: rec_radiko.py [-h] channel duration [outputdir] [Prefix name]

こんな感じだけど、タイムフリーを録音したいときって、番組を検索するところから始まるような気がする。

  1. 何らかのキーワードで番組表を検索して
  2. 録音した番組を指定して録音

radikoエリアフリー対応タイムフリー録音スクリプトの情報によると、最終的に録音するときには、urlが、

https://radiko.jp/v2/api/ts/playlist.m3u8?station_id=放送局ID&l=15&ft=番組開始日時&to=番組終了日時

になるとのことだが、「どの番組を録音したいか?」が決まれば、番組表の取得のAPIを使えば'station_id','ft','to'はわかるから、ユーザには”channel duration”を指定させる必要はない。

案1:それでもrec_radiko.pyに機能追加する

usage: rec_radiko.py [-h] channel duration [outputdir] [Prefix name] [-tf] [-k '文字列’]
-tf : はタイムフリーを指定するフラグ(あればタイムフリーだと思って、channel,duarationを無視するw)

案2:録音機能だけrec_radiko.pyにして、検索スクリプトは別に作る

usage: rec_radiko.py [-h] channel duration [outputdir] [Prefix name] [-tf prog_id]
-tf prog_idは番組APIで番組を一意(?)に識別するid(以下の検索スクリプトの出力からゲットできる)
channel,duarationを無視するのは案1と同じ

usage: find_radiko.py [-h] -k '文字列’
出力は、prog_idとstation_id、番組名、放送時刻、マッチした情報要素の全体(xmlタグ単位)

案3:録音機能も別のスクリプトにする

usage: rec_radiko_ft.py [-h] station_id  ft-datestring to-datestring [outputdir]  [Prefix name]

usage: find_radiko.py [-h] -k '文字列’
出力は、番組名、放送時刻(開始・終了)、マッチした情報要素の全体(xmlタグ単位)、

見た目の仕様だと、やはり案3だなぁ。 案3で実装しようとすると、認証用のコードがrec_radiko.pyにベタガキされているので、 これをクラスとして切り出す必要があるし、番組表API用のクラスもかなり整理が必要で、 実装コストが高そうな予感がしていたので、案1・案2を無理くりだした。 rec_radiko.pyは「いま放送している番組を録音する」のに対して、 タイムフリーを録音するってことは、「いつのどの番組を録音する」ってことだから、 使い方が全然違うので、やはり無理に一緒にするのはやめにする。

まずは、案3を想定しながら、mypkg配下のクラスのリファクタリングと認証用クラスの整備とかを 地道に進めよう。

hry-naka commented 1 year ago

【Python】ラジコの番組を検索するスクリプト によると、 searchのAPIがあるみたいなので、こちらを利用する方向で考える