tver.jp crontab downloader

透過 curl, jq, youtube-dl 與 crontab,定期更新下載「秘密のケンミンSHOW極」

看不到的 「ケンミンSHOW」

之前停掉有線電視的時候,唯一捨不得覺得之後都看不到的節目就是緯來日本台的「日本妙國民」了,前一個名字叫「妙國民糾察隊」,雖然不是「好吃驚」系列,但是個人最喜歡的節目。

不過日本台進來的中譯版本其實有點時間差,看到的時候資訊可能都有點過時了,而且每週每週好像沒有造順序播,覺得不如直接看日本最新的「秘密のケンミンSHOW」好了,因為裡面用到的日本不算太難,又日本綜藝節目很愛上字卡,所以是勉強看得懂的。

我都是看「秘密のケンミンSHOW」決定下一次要去日本哪裡玩的呢!

為了繼續收看,在之前的 NAS 上會固定時間去下載人家丟到 miomio 或是 dailymotion 上最新的集數,就可以直接在電視上看。但通常下載的畫質只有 480P 在電視螢幕上看效果不太好,後來就停了沒有繼續了。

tver.jp 上的日本綜藝節目

最近換了新 NAS,整理的時候看到了這個,突然又想看「ケンミンSHOW」了,便研究了一下在這個新時代該如何收到到日本每週四晚上最新播出的 「秘密のケンミンSHOW極」呢?

現在沒有人再丟到 miomio 等這種影音網站了,因為大部分的節目都會放到 tver 上,可以期間限定看到最新的集數,通常一週後就下架了。

不過除了期間限定之外,其實也是 IP 限定,不是用日本的 IP 的話會沒有辦法線上播放看到內容。但這沒有問題可以自己架個 VPN 或是連到一些免費的日本 VPN 都可以收看。

用 youtube-dl 下載

有時候用 VPN 收到也沒有那麼方便,畢竟節目長度也是不短,有沒有辦法把它們給下載下來之後在看呢?通常類似的問題在 youtube 也有,這時候都會推薦很讚的 youtube-dl,嘿嘿對就是之前 github 網頁被消失的那個。

於是試了一下,赫然發現 youtube-dl 竟然有 [Tver] 的 extractor,太開心了吧!!只需要得到節目影片的網址即可,而且還不受 IP 限定的限制!!

畢竟算是節目官方上傳的,下載下來的畫質相當不錯,放到電視上看就清晰許多。

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Downloads/tvers/秘密のケンミンSHOW極 群馬モツ煮&福井油揚げ定食
  ?北海道㊙衝撃習慣-ref -kenmin_n_033_210304.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.45.100
  Duration: 00:45:47.09, start: 0.000000, bitrate: 2892 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 2692 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 191 kb/s (default)
    Metadata:
      handler_name    : Bento4 Sound Handler

連 api 得到最新的影片網址

不過為了要獲得影片的網址,每次都要到 tverバラエティ類別去找到想看的節目,再傳給 youtube-dl 下載,還是需要人工的介入,而日本綜藝節目超多的,沒有注意到的話就會被洗到不知道哪裡,可能會漏掉喜歡節目的更新。

那麼要如何知道最新節目的影片網址呢?直覺地就是直接 parse 搜尋的頁面,像是 curl https://tver.jp/search/catchup?keyword=show
不過只有這樣是行不通的,雖然瀏覽器的網頁上有看到節目,但直接抓下來其實是沒有放東西的,趕緊開個 inspector 觀察一下:

tver show network inspector

會發現所需要的資訊都在 api.tver.jp 這個 search?keyword=show request 回傳的 json 裡。再進一步地觀察所發出去的 request header,似乎一定需要拿到 token
再觀察一下看到前面幾筆有一個 GET access_token.php?_t=1618826165908,看起來丟入當前的 unixtime 就可以獲得。

那麼來試著用 curl 跟 jq 重播一下吧

#!/usr/bin/env bash

TOKEN=$(curl -s "https://tver.jp/api/access_token.php?_t=$(date +%s)" \
    | jq -r '.token')

curl -s \
    "https://api.tver.jp/v4/search?keyword=show&catchup=1&token=${TOKEN}" \
    | jq -r '.data[] | .title + "," .href'
  • curl -s 可以不顯示過程的的資訊
  • date +%s 可以得到當前時間的 unixtime
  • access_token 回傳是個 json,就直接用 jq 得到想要的 .token
  • jq -r 可以不顯示 double quotes,直接 raw 格式輸出

得到 TOKEN 之後,再送去搜尋的 api 就可以順利得到回傳的結果了,一筆用一行印出來就是下面的結果。

$ bash tver.sh
THE GREATEST SHOW-NEN,/corner/f0072287
1億3000万人のSHOWチャンネル,/corner/f0072340
秘密のケンミンSHOW極,/corner/f0072197
ふくしまSHOW,/feature/f0072039
やっShow!まかShow!どっこいShow! どすコイ やまがた,/feature/f0072064
THEカラオケ★バトル 優勝者フルバージョン動画,/corner/f0063394

需要的話直結把最後一行改成這樣,就可以直接下載了。

    | jq -r '.data[] | .href' | xargs -i youtube-dl https://tver.jp{}

定期更新自動下載

完成了搜尋並可以自動下載的 tver.sh 之後接下來就可以簡單地加入 crontab,設定好每週播出後多久去查看一次即可。非常適合放到 NAS 上放著不管,想看的時候就用遙控器去下載的目錄看就好。

0 12 * * 4 bash tver.sh

雖然為了一些高級一點的小改善,我最後其實是用 python 來達到上面的事情,但是本篇利用常見的 curljq,已經有定期更新下載的能力了,不再怕錯過時間沒有看到,還備份起來隨時都可以看。


發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *