rfriendsでラジオ録音

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

Google Nexus5 に Ubuntu Touch をインストールする。

Ubuntu Touch は、UbuntuベースのOSで、UBportsコミュニティーにより開発されています。
https://ubports.com/

 

cut&tryで作業した上に、記憶を辿って記述しているので誤りがあるかと思います。これをもとに再インストールしてみる予定です。また、奇特な方がいらっしゃいましたら間違いを訂正していただければ幸いです。

 

0.注意事項
Google Nexus5 に Ubuntu Touch をインストールすると、androidシステム、データはすべて消えます。

 

1.インストール

 

1)PCにADBツールをインストール

15 seconds ADB Installer v1.4.3
https://forum.xda-developers.com/showthread.php?t=2588979

2)PCにUBportsからubports-installer.0.4.18-beta.exe(Windows)をダウンロード

https://ubuntu-touch.io/get-ut

3)PCとNexus5をUSBケーブルで接続

4)ubports-installer.0.4.18-beta.exeを実行

あとは画面にしたがってインストールするだけ

現在のバージョンはUbuntu 16.04(OTA-11)

 

2.sshの有効化


1)PC上で、teraterm等を使用し、C:\Temp\にRSA鍵を作成する

公開鍵:id_rsa.pub
秘密鍵:id_rsa


2)Nexus5上で、システム設定-About-開発者モード-ON


3)PC上で、公開鍵をNexus5に転送し設定する

adb devices
adb shell android-gadget-service enable ssh
adb shell mkdir /home/phablet/.ssh
adb push c:/Temp/id_rsa.pub /home/phablet/.ssh/authorized_keys
adb shell chown -R phablet.phablet /home/phablet/.ssh
adb shell chmod 700 /home/phablet/.ssh
adb shell chmod 600 /home/phablet/.ssh/authorized_keys


4)teraterm でNexus5にアクセス

ttermpro.exe 192.168.1.XXX:22 /auth=publickey /user=phablet /passwd=*** /keyfile=C:\Temp\id_rsa

 

2.各種設定

以下、teraterm で操作


1)ルートをr/wにする
readonlyなのでr/wで再マウントする。

sudo mount -o rw,remount /


boot 時に実行

sudo vi /etc/rc.local
mount -o rw,remount /

 

2)cacheディレクトリを変更


cacheディレクトリの容量が少ないので、ホームディレクトリに変更する。

mkdir -p ~/aptcache
sudo mount --bind /home/phablet/aptcache /var/cache/apt


3)swap領域を拡張する


swap領域が小さいので1GBに拡張する。(もっと小さくてもいい)

cd /userdata
sudo swapoff SWAP.img
sudo fallocate -l 1073741824 SWAP.img
sudo mkswap SWAP.img
sudo swapon SWAP.img

 

3.rfriendsのインストール


1)システムを更新する

sudo adduser _apt --force-badname
sudo apt update


2)rfriendsをダウンロードし展開する。

cd
wget rfriends.shop/files/rfriends2_2.6.6.1_20200405_script.zip
unzip rfriends2_2.6.6.1_20200405_script.zip


3)ツールをインストールする

cd
cd rfriends2
sh ex_tools.sh

 

4)ffmpegをインストールする。


標準でインストールされるものは古いので新しいバージョンをインストールする

https://www.johnvansickle.com/ffmpeg/

cd
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-armhf-static.tar.xz
sudo apt-get install xz-utils
tar Jxfv ffmpeg-release-armel-static.tar.xz
sudo cp -p ffmpeg /usr/bin
sudo cp -p ffprobe /usr/bin


5)rfriendsの実行

cd
cd rfriends2
sh rfriends2.sh

[9-1]でrfriendsを最新にする。

 

4.システムイメージを拡張する

 

この項が一番怪しい

 

いろいろなアプリをインストールしているとrfriendsが動作しなくなる。
dfで確認するとルート領域が100%になっている。


1)システムイメージを2G->3Gに拡張する(もっと小さくてもいい)

sudo losetup /dev/loop0
sudo blockdev --getsize64 /dev/loop0
sudo truncate -s 3221225472 /userdata/system.img
sudo blockdev --getsize64 /dev/loop0
sudo losetup --set-capacity /dev/loop0


2)PCとNexus5をUSBケーブルで接続PC上で設定する
Recoeryモードにする。

adb shell losetup /dev/block/loop0 /data/system.img
adb shell resize2fs -f /dev/block/loop0


3)リブート
リブートする。

 

5.その他

sambaをインストールし、/home/phablet/rfriends2/usrを公開する。
セキュリティは考慮せず、ゲストでアクセス可とする。

sudo apt install samba

 

sudo nano /etc/samba/smb.conf

以下の5行を追加
[phablet]
path = /home/phablet/rfriends2/usr
read only = No
guest ok = Yes
force user = phablet

 

sambaの再起動

sudo service smbd restart
sudo service nmbd restart

 

以上

rfriends2 2.6.7-a2 をリリースしました。オンラインアップデートのみです

2.6.7-a1 -> 2.6.7-a2 変更点は以下の通りです。
今回の修正は要望に沿ったものですが、自分で何かしようとしない限り不要な機能ですので読み飛ばしてかまいません。


1)logの保存期間設定の追加
[8-1-2]パラメータ設定で
log_lifetime = n
nは0-366、0は消去なし、省略時は3日

 

2)録音終了時のユーザ処理追加
[8-1-2]パラメータ設定で、user_process = 1 とすると
録音終了時に、
windows rfriends\config\user_process.bat
Linux,osx rfriends/config/user_process.sh
を実行します。上記ファイルに実行したいプログラムを追加してください。
当然ですが、対話形式のプログラムは不可です。
プログラミングの知識のある方のみ行ってください。

例(Windows
[rfriends\config\user_process.bat]

@echo off
c:\Temp\test.bat %1 >> c:\Temp\test.log
exit


[c:\Temp\test.bat]

@echo off
set awk=c:\Temp\gawk.exe
echo.
echo %date% %time%
echo.
echo fin_user_program : %0
echo parameter        : %1
echo.
type %1 | %awk% "/rfriends-info-start/,/rfriends-info-end/"
exit   


[c:\Temp\test.log]

2020/04/19 11:55:53.04

fin_user_program : \Temp\test.bat
parameter        : D:\rf_dev\Beta\rfriends2\usr\log\20200419_100000_115500_TBS.log

rfriends-info-start

[mov,mp4,m4a,3gp,3g2,mj2 @ 06315f80] Unknown cover type: 0x0.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'D:\rf_dev\Beta\rfriends2\tmp\20200419_100000_115500_TBS.m4a':
  Metadata:
    major_brand     : M4A 
    minor_version   : 512
    compatible_brands: isomiso2
    track           : 16
    genre           : radiko
    album           : 安住紳一郎の日曜天国
    album_artist    : TBS
    artist          : 安住紳一郎(TBSアナウンサー)/中澤有美子
    comment         : title:日曜天国
    title           : 安住紳一郎の日曜天国_20200419_1000
    encoder         : Lavf58.29.100
    date            : 2020-04-19
  Duration: 01:55:45.02, start: 0.000000, bitrate: 47 kb/s
    Stream #0:0(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
    
move
from D:\rf_dev\Beta\rfriends2\tmp\20200419_100000_115500_TBS.m4a
to   D:\rf_dev\Beta\rfriends2\usr\radiko\TBS_安住紳一郎の日曜天国_20200419_1000_1155.m4a

rfriends-info-end    

 

 

例(Linux
[/home/pi/rfriends2/config/user_process.sh]

#!/bin/sh
sh /home/pi/smbdir/test.sh $1 >> /home/pi/smbdir/test.log


[/home/pi/smbdir/test.sh]

#!/bin/sh
cat $1 | awk "/rfriends-info-start/,/rfriends-info-end/"


[/home/pi/smbdir/test.log]

rfriends-info-start
 
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xc83680] stream 0, timescale not set
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/pi/tmp/20200419_224000_224500_r2.m4a':
  Metadata:
    major_brand     : M4A 
    minor_version   : 512
    compatible_brands: isomiso2
    title           : みんなのうた「バスの歌」「みどりいろの翼」_20200419_2240
    artist          :  
    album_artist    : JOAB
    album           : みんなのうた「バスの歌」「みどりいろの翼」
    comment         : title:みんなのうた
    genre           : radiru
    date            : 2020-04-19
    track           : 16
    encoder         : Lavf58.20.100
  Duration: 00:05:45.00, start: 0.000000, bitrate: 48 kb/s
    Stream #0:0(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
    Stream #0:1: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 1080x1080 [SAR 1:1 DAR 1:1], 90k tbr, 90k tbn, 90k tbc

move
from /home/pi/tmp/20200419_224000_224500_r2.m4a
to   /home/pi/smbdir/usr2/radiru/JOAB_みんなのうた「バスの歌」「みどりいろの翼」_20200419_2240_2245.m4a

rfriends-info-end

 

以上です。

ログより、録音したデータ情報を抜き出す方法について

 これはユーザ処理機能のためのものなんですが、次の2.6.7-a2で追加予定です。

ログより、録音したデータ情報を抜き出しやすいように目印を追加します。
(rfriends-info-start,rfriends-info-end)
awkを使って、こんな感じで抜き出します。

 

Linuxの場合
$ cat xxxxx.log | awk "/rfriends-info-start/,/rfriends-info-end/"


Windowsの場合
type xxxxx.log | gawk "/rfriends-info-start/,/rfriends-info-end/"

gawk 3.1.5 for Windows を入手してください。
https://www.vector.co.jp/soft/win95/util/se376460.html


抜き出し結果例です。

 rfriends-info-start

D:\rf_dev\Beta\rfriends2\tmp\20200419_100000_115500_TBS.m4a
D:\rf_dev\Beta\rfriends2\usr\radiko\TBS_安住紳一郎の日曜天国_20200419_1000_1155.m4a

[mov,mp4,m4a,3gp,3g2,mj2 @ 06315f80] Unknown cover type: 0x0.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'D:\rf_dev\Beta\rfriends2\tmp\20200419_100000_115500_TBS.m4a':
  Metadata:
    major_brand     : M4A 
    minor_version   : 512
    compatible_brands: isomiso2
    track           : 16
    genre           : radiko
    album           : 安住紳一郎の日曜天国
    album_artist    : TBS
    artist          : 安住紳一郎(TBSアナウンサー)/中澤有美子
    comment         : title:日曜天国
    title           : 安住紳一郎の日曜天国_20200419_1000
    encoder         : Lavf58.29.100
    date            : 2020-04-19
  Duration: 01:55:45.02, start: 0.000000, bitrate: 47 kb/s
    Stream #0:0(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

 rfriends-info-end

rfriends2 2.6.7-a1 をリリースしました

rfriends2 2.6.7-a1 をリリースしました。オンラインアップデートのみです。
2.6.6.1 -> 2.6.7-a1 変更点は以下の通りです。


1.追加変更機能

1)[1-2]ディスク使用量表示を一部変更
2)[3-1]タイムフリー録音日付・CHの放送一覧から選択して録音する。
3) [5-2]キーワード検索らじる聞き逃しをキーワード検索して録音する。ただし、処理が非常に遅い。
4)[6]ゴガク新方式対応。旧方式も残してあるが、将来削除予定


2.メニュー

・機能追加に伴い一部メニュー移動
・管理にディスク残容量表示
・rfriends_name 設定がされていない場合、ホスト名を表示するよう変更


3.パラメータ

rfriends2\templateフォルダの内容が更新されています。ただしupdateの場合は反映されません。[8-1-3][8-2-3]初期化すれば更新されますが、自身で設定していた内容は破棄されるので注意してください。


1)[8-1]パラメータ設定(rfriends.ini)

・Storage Control機能にファイルの最大削除数を追加しました。現状は1となっていてうまく動作していませんでした。

storage_control_count  = 10 ; ファイルの最大削除数


・番組名の変換を一部変更しました。従来、番組名に全角/半角スペースがあった場合、アンダーバー(_)に変換していましたが、マイナス(-)に変換するようにしました。アンダーバー(_)は番組名_日付等に使用しており、それと区別するためです。なお、以下のパラメータ設定で変更も可能です。

replace_char_space = "-"
replace_char_spacej = "-"


2)[8-2]タグ設定(rfriends_tag.ini)

%11 が追加されアルバム名のタグが変更されています。radiru_vod 対応のためです。

;tag_album_fmt = '%5$s' ; 番組名
tag_album_fmt = '%11$s' ; 番組名(ショート)


4.その他

rfriends2\script\gogakuフォルダは不要になりました。削除しても問題ありません。よくわからない方は安全のためそのまま残しておいてください。


5.注意事項

・内部処理の見直しを大幅に行っているため、新たなバグ混入の可能性が大いにあります。


以上です。

Google Nexus5でrfriendsを動かそう(番外)

Nexus5を初期化しました。

 

 初期の目的を達したのでもとに戻すことにしました、戻し方はとても簡単。

 

1.以下のイメージをダウンロードし解凍する。

Factory Images for Nexus and Pixel Devices
https://developers.google.com/android/images

"hammerhead" for Nexus 5 (GSM/LTE)
6.0.1 (M4B30Z, Dec 2016)

hammerhead-m4b30z-factory-625c027b.zip

 

2.PCとNexus5をUSBで接続する。

 

3.Nexus5をfastboot modeにする。

Nexus5を電源OFF
Nexus5をの音量(-)ボタンを押しながら電源ボタンON

 

4.イメージを焼く

解凍したフォルダの中にある、flash-all.batを実行するだけ。

 

以上です。

Google Nexus5でrfriendsを動かそう(6)

MaruOSにrfriendsをインストール

 

実は、ここまでくると、rfriendsのインストールは簡単なんです。

 

1)以下を参考にインストールしてください。

androidにUserLandをインストールしてrfriendsを動かそう (1)
https://rfriends.hatenablog.com/entry/2020/03/29/081251

これでおしまい。
ただし、予約ダウンロード、自動デイリー処理は動作しません。
UserLandと同じですね。


これで、この企画はおしまいです。
感想としては、UserLandのほうがいいってことですね。
なんか、つまらない終わり方で申し訳ありません。

Google Nexus5でrfriendsを動かそう(5)

MaruOSのDebianにヘッドレスでアクセス

 

MaruOSの仕組みは、SlimPortのHDMIアダプタ経由でLinuxデスクトップを表示するというものです。しかし私はこのアダプタを持っていません。買うと今回の本体入手金額より高くなってしまいます。取り合えずSSHでアクセスできればいいのです。VNCは後回し。で、そのやり方です。(いっぱい検索しました)


1)Nexus5とPCを接続

まず、開発者向けオプションを有効にします。(ビルド番号連打です。)
ルートアクセスADBのみ選択
AndroidデバッグON

Nexus5とPCをmicroUSBケーブルで接続します。
PCのコマンドプロンプトを実行します。

>adb devices
List of devices attached
XXXXXXXXXXXXXXXX device

Nexus5を認識していることを確認

 

2).xsessionファイル作成

以下のようなテキストファイル(.xsession)を作成する。
改行コードはLFで。これはディスプレイマネージャから呼ばれるファイルですね。

.xsession
echo maru | sudo -S systemctl enable ssh
echo maru | sudo -S systemctl start ssh


3)rootでshellアクセス

rootに変更
>adb root
restarting adbd as root

先ほどのファイルをPUSH
>adb push .xsession /data/maru/containers/default/rootfs/home/maru/.

シェルアクセス
>adb shell
hammerhead:/ #

rootを確認
hammerhead:/ # whoami
root

ファイルのアクセス権を変更
# cd /data/maru/containers/default/rootfs/home/maru
# chmod 755 .xsession
# chown u9_system:u9_system .xsession

時計を東京にしましょう。
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

ここで一旦終了
# exit


4)Desktop(Debian)の再起動

設定 -> Desktop OFF -> Desktop ON

これでSSHアクセスができるようになりました。Nexus5のIPアドレスを調べます。
設定-> システム-> 端末情報-> 端末の状態-> IPアドレス


5)Nexus5にSSHでアクセス

 

コマンドプロンプトから以下を入力(私はteratermを推奨)

ssh maru@XXX.XXX.XXX.XXX

f:id:rfriends:20200410111228p:plain

こういう画面は出ましたか?
以上です、お疲れさまでした。


というわけで、次回はようやく「MaruOSにrfriendsをインストール」です。