Streamlink utils Tool Raspberry Pi

前回作成したyoutube-dl utils Toolのstreamlink版を作成してみました。

Streamlink

インストール

$ pip3 install --upgrade --user streamlink

基本の書式(ダウンロード)

$ streamlink URL best -o 'hogehoge'

$ streamlink –plugins
streamlinkはサイトごとのpluginで実行します。国内(動画)サイトでは abematv, nhkworld, nicoliveなどがありますが当サイトではabematvを利用しています(ほか未確認)

基本のプログラムはyoutube_dl_utils.pyをベースに作成(streamlink_utils.py)しましたが操作性の統一を図るためyoutube_dl_utils.pyにも若干の変更を加えています。

Listbox

listboxの表示は自然な並びにするためsort -V追加

multimedia_list = "ls -FA | sort -V"


URL欄 urlをコピペ
Title欄 タイトル入力
streamlinkではタイトルを取得するオプションが見つからなかったのでタイトルを手作業で入力。空欄の場合は日付+時間を適用。取り敢えずなにか(話数)だけ入れてDL後ファイルマネージャーで変更しても可
Stream Linkボタンで実行開始

Streams各ボタンはStream sizeを変更(デフォルトは任意に変更)
# default stream(480p)
stream = “480p”
640×480 4:3
854×480 16:9

JSON DATA

-j オプションでJSON DATAを取得します。

grep -E(正規表現) 数値(3桁〜4桁)+pの行を検索

# url(stream)
def url_click():
    url = url_entry.get(); url = url.strip()
    t = t_entry.get(); t = t.strip()
    if not url:
        messagebox.showinfo('streamlink', 'No URL !')
        return
    st = ("streamlink '" + url + "' -j | grep -E '[0-9]{3,4}p' | awk '{print($1)}' | cut -c 2-5")
    st = (subprocess.Popen(st, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8')
    messagebox.showinfo('streamlink', 'Streams         \n\n' + st)


URL欄にurlを入力URLボタンで取得したJSON DATAから指定可能なstream sizeを抜き出します。urlを間違っていたり解釈不可の場合は空になります
abematvではurlが合っている限りこのサイズを表示します。比較的新しいコンテンツは指定可能ですが古い(4:3)形式のものは480pが出力されたりbestではエラーになることもあるようです(480pが無難)
180p worst
1080p best

youtube plugin

streamlinkは一応youtubeもpluginリストにあります。(youtube-dlがあるので使うことは無いのですが)

但しJSON DATAを取得出来ないurlが多い(DL不可)YouTubeの仕様変更に対してstreamlinkの対応が遅れているものと思います。
この例では144p(worst), 240p, 360p(best)が指定(DL)できます。
DLはbestが早いようだ

script file

scriptボタンでYouTube_dl Tool同様スクリプトファイルに書き出します。Title(edit)ボタンで編集

abematvのurlは連番形式とわかりやすくなっています。またタイトルもここで編集可(ファイル名 .streamlink.sh)
Listboxからファイル.streamlink.shを選択してStream Linkボタン(Yes)でDL開始

mediainfo

$ sudo apt install mediainfo


abematvの配信形式はMPEG-TSになっています。(トランスポートストリーミング)
Piでは拡張子が無くてもmpv,vlcからは正常に認識、再生可。拡張子を付けるならtsが適当と思います。

update


streamlinkのupdateはインストール時と同じコマンド
オプションstreamlink –version-checkを実行して同じバージョンならOKボタン


–version 2.3.0のorangepi3で実行確認
新しいバージョンがあればYes/Noボタン

youtube_dl_utils.py


scriptファイルの編集はType(edit)ボタンに変更、URLボタンは2つのウインドウが出るので見やすい方を選択
updateはw3mでサイトを確認するようにしました。

参考
streamlink_utils.py.20210917
youtube_dl_utils.py.20210917

2020年米RIAAからの著作権問題についてはyoutube-dlは白の判定が下りましたが各サイトについてはグレーです。
くれぐれも個人利用、自己責任で!