rfriendsでラジオ録音

ラジコ、らじるらじる、タイムフリーのラジオ番組を録音

rfriendsの状況

f:id:rfriends:20170512091958j:plain  rfriends (Windows, Linux, Raspberry Pi OS,OSX,termux対応)

rfriendsというラジコやらじるらじるを録音するソフトを作っています。タイムフリー、エリアフリー、聞き逃し、ゴガクにも対応。


 このブログでは詳細な技術情報を発信します。

WordPress ダウンロードマニュアルはWPにまとめました

上記が重いときはこちら、ダウンロード(非常用)
twitter リリース情報、TIPS等を発信します
掲示板 質問、要望などはこちらにおねがいします

ラジオ録音サーバには簡単、低価格,低消費電力,24H稼働のRaspberryPi ZeroWをお勧めします。

なお、この上のリンクは私のamazonアソシエイト広告です。


Javascriptで動的に出力されるhtmlを取得する方法

 今回AuDeeのDownloaderを作成するにあたり困ったことは、Javascriptでページを動的に作成していることでした。

f:id:rfriends:20210911054642p:plain

 このスクリーンショットの例ではたとえば3というところをクリックすると3ページ目が表示されます。
 ところが、これをwgetで取得してもページ1しか取得できません。

https://audee.jp/program/show/100000165(ページ1)
https://audee.jp/program/show/100000165#page3(ページ3)

 整理すると,ページ3を表示させた状態で以下を実行すると、

1.ブラウザの「名前を付けて保存」(ページ3)
2.ブラウザの「ソースを表示」(ページ1)

 また、wgetを実行すると、

3.wget https://audee.jp/program/show/100000165(ページ1)
4.wget https://audee.jp/program/show/100000165#page3(ページ1)

となります。

 いろいろと検索をした結果、これを解決するにはヘッドレスブラウザを使えばいいということがわかりました。
ここではchromeのヘッドレスモードを使った例を示します。(windowsでの実行例)

cd C:\Program Files\Google\Chrome\Application
chrome --headless --disable-gpu --dump-dom https://audee.jp/program/show/100000165#page3  > c:\temp\test3.html

test3.htmlにページ3のhtmlが保存されていました。
めでたしめでたし。


(追記)
なお、AuDeeのDownloader Ver.1.00ではこの手法の採用は見送っています。
理由はユーザ環境に必ずChromeがあるわけではないので。


(参考)
ヘッドレスブラウザとは何か?
https://www.seleqt.net/programming/six-headless-browsers/
ヘッドレス Chrome ことはじめ
https://developers.google.com/web/updates/2017/04/headless-chrome

 

 

AuDeeって知ってますか?

AuDee(オーディー)とは、TOKYO FMほか全国38のFM局のオーディオコンテンツプラットフォームで、スマートフォンアプリとウェブサイトの両方でサービスを展開。人気アーティストのトークから、ラジオドラマ、ドキュメンタリーまで、600を超える配信オリジナルコンテンツを提供している。

 -------------------------------------------------------
 AuDee Downloader Ver. 1.00 by mapi

 AuDeeの番組一覧(https://audee.jp/program/list)を参考に
 番組名を検索します(番組数:765)

 キーワードを入力してください(end=ret) : 誰か

 キーワード : "誰か"

 1. 山崎怜奈の誰かに話したかったこと。

 番組を選択(1-1): 1

 番組名 : 山崎怜奈の誰かに話したかったこと。
 url    : https://audee.jp/program/show/51824

 1. 山崎怜奈の誰かに話したかったこと。
 2. 山崎怜奈
 3. 乃木坂46
 4. TOKYO FM
 5. アイドル
 6. だれはなBLOG
 7. ダレハナ

 通常は番組名と同一のものを選択

 tagidを選択(1-7): 1

 tagid : 47030  name : 山崎怜奈の誰かに話したかったこと。
 プログラム検索中.....
 プログラム数 : 48

 音声データをダウンロードします
 配信数はプログラム数より少ない場合があります
 ダウロード先 : *****\rfriends2\usr\AuDee\山崎怜奈の誰かに話したかったこと。\

 実行しますか? (y/N) : y

 1 20201001_初回放送後、れなちのお父さんから届いていたLINEの中身を.mp3
 2 20201008_今週の生放送中に実は起きていた恥ずかしかったこと暴露!.mp3
 3 20201015_伯山さんゲストの本日、午前2時から起きてるれなち!何して.mp3
 4 20201022_今週を終えたれなちの本音トーク!初めてのレーティング週.mp3
 5 20201029_番組が始まって1か月を終えたれなちの今の心境!伊集院光さ.mp3
(省略) 
 46 20210819_#あのラジオがすごい-vol-19『東京03の好きにさせるかッ!(NHK.mp3
 47 20210826_#ダレハナ裏トーク弥生時代派の山崎怜奈です~(2021年8月2.mp3
 48 20210902_#あのラジオがすごい-vol-20『オードリーのオールナイトニッ.mp3
 ダウンロード終了

 Press ret key

番組配送機能について(改訂版)

番組配送機能の仕様です。 従来の機能を変更すると各所に影響が出るので追加機能としました。 また、従来の転送機能と重複するところもありますが、使い分けてください。

1.機能

各番組録音後、番組配送機能に従って、指定ディレクトリにコピー/移動する。

2.仕様

[7-6]番組配送(delivery.dat)に定義する。

:dlvy

1)機能のON/OFF
:dlvy
状態

状態 on:実行、off:停止

2)ユーザ指定

番組配送はユーザ単位で行うため、ユーザを指定する。

:dlvy_users
ユーザ1
ユーザ2
...
  • ユーザ  処理をわけるためのユーザ
3)番組配送先ディレクトリ指定

番組を配送するディレクトリを指定する。 ディレクトリは存在する必要がある。

:dlvy_ユーザ_タイプ_dir
ディレクト
4)配送番組指定

どの番組をどう配送するか指定する。

:dlvy_ユーザ_タイプ_コマンド
キーワード
  • ユーザ  dlvy_usersで設定したユーザ
  • タイプ  radiko, radiru, timefree, radiru_vod, radiru_gogaku
  • コマンド copy, copyf, move, movef

 copy 番組をコピーする。配送先に同一番組がある場合はコピーしない。
 copyf 番組をコピーする。配送先に同一番組があってもコピーする。
 move 番組を移動する。 配送先に同一番組がある場合は移動しない。
 movef 番組を移動する。 配送先に同一番組があっても移動する。

  • キーワード 指定する番組のキーワード キーワードは予約の時と同一形式。

 特別のキーワードとして、*を指定するとすべても番組にヒットする。
 *はdelivery用に新たに追加したもので、予約では使用できません。

3.サンプル

1)radiko番組の局ごとの振り分け例を記述します。

1.TBSの番組 2.LFRの番組 3.それ以外

:dlvy
on

:dlvy_users
user1
user2
user3
#
:dlvy_user1_radiko_dir
/home/test/smbdir/TBS/
#
:dlvy_user1_radiko_move
TBS
#
:dlvy_user2_radiko_dir
/home/test/smbdir/LFR/
#
:dlvy_user2_radiko_move
LFR
#
:dlvy_user3_radiko_dir
/home/test/smbdir/other/
#
:dlvy_user3_radiko_move
*
2)家族用番組の振り分け例を記述します。

1.お父さん 2.おかあさん 3.自分

:dlvy
on

:dlvy_users
father
mother
me
#
:dlvy_father_radiko_dir
/home/test/smbdir/father/
:dlvy_father_radiko_copy
LFR,オールナイト,オードリー
#
:dlvy_father_radiru_dir
/home/test/smbdir/father/
:dlvy_father_radiru_move
深夜便
#
:dlvy_mother_radiko_dir
/home/test/smbdir/mother/
:dlvy_mother_radiko_copy
LFR,オールナイト,オードリー
:dlvy_mother_radiko_move
人生相談
#
:dlvy_me_radiko_dir
/home/test/smbdir/myself/
:dlvy_me_radiko_move
*
#
:dlvy_me_radiru_dir
/home/test/smbdir/myself/
:dlvy_me_radikoru_move
*
#

4.注意事項

1)番組予約と配送機能
  • 番組予約は、キーワードにマッチした番組を予約するが、この配送機能は録音した番組が配送する番組かどうかを検索する。  
  • 現在の録音データに関して処理するので、過去の録音データが処理されることはない。 例えば、timefree処理で、「この番組は録音済みです」となったものは処理しない。
2)移動先のディレクト
  • 移動先のディレクトリが存在しない場合は何もしない。
  • usersの記述の順番に処理を行っていくため、move設定の記述には注意が必要。 
  • また、転送処理の後に実行するので、転送処理で移動を指定していると処理が無効になる。
3)ファイル名の検索について
  • 通常のキーワード処理より検索データが少ないので同一の検索結果にはならない。
  • 基本的に、チャンネルとタイトルファイル名の検索と考えたほうがいい。
  • 番組表データは予約時にしか持っていない。
  • 録音時はタグ用のデータしか持っていない。

5.その他

  • Linux/macユーザの場合は、ユーザを分けてrfriendsを実行する方法もあります。
  • 掲示板で質問、バグ報告等をお願いします。

以上

rfriends2.2.7.4 -> 2.8.0-a21 変更点まとめ

1. 管理

・[1-2]録音データ管理に変更し、削除機能追加
・[1-5]重複ファイル処理
6つのパターンで重複ファイルを検出し、別ディレクトリに移動します。

2. ラジコ

3. ラジコタイムフリー

4. らじる

・[4-8]エリア変更機能追加

5. らじる聞き逃し

6. らじるゴガク

7. キーワード

・メニュー構成変更
ラジコ、らじるをまとめました。
キーワードの保存/復元/初期化をまとめました。
・[7-1] 放送局指定に:radiru_ng_stationを追加。
・[7-5]重複番組キーワードに指定モードを追加、例外モードを削除。
・[7-5]重複番組設定セクション名を変更。
:double_program_***** (radiko,radiru,...)
・[7-6]保存/復元/初期化
現在のキーワード設定値を保存/復元。
あらかじめ提供する設定値の復元も可能。

 

8. 設定

・[8-1]パラメータ設定にエスケープシーケンス。
端末名に色がつけられます。
・[8-1-3]パラメータチェックを改良。
パラメータファイルを更新する機能を追加しました。
これは初期化とは異なり、
最新のパラメータファイルにしたうえで、変更点を書き換えます。
元のファイルは.bakで残しています。
・[8-1-5]編集(標準エディタ)
エディタ変更失敗時のため。
・[8-4]定数設定追加。
コールサインデータ
・[8-5]メール設定変更。
テスト送信(LINE-Notify)を分離
・[8-6]録音ディレクトリ設定。
usrdir設定から名称変更。
・[8-8]保存/復元/初期化
現在のキーワード設定値の保存/復元/初期化をまとめました。
あらかじめ提供する設定値の復元も可能。
保存先はusrdir/kw_storage。

 

9. rfriends2について

・[9-3]システムリセット追加
各種設定を初期インストール状態にします。

 

その他

・メニュー整理。
一部の機能を移動、再編しました。
・インストールディレクトリの変更に対応
・実行中プログラムに番組名を表示。
コールサイン変換機能追加。
・プレミアムのログイン関係の大幅見直しを行いました。
premium_autologin は省略時"y"に変更。

 

以上

ubuntuでrfriendsを2つ実行する。(別解)

以下のような記事を書きましたが、今回はその別解。

ubuntuでrfriendsを2つ実行する。
https://rfriends.hatenablog.com/entry/2021/07/08/205928


多分、というか絶対に今回のやり方のほうがスマートでわかりやすいと思います。

前提
・user
・usrdir = "/home/user/usr/"
で、rfriendsが正常動作している。

今回
・user2
・usrdir = "/home/user2/usr/"
を追加する。


1.ユーザ登録

$ sudo adduser user2
$ sudo gpasswd -a user2 sudo


2.ディレクトリ作成

user2でログインし、

$ cd
$ mkdir usr


3.rfriendsのインストール

php,ffmeg等のアプリは1つ目ですでにインストール済なので不要です。

$ cd
$ wget http://rfriends.s1009.xrea.com/files/rfriends2_latest_script.zip
$ unzip rfriends2_latest_script.zip


4.rfriendsの起動

$ cd
$ cd rfriends2
$ sh rfriends2.sh


5.設定

usrdirの設定やデイリー処理等、1つ目のユーザを気にすることなく設定できます。


6.sambaの設定

$ sudo vi /etc/samba/smb.conf

[smbdir2]
comment = rfriends user2
path = /home/user2/usr
read only = no
guest ok = no
force user = user2


$ sudo service smbd restart


7.その他

いかがでしたか?
このほうが簡単ですよね。


以上

 

ubuntuでrfriendsを2つ実行する。

2つ実行する用途としては、以下のとおり。

  • 安定板と、開発版を実行する。(今回はこの例)
  • よく聞く番組とその他で分ける。

本当は実行マシンを分けたほうがいい。Raspberry Pi Zeroはパワー不足のため非推奨。 実行は自己責任で。

すでに、rfriendsが動作している場合は、1.は飛ばして、2.から実行する。

 

目次

1.インストール

今回はUbuntu 18.04を使用。 ホームディレクトリを /home/user/ として記述している。 1つ目のrfriendsのディレクトリを /home/user/rfriends2 とする。

1.1 rfriendsをインストールする。

shスクリプトをダウンロードし、実行する。

$ cd
$ rm ./rfriends2_ubuntu.sh
$ wget http://rfriends.s1009.xrea.com/files/rfriends2_ubuntu.sh
$ sh rfriends2_ubuntu.sh

以上でホームディレクトリのrfriends2にインストールされる。 インストール方法の詳細はこちら http://ceres.s501.xrea.com/wp_rfriends/index.php/install-linux/

1.2 録音データディレクトリを作成する。

$ cd
$ mkdir usr

1.3 rfriendsを起動する。

$ cd
$ cd rfriends2
$ sh rfriends2.sh

1.4 rfriendsを最新にする。

[9-1-1]システム更新 で安定版(2.7.4.6 以降)に更新する。

1.5 パラメータ設定

1)[8-1-3]パラメータ設定の初期化 2)[8-1-2]パラメータ設定の編集

rfriends_name = 'rfriends'
at_que_no = c
timefree_radiko_del = 1
radiru_vod_radiru_del = 1

1.6 録音ディレクトリの設定

先ほど作成したディレクトリを指定する。 [8-6-2]usrdir設定

usrdir = "/home/user/usr/"

1.7 録音自動化の設定

(1 -> 2 -> 3)の順で行う。 [8-3]録音自動化設定

BASE_DIR=/home/user/rfriends2
# m h dom mon dow command
#
10 05 * * * sh $BASE_DIR/script/ex_rfriends.sh
10 17 * * * sh $BASE_DIR/script/ex_rfriends.sh

1.8 rfriendsを終了する。

以上で1つ目の設定が完了したので、一旦rfriendsを終了する。

2.rfriendsの2つ目を作成する。

先ほどインストールしたrfriendsをもとに2つ目のインストールを行う。 2つ目のrfriendsのディレクトリを

/home/user/rfriends2_dev

とする。

2.1 rfriednsをコピーする。

以下のような操作を行い、1つ目のコピーを作成する。

$ cd
$ cp -r rfriends2 rfriends2_dev

2.2 録音データディレクトリを作成する。

$ cd
$ mkdir usr_dev

2.3 rfriendsを起動する。

$ cd
$ cd rfriends2_dev
$ sh rfriends2.sh

2.4 rfriendsを最新にする。

{9-1-2]システム更新 開発版(2.7.5-a21以降)に更新する。

2.5 初期化

[9-1-0]設定初期化 各種設定が初期状態になる。

2.6 パラメータ設定

[8-1-2]パラメータ設定の編集 特にat_que_noの設定が重要。(1つ目(c)と違う値、通常2つ目はe)

rfriends_name = 'rfriends_dev'
at_que_no = e
timefree_radiko_del = 1
radiru_vod_radiru_del = 1

2.7 録音ディレクトリの設定

先ほど作成したディレクトリを指定する。 1つ目のfriendsでtmpdirを設定している場合は、必ず違うディレクトリにするか、空欄にすること。 [8-6-2]usrdir設定

usrdir = "/home/user/usr_dev/"
tmpdir = ""

2.8 録音自動化設定

1)[8-3-1]録音自動化設定の読込 2)[8-3-2]録音自動化設定の編集 以下のように設定する。 負荷分散のため、1つ目とは実行時間をずらしている。

BASE_DIR=/home/user/rfriends2
BASE_DIR_dev=/home/user/rfriends2-dev
#
10 05 * * * sh $BASE_DIR/script/ex_rfriends.sh
10 17 * * * sh $BASE_DIR/script/ex_rfriends.sh
#
40 05 * * * sh $BASE_DIR_dev/script/ex_rfriends.sh
40 17 * * * sh $BASE_DIR_dev/script/ex_rfriends.sh

3)[8-3-3]録音自動化設定の書込

2.9 デイリー処理

1)[7-2] - [7-9]のキーワードを設定する。 最初は何もしないと、あらかじめ適当に設定されたキーワードが有効になる。

2)[1-4]デイリー処理 を実行する。 翌日からは、これを行わなくても自動的に実行する。

3.その他

ここまでで/home/user/ 以下には次のようなディレクトリが作成されている。

rfriends
rfriends_dev
usr
usr_dev

at_que_noの設定、crontabの設定、usrdir設定を間違えると正常に動作しない。 また、マシンの能力により録音の失敗の可能性もある。 動作をよく理解したうえで行うこと。

4.おまけ

2つ動作させるとどちらがどちらかわかりづらくなる。たとえば、teratermでアクセスしている場合、設定で表示の色を変えるといい。

 

以上