Orange Pi 3 radiko SimulRadio

これまでradiko SimulRadioはOrangePi3上のubuntuコンテナを中心に設定、構成していたのですがその経緯にはdebianにswftools(ARM64)パッケージが無かったことから始まっています。(ubuntuリポジトリは利用できるのかな?)
このことは前回busterコンテナに再設定するまで忘れていたのですがなんとかradikoも動作するようになりました。
忘れていたことは忘れて改めてOrangePi3本体に設定してみました。

radiko

raspbianのswftoolsパッケージ情報を見ると依存するパッケージとインストールされるファイル情報が読み取れます。パッケージ自体は古いのでdebian系arm(64bit)でコンパイル済ならば流用できる可能性が高いと想像できます。

$ apt show swftools
Package: swftools
Version: 0.9.2+git20130725-4.1
Priority: extra
Section: utils
Maintainer: Christian Welzel <gawain@camlann.de>
Installed-Size: 5,043 kB
Depends: gsfonts, libc6 (>= 2.7), libfreetype6 (>= 2.2.1), libgif7 (>= 5.1), libjpeg62-turbo (>= 1.3.1), libmp3lame0, libzzip-0-13 (>= 0.13.56), zlib1g (>= 1:1.1.4)
Suggests: gs-common
Homepage: http://www.swftools.org/
Download-Size: 621 kB
APT-Manual-Installed: yes
APT-Sources: http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages
Description: Collection of utilities for SWF file manipulation/creation
 SWF Tools is a collection of SWF (Flash) manipulation and creation utilities.
 .
 This package includes: as3compile, font2swf, gif2swf, jpeg2swf, png2swf,
 swfcombine, swfextract, swfdump, swfrender, swfstrings, swfbbox, swfc and
 wav2swf.
 .
  * as3compile is a standalone ActionScript 3.0 compiler. Mostly compatible
    with Flex.
  * font2swf converts font files (TTF, Type1) into SWF.
  * gif2swf converts GIFs into SWF. It is also able to handle animated gifs.
  * jpeg2swf takes one or more JPEG pictures and generates an SWF slideshow.
  * png2swf takes one or more PNG pictures and generates an SWF slideshow.
  * swfcombine is a tool for inserting SWFs into Wrapper SWFs. (Templates)
    E.g. for including the pdf2swf SWFs into some sort of Browsing-SWF.
  * swfextract allows one to extract Movieclips, Sounds, Images etc. from SWF
    files.
  * swfdump prints out various information about SWFs.
  * swfrender converts a swf to an image.
  * swfstrings scans SWFs for text data.
  * swfbbox allows one to readjust SWF bounding boxes.
  * swfc is a tool for creating SWF files from simple script files.
  * wav2swf converts WAV files into SWF.
 .
 This package does not include pdf2swf and avi2swf.

このファイルの中でradikoの再生録音に直接必要なファイルは/usr/bin/swfextractです。
また最初のauthkeyの作成にlibjpeg.so.8が必要になります。
これらのファイルをubuntuコンテナからコピーしました。

不足しているパッケージをインストール(mpv mplayer ffmpegはインストール済)

# apt install libxml2-utils rtmpdump libzzip-0-13

ubuntuからコピーしたswfextractを/usr/local/binにコピーします。

# cp swfextract /usr/local/bin

radikoスクリプトを実行

$ ~/bin/radiko.sh -p FMT
swfextract: error while loading shared libraries: libjpeg.so.8: cannot open shared object file: No such file or directory
[stop] failed get keydata (/var/tmp/authkey.png)

こんなエラーになる場合はlibjpeg.so.8がインストールされていません。
ubuntuにはlibjpeg.so.8.1.2がインストールされています。

$ ll /usr/lib/aarch64-linux-gnu/libjpeg*
lrwxrwxrwx 1 root root     16  7月  6  2018 libjpeg.so.8 -> libjpeg.so.8.1.2
-rw-r--r-- 1 root root 236168  7月  6  2018 libjpeg.so.8.1.2

コピーして同じようにリンクを張ります。

# cp libjpeg.so.8.1.2 /usr/lib/aarch64-linux-gnu
# cd /usr/lib/aarch64-linux-gnu
# ln -s libjpeg.so.8.1.2 libjpeg.so.8

radikoスクリプトを実行してエラーが無ければauthkey.pngとplayer.swfが作成されます。
/var/tmp

-rw-r--r-- 1 pi pi 198393  9? 22 17:06 authkey.png
-rw-r--r-- 1 pi pi 685413  9? 22 17:06 player.swf

もう一つの方法としてraspberry piなどで実際に聴取しているauthkey.pngとplayer.swfがあれば直接コピーすることでlibjpeg.so.8無しに動作が可能です。(ユーザーは合っていること)

SimulRadio

OrangePi3のtigervncはgeometry=”922×545″でdwmの左右の境界線(default)は0.55(55:45)に設定しています。この値に収まるようにsimul.pyのフォントを調整してみました。
フォントの見栄えはOSの設定、vncserver(tiger or tight)などによって違ってきます。
https://codeday.me/jp/qa/20190513/817329.html

from tkinter.font import Font

if __name__ == '__main__':
    root = Tk()
    root.title('SimulRadio')

    # Font
    listfont = Font(family="calibri",size=8)
    #root.option_add("*Font", listfont)
    root.option_add("*Listbox*Font", listfont)


ボタンのフォント、文字サイズはstyleで変更します。
root.option_add(“*Font”, listfont)は全体の文字サイズを変更しますがmessageboxの文字サイズも変更してしまうためListboxのみ変更しています。
以前より2ポイント位小さくなっていますが選局には支障ないと思います。

ncmpcpp

やはりncmpcはクセがあるようでOrangePi3では接続拒否されてしまいました。ncmpcppのインストール容量は少し大きくなりますが確実に接続できるようです。
mpd.confのmusic_directory設定は音楽ファイルのある任意のディレクトリを指定できます。
設定ファイルは今までのものを全てコピーしているので一旦空にしてmpdを再起動します。

$ cd ~/.config/mpd
$ : > mpd.log && : > state && : > sticker.sql && : > database
$ killall mpd && /usr/bin/mpd &


簡易なデータベースも瞬時に作成します。
PlaylistとBrowseの切り替えはTabまたは数字キーの1,2で切り替えます。
Browseから曲を選択してPlaylistに登録、再生


ラジオをPlayすると登録したPlaylistをクリア、ラジオを再生します。
simul radio – ncmpcppの再生は同じmpdを使用しているので切り替えが可能です。
radikoの再生もmpdを停止するので自動でOK、radikoの再生中からncmpcppだけは自動でmpvを止めないのでradikoを一旦停止する必要があります。
←→キーで音量調整ができます。