[[diary/Kojima]]

・録音スクリプトのpython版

しばらくシンプルなシェルスクリプトでやってたけど、時刻の指定方法をもう少し柔軟にしたくなったので、
時間を自前でパースするようにpythonで書き直してみた。時刻指定は、日付と時刻を組み合わせた

 % radiru_rec.py fm 2011/11/09 19:20 2011/11/09 21:00

が基本形で、日付を省略すれば「今日」と見なす。また、深夜放送でよく使う 26:00(=翌日の 2:00)みたいな指定も可能にした。
録音したい時間が決まっている場合は、終了時刻の代りに

 % radiru_rec.py r2 18:00 15m

みたいな指定も可能(15m = 15分間)時間指定の書式は 1h30m とか 60m のように、"h"か"m"を付けること。

実際の録音は従来同様、~/radiru_scripts/ にPIDをファイル名とするシェルスクリプトを生成してそれを at コマンドに登録することで指定時刻に実行する。
生成されるスクリプトは1つで、mplayer と lame を起動後、指定時間だけ sleep してから、mplayer を quit して、FIFOと自身を削除して終了する。

録音したデータはMP3形式で ~/MP3/ に fm-2011-11-09-10-30.mp3 のようにチャンネルと開始時刻のファイル名になる。

時間の計算はpythonのdatetimeモジュールを使っているので、日付をまたぐような場合も大丈夫だと思うのだけど、
境界条件とかはあまりきちんとテストしていないので見落としがあるかも知れない。

ちと長くなったので、画面には貼りつけずに、添付にしておくので、興味ある人は試してみてください。
- ここ一週間ほどあれこれ録音して聞いてるけど、ラジオ第二がずいぶん面白いことに気づいた。一つ一つの番組が短いせいもあるけど、録音したファイル数で見るとFMよりも多いくらいになってるや。 -- [[kojima]] &new{2011-11-09 (水) 23:43:05};
- ラジオって、元々「聞き流す」的な使い方しかしていないのだけど、タイムシフトして普段聞くことのない番組を聞いてみるといろいろ新しい発見があったり。もっとも、個人的に面白いと感じるのが寺田寅彦の随筆の朗読だったり、「漢詩を読む」だったりするから、ひどく偏ってる気はするが、この手の番組をちゃんと録音するためには帯番組の指定方法を考える必要がありそうだなぁ。 -- [[kojima]] &new{2011-11-09 (水) 23:48:59};
- 某所の連載で書いてて思い出したので、引数として -t  タイトル を受けつけるようにしてみたバージョンを radiru_rec2.py として置いときます。一応、NHKの番組表のタイトルをcut&pasteしても大丈夫な感じ。

 $ ls ~/MP3/
 Japan & World Update-2011-12-26-14-00.mp3
 NHK高校講座 音楽1「世界の音楽(1)〜諸民族の声」-2011-12-26-00-00.mp3
 こころをよむ「江戸から考える日本人の心」(12)-2011-12-25-13-20.mp3
 こころをよむ「江戸から考える日本人の心」(13)-2011-12-25-06-45.mp3
 カルチャーラジオ NHKラジオアーカイブス「谷崎潤一郎」(1)-2011-12-26-20-30.mp3
 クラシックカフェ-2011-12-20-14-00.mp3
 ショパン 前奏曲集-2011-12-17-06-00.mp3
 バイロイト音楽祭2011「歌劇“タンホイザー”」-2011-12-26-21-00.mp3

英数字の表記は気になるけど、NHKの番組表では音声読み上げ機能の関係か、全部「全角」文字で書いてある。
まぁ見栄えはイマイチだけど、空白や()をエスケープしないですむから、それなりに便利かも知れない。 -- [[kojima]] &new{2011-12-26 (月) 23:25:07};
- この年末にバイロイト音楽祭とかの長い番組を録っていると、3時間23分、186MBくらいで録音が異常終了する現象が発生した。ざっと調べた限り、どうやらこれはlameの問題っぽくて、3時間以上録音する場合はtwolameを使ってMP2にするか、PCMで出力しておいて後でMP3にするような対策が必要そう。 -- [[kojima]] &new{2012-01-01 (日) 15:15:30};
- PCMで出力したファイルをcatでlameに流し込んでencodeさせると問題なく最後まで行くので、イマイチ問題箇所が分からない。。 -- [[kojima]] &new{2012-01-01 (日) 15:31:25};
- 記録、再生うまくいきました!改良版でタイトル指定がないとエラー終了します。 -- [[きゅうる村]] &new{2012-01-02 (月) 10:04:35};
- おっと失礼、手元でも気づいて直してました。こんなパッチになるかな?

 $ diff -u radiru_rec2.py{.old,}
 --- radiru_rec2.py.old  2012-01-02 10:39:05.149832639 +0900
 +++ radiru_rec2.py      2012-01-02 10:31:59.609598175 +0900
 @@ -96,7 +96,10 @@
          usage()
          sys.exit(1)
  
 -    o, title = opts.pop(0)
 +    if len(opts) > 0:
 +        o, title = opts.pop(0)
 +    else:
 +        title = ''
      channel = argvs.pop(0)
      start_flag = 0
      duration = 0

タイトルを指定しなければチャンネル名+時刻のファイルになるはず。 -- [[kojima]] &new{2012-01-02 (月) 10:54:56};
- さっそく、ありがとうございます。Linux生活がかなり楽しくなりました。 -- [[きゅうる村]] &new{2012-01-02 (月) 11:35:23};
- lameの3.99.3が出ていたので更新してみたけど、やはり3時間23分、186MBで止まってしまうな。 -- [[kojima]] &new{2012-01-02 (月) 20:02:01};
- wassr方面で、Tomiokaさんから、lameで生のPCMを受けるには -r オプションが必要では、との指摘をいただいて、lameを-r付きで起動したら、186MBで止まる現象が解決したので、新しいバージョン(radiru_rec3.py)を添付。後はデータを整理する仕組みを考えないといけないなぁ。。 -- [[kojima]] &new{2012-01-11 (水) 23:17:04};
- とても便利でLinuxが更に楽しくなりました。 -- [[ぎみっく]] &new{2012-09-09 (日) 22:05:50};
- 基本機能は変らんけど、リピート予約機能を追加したバージョンもあります > http://plamo.linet.gr.jp/wiki/index.php?diary%2FKojima%2F2012-08-29 -- [[kojima]] &new{2012-09-10 (月) 13:10:26};
- リピート機能があるのしらずrec3の使ってました。rec2版便利です。15m単位録音はないんですね。 -- [[ぎみっく]] &new{2012-09-13 (木) 06:56:48};
- リピート機能があるのしらずrec3の使ってました。rec2版便利です。15m単位録音はないんですね。 -- [[ぎみっく]] &new{2012-09-13 (木) 07:48:05};
- リピート機能があるのしらずrec3の使ってました。rec2版便利です。15m単位録音はないんですね。 -- [[ぎみっく]] &new{2012-09-13 (木) 07:48:12};
- 15m録音できてました。連続してすみません。 -- [[ぎみっく]] &new{2012-09-13 (木) 07:48:36};

#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS