ffmpeg でバックアップが取れん
執筆時点で大凡半年前位から、普通に index.m3u8 を抜くだけでバックアップが出来んくなりよった。
独自調査の結果ブラウザで index.m3u8 アドレスを発給しよる時間とユーザーエージェント及びリファラーで紐づけされ、アドレス発給から8時間以内に無効となる改変が有ったようじゃ。
work shop
用意する物
ブラウザ:Firefox -> なんでもエエのじゃが「開発ツール」的なプラグインで m3u8 がスニッフィング出来よる事
https://twitcasting.tv/*/movie/708959996
この場合、ブラウザを起動しよったら、f12 キーを押してパケット解析出来よる状況にさせてから、url をぶち込む。
*.m3u8 の url が表示されよるトコにマウス持っていきよって、右クリック→コピー→fetchとしてコピーをクリック。
await fetch("https://dl01.twitcasting.tv/tc.vod/v/708959996.0.2-1636474115-1636502915-a59e5041-2a48848310a33fe3/fmp4/index.m3u8", {
"credentials": "omit",
"headers": {
"User-Agent": "Mozilla/5.0 (X11; FreeBSD amd64; rv:87.0) Gecko/20100101 Firefox/87.0",
"Accept": "*/*",
"Accept-Language": "ja,en-US;q=0.7,en;q=0.3",
"Sec-Fetch-Dest": "empty",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Site": "same-site"
},
"referrer": "https://twitcasting.tv/",
"method": "GET",
"mode": "cors"
});
必要な情報は揃ったけ、あとは ffmpeg にぶち込むのじゃが、仕様で header が複数行書けんけ、ユーザーエージェントとリファラーが同時に指定出来んけ、バッチファイルをでっち上げよる事で複数行の header が渡せられるんじゃ。
@echo off
setlocal EnableDelayedExpansion
set LF=^
ffmpeg -headers "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0"!LF!"Referer: https://twitcasting.tv/" -i "https://dl01.twitcasting.tv/tc.vod/v/708959996.0.2-1636471783-1636500583-a59e5041-b30b18da6965929a/fmp4/index.m3u8" -c copy 708959996.mp4
exit
ちなみに、set LF=^ から改行が2行有るのじゃが、これは御呪いじゃけ端折らんコト!
これで、バックアップが出来る筈じゃ👏
index.m3u8 の url 法則(みたいなん)
/tc.vod/v/708959996.0.2-1636471783-1636500583-a59e5041-b30b18da6965929a/fmp4/index.m3u8
セパレータが「-」で
/tc.vod/v/ の次に始まる .0.2 までの数字が、再生ページの url /*/movie/708959996 の数字(IDと思われる)と同一じゃ。
その次の二つがタイムスタンプで unixtime 表記で記述されちょって index.m3u8 取得しよった時間と、その8時間後が記述されよる。
% env TZ=JST-9 date -jr1636474115
2021年 11月10日 水曜日 01時08分35秒 JST
% env TZ=JST-9 date -jr1636502915
2021年 11月10日 水曜日 09時08分35秒 JST
残りの16進数は内部管理用のハッシュ値と思われる。