[UserScript] Youtube影片截選播放清單 (Youtube Clip Playlist)

前言


GitHub tag GitHub last commit (branch) GitHub Tampermonkey YouTube JavaScript

這是截選播放清單功能,專門設計來聽Vtuber的歌枠

和看烤肉或剪片相比的優點為

  • 觀看數都會算在VT身上
  • 只要清單化起始/結束時間就完事,比剪片快得多

這是我對於歌回烤肉的程式解


最近迷上幾位歌勢Vtuber,把她們的歌枠影片掛著當作業用BGM
但做為BGM時,穿插在歌曲中間的談話聲總會把我的注意力拉走
後來看到一種標「歌枠切り抜き」的剪片,單純把歌枠中的歌曲剪出 ,這很接近我要的東西
但剪接影片重新上傳,這不是自稱程式設計師的做法 _(:3 ⌒゙)_

我想要的是以包含起始、結束時間之影片段為單位的播放清單

翻了Youtube API,有關「結束時間」的功能只有提供在embed player上頭,所以我最開始是打算寫個網頁
但很快就發現──因為版權關係,有些歌枠影片不開放站外播放,這功能不能由嵌入實現
若限定在Youtube網域執行,那麼就只能從瀏覧器端下手

所以最後就是~~油猴腳本!

安裝步驟

如果是使用Firefox,需要關閉「阻擋媒體自動播放」功能,請參閱:
https://support.mozilla.org/en-US/kb/block-autoplay
  1. 安裝瀏覧器擴充: Tampermonkey
  2. 安裝腳本: Youtube Clip Playlist
  3. 修改Tampermonkey設定,使之每次播放時都會重載歌單
    1. 一般→設定模式: 進階
    2. 外部→更新週期: 永遠
  4. 播放Playlist

參數說明

Youtube網址格式

https://www.youtube.com/watch?
    v=ETjgki1sSgc &
    t=1591 &
    end=1880
&
    shuffle=1 &
    playlistinclude=quon
&
    playlistexclude=member

Google Drive網址格式

https://drive.google.com/file/d/13LaALYNOmdN3GfD7aeKreyzshdKX-Tvz/view?
    t=884 &
    end=1166 &
    shuffle=1 &
    playlistinclude=quon &
    playlistexclude=member

其它網址格式 (目前支援OneDrive、twitcasting)

其它格式是以原網址直接當做VideoID傳入
https://twitcasting.tv/quon01tama/movie/688324697
    t=1470 &
    end=1653 &
    shuffle=1 &
    playlistinclude=twitcasting

參數

  • VideoID: 在Youtube為原生v參數;Google Drive 是在路徑中;其它為原始網址
  • t: 影片播放開始時間
  • end: 在指定秒數停止播放影片
  • shuffle: Playlist隨機播放,1為啟用;0為禁用(等同不傳入) 
  • playlistinclude: 讀入Playlist標籤,可以以「_」底線分隔傳入多個標籤
  • playlistexclude: 排除Playlist標籤,可以以「_」底線分隔傳入多個標籤

詳細功能描述

  • 在設定end後,能在指定秒數停止播放器
  • 若傳入playlistinclude,則只會載入有該標籤的清單
  • 若傳入playlistexclude,則會排除有該標籤的清單,且Exclude優先於Include
  • 隨機功能為建立亂序清單後播放,在所有歌曲都放過一輪後才會再循環
  • 傳入startplaylist參數時會立刻重建亂序清單
  • 支援以鍵盤的媒體按鍵(Media Keys)操作「下一首
  • 遮蔽「影片已暫停,要繼續觀賞嗎?」功能

啟動連結

目前非歌曲的內容只有「RadioQTama廣播」,其它人可以省略NotSongs排除
說明 連結
全清單 循序 https://www.youtube.com/?startplaylist
全清單 隨機 https://www.youtube.com/?startplaylist&shuffle=1
久遠たま 全歌單循序 https://www.youtube.com/?startplaylist&playlistinclude=tama&playlistexclude=NotSongs
久遠たま 排除會限 https://www.youtube.com/?startplaylist&playlistinclude=tama&playlistexclude=member_NotSongs
久遠たま 全歌單隨機 https://www.youtube.com/?startplaylist&playlistinclude=tama&playlistexclude=NotSongs&shuffle=1
久遠たま twitcasting歌單 https://www.youtube.com/?startplaylist&playlistinclude=twitcasting
RadioQTama 廣播 https://www.youtube.com/?startplaylist&playlistinclude=RadioQTama
須多夜花 全歌單循序 https://www.youtube.com/?startplaylist&playlistinclude=yoruka
須多夜花 全歌單隨機 https://www.youtube.com/?startplaylist&playlistinclude=yoruka&shuffle=1
間取かける 全歌單循序 https://www.youtube.com/?startplaylist&playlistinclude=kakeru
間取かける 全歌單隨機 https://www.youtube.com/?startplaylist&playlistinclude=kakeru&shuffle=1
伊冬ユナ 全歌單循序 https://www.youtube.com/?startplaylist&playlistinclude=ItouYuna
伊冬ユナ 全歌單隨機 https://www.youtube.com/?startplaylist&playlistinclude=ItouYuna&shuffle=1
羽宮くぅ 全歌單循序 https://www.youtube.com/?startplaylist&playlistinclude=HaneMiya
羽宮くぅ 全歌單隨機 https://www.youtube.com/?startplaylist&playlistinclude=HaneMiya&shuffle=1
町田ちま 全歌單循序 https://www.youtube.com/?startplaylist&playlistinclude=MachitaChima
町田ちま 全歌單隨機 https://www.youtube.com/?startplaylist&playlistinclude=MachitaChima&shuffle=1
牧野白 全歌單循序 https://www.youtube.com/?startplaylist&playlistinclude=MakinoShiro
牧野白 全歌單隨機 https://www.youtube.com/?startplaylist&playlistinclude=MakinoShiro&shuffle=1

TamperMonkey UI選單

啟動UI

在Youtube網站下點開TamperMonkey選單,單擊「Start Playlist」
這相當於 啟動連結—全清單循序 (https://www.youtube.com/?startplaylist)

禁用歌單功能

在個別播放清單上單擊可以啟用、禁用該播放清單
若你完全不聽廣播,可以把RadioQTamaList禁用,再去使用全循序/隨機播放功能

歌單(Playlist)

目前內建久遠たま須多夜花間取かける伊冬ユナ羽宮くぅ町田ちま牧野白的歌單
如果想要參與編寫,請參考此repo的合作模式
PRs Welcome

歌單格式

歌單的格式是JSON with comment
這裡有總表,標示清單名稱、標籤、位置,並載入個別歌單

每個陣列中儲存以下項目: [VideoID, StartTime, EndTime, Title?, SubSrc?]

  • VideoID: 必須用引號包住,為字串型態
  • StartTime: 必須是非負數,為數字型態。如果要從頭播放,輸入0
  • EndTime: 必須是非負數,為數字型態。如果要播放至尾,輸入0
  • Title?: 必須用雙引號包住,為字串型態,可選
  • SubSrc?: 必須用雙引號包住,為字串型態,可選
Youtube: OneDrive: twitcasting ツイキャス:

字幕

此工具支援載入WebVTT字幕(.vtt)、ASS字幕(.ass),請將字幕直鏈傳入歌單之SubSrc欄位

我在RadioQTama播放清單中使用了來自アルバート的翻譯字幕,是直接由他的repo取得內容
我使用了一支.Net Core程式Github Workflow做CI
定時由他的gitlab取得ass直鏈,並重寫歌單

沒有留言:

張貼留言