moOde audio 671 – サイマルラジオ

moOde audio 670で100局位登録、正常にExport Importできたところで調子に乗って計210局登録
moOde audio 671を新規インストール、移行・・・見事Importに失敗してしまいました。
具体的な現象としてはImporting…のままImport completeにならない
やむを得ないので手作業でデータベースに追加してみることにします。

ラジオデータ復活

cfg_radio.csv
予め670からExportしたcfg_radio.csvから登録した500番以降のデータを取り出しておきます。(cfg_radio.csv.500)

$ cat cfg_radio.csv | awk -F "," '$1 >= 500 {print}' > cfg_radio.csv.500

新規インストールした671を起動、moode-sqlite3.dbのバックアップを取ってcfg_radio.csvをExport
/var/local/www/db/moode-sqlite3.db

# cd /var/local/www/db
# cp -p moode-sqlite3.db moode-sqlite3.db.671.def
# sqlite3 -csv moode-sqlite3.db "SELECT * from cfg_radio ;" > cfg_radio.csv

670で登録作成した500番以降のデータcfg_radio.csv.500のデータをデフォルトのcfg_radio.csvに追記

# cat cfg_radio.csv.500 >> cfg_radio.csv

追記したcfg_radio.csvをImport

# sqlite3 moode-sqlite3.db
SQLite version 3.16.2 2017-01-06 16:32:41
Enter ".help" for usage hints.
sqlite> .separator ,
sqlite> delete from cfg_radio;
sqlite> .mode csv
sqlite> .import cfg_radio.csv cfg_radio
sqlite> .exit

エラーメッセージが無ければ正常に読み込んでいるはずです。
インポートした内容を確認

# sqlite3 moode-sqlite3.db
SQLite version 3.16.2 2017-01-06 16:32:41
Enter ".help" for usage hints.
sqlite> .separator ,
sqlite> select * from cfg_radio;
sqlite> .exit

plsファイル 画像ファイル

670で作成された各ファイルはUSB経由でコピーするかカードを他のマシンに挿してコピーするかします。
plsファイル /var/lib/mpd/music/RADIO
画像ファイル /var/local/www/imagesw/radio-logos
画像ファイル(200×200) /var/local/www/imagesw/radio-logos/thumbs

以上で再起動するとブラウザのラジオリストにはデフォルトのラジオ局しか見えていませんがサイマルラジオからは正常に再生、moOde playerにも画像が表示されます。(サイマルラジオはcfg_radio.csvを読み込み)
ここで新規にラジオ局を登録するとインポート、登録したラジオ局がブラウザに全て見えてきます。
当サイトでは適当なラジオ1局を削除してcfg_radio.csvをImport、該当するplsファイルを削除して起動、再度削除したラジオ局を再登録することで同様に再現することができました。
新規登録及びExportは正常ですがやはりImportは失敗します。
原因は不明ですがImportの際Radio Managerから認識、書き込みできないラジオ局があるのかもしれません。

サイマルラジオ


登録したデータが戻ってきました。
手間としてはさほど変わらないので登録したデータが活きてくれれば取り敢えずいいことにします。
しばらく使ってみて原因を追求(?)、様子を見たいと思います。

登録してあるラジオ局はデフォルトを含め350前後となりmoOde playerのラジオリストからは見通しが悪くなります。
デフォルトのラジオ局をサイマルラジオのfavoriteボタンに登録することにします。
サイマルラジオからはcfg_radio.csvは~/radioに読み込みします。
リストfavorite3は~/radio/FAVORITE/simul-default/favorite3にあるものとします。任意(以下1行)

$ cat ~/radio/cfg_radio.csv | awk -F "," '$1 <= 192 { print $3,$2}' | tr -d '"' | sed 's/^/"/;s/$/"/' > FAVORITE/simul-default/favorite3


デフォルトは192まで登録されています。
awk カンマ区切り3項目、2項目を出力
tr ダブルクォートを削除
sed 再度両端にダブルクォート付け替え
画像のリストは少しだけ編集しています。
削除されたラジオ局のデータも少し残っています(DELETED)
BBC(320Kbps)などは接続不可(多分国別制限と思います)


よく聞くラジオ局は決まってくると思います。
ラジオリストでフォーカス(選択)するとコピーできます。
favorite6に再登録、Area Editで開く。xtermは中ボタンクリックでペースト、ダブルクォートを付け加えるだけでOK
サイマルラジオからの再生は mpc add url && mpc play
再生、画像表示も問題なく実行します。
音量はサイマルラジオで設定したデフォルト値を適用


CSRAのmms://関連はあまり音が良くないこと、画像も表示しないことからcsra8に纏めました。
九州、沖縄を統合しています。


moOde playerからPlayしたラジオやアルバムはON AIRボタンでタイトルバーに最低限の表示をします。
Play Listの先頭にある情報を検索します。
アルバムはアーティストのみ表示
moOde audio関連はブルーのタイトルバーにしています。


参考(暫定です*ダウンロードで日本語正常表示)
simul.py
simul-vol.py
killall.sh
default setは適宜変更
ラジオリスト、設置方法は過去記事


ナチュレボタンでmpdをリスタート

サイマルラジオ局(障害)によっては極稀に接続状態のまま操作不可になることがあるようです。
/var/lib/mpd/stateを削除、mpdをリスタート
mpdのタイムアウトを待って実行するようでしばらく時間がかかることがあります。
stateファイルは再生開始時mpdが自動作成

# Button1001 nature
def nat1001():
    proc = messagebox.askokcancel('Confirmation', "mpd restart ?")
    if proc == True:
        subprocess.run("~/bin/killall.sh", shell=True)
        time.sleep(1)
        subprocess.run("sudo rm /var/lib/mpd/state && sudo systemctl restart mpd", shell=True)
icon1001 = PhotoImage(file=dir+'64x64/nature.png')
button1001 = ttk.Button(frame1,image=icon1001,command=nat1001)
button1001.grid(row=2,column=4)

moOde audio 670 - サイマルラジオ

moOde audio 6.7.0アップデートしています。カーネル更新が主のようです。

660で80局ほどラジオ局をmoOde audioに登録してみました。moOde audio 670の新規インストールにスムーズに再登録できるか試してみることにします。
ロゴ画像の有無は本来のラジオ局としてはなにも変わるところは無いのですが印象はずいぶん違ってきます。
ということで暫定的ですが(常に暫定です)サイマルラジオからもmoOde playerにロゴ画像を表示できるよう対応してみました。
moOde playerで正常に登録再生、画像が表示できている必要があります。サイマルラジオから選局、ラジオ局ごとに音量設定します。従来のラジオリストなどそのまま利用します。

ラジオ局データ

登録したラジオ局データ(plsファイル、画像、cfg_radio.csv)はExportしてバックアップしておきます。
moOde audio 670をインストールが完了したらデフォルトのmoode-sqlite3.dbをExport、展開してバックアップしたplsファイル、画像ファイルを所定のディレクトリにコピー
cfg_radio.csvは500番以降を纏めています。(cfg_radio.csv.bak)
デフォルトのcfg_radio.csvに追記

$ cat cfg_radio.csv.bak >> cfg_radio.csv

編集が完了したらzipで圧縮(ファイル名は適当)

$ zip -r stations670 var

moOde audioのRadio MnagerからImport stations670.zip
ブラウザを再読込 問題なくデータが復活しました。

サイマルラジオ

サイマルラジオはリストボックスからラジオ局(url)を選択して再生を開始します。

$ mpc add url

moOde playerはplsファイルを選択、プレイリストに登録します。

$ mpc load xxx.pls

いずれも実際にアクセスするのはurlを使用することからサイマルラジオは/var/local/www/db/moode-sqlite3.dbから取得したcfg_radio.csvのurlを照合、station nameを取得してラジオ局.plsをmpc loadします。
”mpc load” “mpc play”することでmoOde playerと全く同じ動作をすることになりJCBAもサイマルラジオからmoOde playerにロゴ画像が表示可能になります。
moOde playerに未登録の場合はテキストのラジオリストからmpc addすることで今までどおりの動作で再生します。

サイマルラジオとmoOde playerを連携させるためにはサイマルラジオのラジオリストに登録してあるラジオ局名でmoOde playerに登録します。
ラジオ局の登録は画像ファイルを用意、手順が慣れてくるとstation name、URI、画像を選択で間違いなく登録できます。URIはhttp://でOK

参考 simul.py simul-vol.py

simul.py
simul-vol.py

cfg_radio.csvの取得

サイマルラジオにはcfg_radio.csvを取得するボタンを追加しています。
moOde playerに登録したらサイマルラジオから読めるよう最新の情報を取得(設定しているradioディレクトリに保存)

$ sqlite3 -csv /var/local/www/db/moode-sqlite3.db 'SELECT * from cfg_radio ;' > ~/radio/cfg_radio.csv


CSRA(ListenRadio)はロゴ画像を表示するのですがPlaylistタイトルはurlの末尾になります。
cfg_radioボタンをクリックするとmoode-sqlite3.dbからcfg_radio.csvを取得
urlを検索、照合して*.plsをload


再度Play
plsファイルをloadできていればPlaylistタイトルは*.plsに記載されているラジオ局になります。
Emptyボタンはcfg_radio.csvを空にします。(確認、実験用)
上記のように従来の動作をします。

moOde playerで正常に画像表示、サイマルラジオから画像表示などしない場合は登録したラジオ局名とラジオリストの登録名称に違いがある可能性があります。


JCBAもサイマルラジオから画像表示できるようになりました。
こんなロゴ画像だと内容はともかく取り敢えず聞き入ってしまいます(イメージは大切です)
サイマルラジオのタイトルーバーは色を変更しています。
起動時、停止 黒
CSRA NHK 赤
JCBA radiko 緑


サイマルラジオのタイトルーバーもラジオ局名からタイトル用リストを検索しています。
従来のリストは少々間違いや食い違いがあります。
今回気がついたところ
CSRA 正 FMおとくに – 誤 レディオ湘南 大きな間違い
JCBA FMふくろう FM サルース 表記違い


サイマルラジオは局間の音量差が大きいのでvolリストを作成してコントロールしています。
mpc volumeの正しい値はncmpcppにリアルタイムに表示します。
もちろんmoOde Playerからもコントロールできますがサイマルラジオなど外部から変更した値はリアルタイムに追従しません。
今回plsファイル用にsimul-vol.pyを書き換えています。
当サイトの環境では動作を確認していますが設定の違いにより意図したとおり動くとは限らないため音を出す前にncmpcppの値を見ながら充分確認、チェックが必要です。
サイマルラジオのvol-defボタンはsimul-vol.pyを実行します。volリストを作成したらその値が適用されます。±はpulseaudioがスタートしていればpulseaudioをその以外はmpc volumeを適用します。

moOde audio 6.6.0 Radio Manager

moOde audioにロゴ画像付きのラジオを登録するだけでずいぶん雰囲気が変わる感じがします。

但し登録時にちょっとへぐったりすると修正が不可になったり追加したいラジオ局が追加不能になったりします。また新規インストール時作成したデータを新しいラジオデータにできるだけ簡単に追加できないと魅力がなくなります。

ディレクトリ構成

Radio ManagerからExportするとstations.zipがダウンロードされます。
そのままImportするとなにも変わりません(バックアップ)
ダウンロードしたstations.zipを展開すると以下の構成になっています。

/var/lib/mpd/music/RADIO/station.pls # ラジオ局.pls ファイル
/var/local/www/imagesw/radio-logos/station.jpg # ラジオ局ロゴ画像
/var/local/www/imagesw/radio-logos/thumbs/station.jpg # ラジオ局リスト画像
/var/local/www/db/cfg_radio.csv # station.pls station.jpgデータベース(csv)

ラジオ局登録の動作を見ると以下のようになるかと思います。キーワードはStation name
New stationの画面
Station name :   NHK FM 東京
Playable URL :   https://nhkradioakfm-i.akamaihd.net/hls/live/512290/1-fm/1-fm-01.m3u8
Logo image :    nhk-fm.jpg
Name (displayed) : NHK FM 東京(自動)

Station nameからplsファイルを作成(NHK FM 東京.pls)
Logo imageをStation name.jpgにリネーム(NHK FM 東京.jpg)
ラジオ局リスト画像を作成(NHK FM 東京.jpg 200×200)
/var/local/www/db/moode-sqlite3.dbに書き込み

cfg_radio.csvは以下のコマンドで抜き出していると思います。(要root 参考)
Export

# sqlite3 -csv moode-sqlite3.db "SELECT * from cfg_radio ;" > cfg_radio.csv

修正して Import

# sqlite3 moode-sqlite3.db
SQLite version 3.27.2 2019-02-25 16:06:06
Enter ".help" for usage hints.
sqlite> delete from cfg_radio;
sqlite> .mode csv
sqlite> .import cfg_radio.csv cfg_radio
sqlite> .exit

基本はRadio ManagerからExport Importするのが間違いなさそうです。
登録時修正を重ねていると変なデータがmoode-sqlite3.dbに登録されてしまうことがあるようです。
/var/local/www/db/cfg_radio.csv

ユーザーデータは500番から連番で登録されています。
登録不可のラジオ局はここから削除します。
場合によってはplsファイル、jpgファイルを削除する必要があるかもしれません。

修正が終了したら展開したvarのあるところでzipで固めます。
ファイル名は適当でOK (new-stasions.zipが作成される)

$ zip -r new-stasions var

Radio ManagerからImport
Import/export status: Importing…   # Import中
Import/export status: Import complete # Import成功

Exportしたstasions.zipで元のデータに戻すことができます。

展開したstasions.zipの中にはユーザー登録したplsファイル、jpgファイルがあります。
これらのファイルをバックアップ保存、新規インストール後は同じようにExport、デフォルトのデータにコピー、cfg_radio.csvは登録した500番以降を追記することで復元できそうです。
まだ10数局ですが当サイトが登録したラジオ局はこの方法で復元することを検証しています。

選局のしやすさ、個別の音量設定はサイマルラジオが便利なのですがJCBA(musicbird)が画像を表示してくれると楽しいのですが!!
今後の課題ですね。

Raspberry Pi moOde audio 6.6.0

今回のバージョンはラジオ関係が大分充実しています。
ラジオ局の登録(ロゴ画像を含めて)が簡単にできるようになっています。

ラジオ


新たにラジオ局も追加になっています。
Libraryの下にある”+”でラジオ局の登録画面


Station nameを入力
URLを入力
Logoを選択 jpgイメージを用意 300×300あればいい
Name – Station nameが自動で入る
Create 登録
取り敢えずこれで登録できます。
途中関係ないところをクリックすると登録に失敗するようです。


Station nameでソートします。


CSRA(ListenRadio) JCBA(musicbird) 各2局登録
ブラウザ再読込
日本語名はケツにつきます。


moOde audioのRadioからPlay
登録したラジオ局はロゴ画像を表示します。


サイマルラジオから再生
タイトルがStreaming sourceになります。
サイマルラジオからの再生はCSRAとNHKはロゴ画像を表示してくれますがJCBAは残念ながら表示してくれません。Play Listを取得するタイミングが関係しているものと思っています。


Radio Manager
exportするとstations.zipをダウンロードできます。
展開するとラジオ局関係のデータ(データベース)になっています。
sqlite3を勉強しながら少しだけ眺めて見ようと思います。


Raspberry Pi Zeroへのインストールは前回6.5.2と同じ。完了

JCBA(musicbird)の仕様は時々変更になりますね。最近はまたPlay Listを表示してくれるようです。
一時mpdから再生不可の時もありました。

ASUS X200MA Ubuntu20.04LTS + Wine 5.12 Application

前回は基本のアプリケーションをインストールしましたがそれ以外にインストールしたアプリケーションや気がついたところを記録しておきます。

File Manager

メインはrangerを使っています。本来の機能の極一部しか使いこなせていませんが慣れてくると癖になってきます。wine環境ではpcmanfmが拡張子(exe)を認識します。

# apt -y install ranger w3m-img highlight atool mediainfo ffmpegthumbnailer
# apt -y install pcmanfm mupdf gpicview

www

web browserはfirefoxとsurf

# apt -y install firefox firefox-locale-ja surf suckless-tools

dwmではGIMPとfirefoxは特別なアプリケーションになっています。
GIMPは常にforegroundにfirefoxは9番タグで起動します。5番タグに変更したい場合はconfig.hを次のように変更して再コンパイル
dwm-6.2/config.h

{ "Firefox",  NULL,       NULL,       1 << 4,       0,           -1 },

python

python3-tkをインストール、アプリケーションによってはpythonを指定するのでリンクを作成

# apt install python3-tk
# cd /usr/bin
# ln -s python3.8 python

desktop

最近はadwaita-darkテーマが気に入ってます。

# apt install lxappearance adwaita-icon-theme-full gnome-themes-extra

その他

# apt install mousepad geany vim htop autofs


lxappearance

Group

userをグループに追加しておきます。(user = pi例)

# usermod -G adm,lp,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,dip,lxd pi
# visudo
pi   ALL=(ALL) NOPASSWD:ALL


Wineはシステムのプリンターを用います。
RasPi OSと同様に自動設定してくれます。
cupsクライアントは特にlpadminは必要ないようです。

Wine Application


Wine関連の主なコマンドは次のとおり
winecfg
regedit
wine uninstaller
winetricks


当サイトでは敢えて動かしたいと思うWindowsアプリケーションはほとんどないのですが以前やはりWineで運用していたBsch3vと新たにNotepad++をインストール
素性のいい比較的軽量のアプリケーションは動く可能性が高いと思います。
起動したアプリケーションはmodキー+マウス(左クリック)で任意のタグに移動できます。


当サイトで使いたいメインのアプリケーションも動くのですが印刷だけはうまくいきません。
このアプリケーションだけは印刷にmsgothicを要求するようです。Windows本体からmsgothic.ttc msmincho.ttcを適当なディレクトリにコピー、印刷を必要とするときだけ~/.wine/drive_c/windows/Fontsからリンクを張ることにしました。
ボタン例(font_button)


見慣れたギザギザフォントに変わります。(好みでイイという人もいると思います)
印刷が済んだら再度フォントボタンをクリック、アンチエイリアスを有効(リンク削除)
即切り替わりますがアプリケーションは再立ち上げが必要になるかもしれません。

Ubuntu Application

Wineアプリケーションは使う機会が少ないこともありせっかくなのでUbuntu(AMD64)でサイマルラジオや動画を試してみようと思います。
pulseaudioは依存関係でインストールされています。音声はmoOde audioに送ります。
設定ファイルやラジオのデータ、作成したpythonファイルは全て共通なのでコピーだけで済みます。

# apt install mpd mpc ncmpcpp pavucontrol
# apt install mpv mplayer libxml2-utils rtmpdump
# systemctl disable mpd

Ubuntuではswftoolsをサポート停止していますがほかマシンで稼働中の/var/tmpにあるauthkey.pngとplayer.swfをコピーすることで再生が可能になります。

Flash Playerの配布と更新が2020年12月31日に終了することでradikoスクリプトも使えなくなってしまいますね。即ブロックされるかどうかはわかりませんが早期に使えなくなることは間違いなさそうです。
cliで使えるプレーヤーがあるといいのですが期待しておきましょう!


X200MAのスペックは2.16GHz/2コア、メモリが4GBあることから動画の視聴にも耐えられます。
firefoxの初回起動はそれなりにかかりますが起動してしまえば普通に動きます。
当サイトの中では一番いいかも!

コンソール画面をオフにする

USBブートのUbuntu20.04LTSはvncserverとして運用します。
X200MAのコンソール画面はCUIのログイン待ちでバックライトが点灯しています。
起動後一定の時間で消灯、その頃を見計らってvncviewerで接続します。

# apt install vbetool

~/.vnc/xstartup 末尾に追記

sleep 120 # timeは適当に
sudo mount -o remount,exec /dev && sudo vbetool dpms off

sudo vbetool dpms onで再度点灯するのですが画面が乱れてしまいます。なにかほかに設定コマンドが必要のようですが(今回は追求しないことにします)


USB2.0接続とあってクイックな起動は不可ですがリモート接続のサブシステムとして十分活用できると思います。当サイトではWindowsの128倍くらい利用価値が増えました。(128倍はちょっと大袈裟ですね 64 +`@倍くらい?)

最後にジャンクなHDDは壁にぶら下げて完成です。

Top