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

2021/3/9 警告
Youtube改版了新功能,現在會自動清空所有非正規網址參數
我已在v9.3修正了這問題,運用到了一個在TamperMonkey v4.12.6121引入的新api
Chrome用戶改裝右側的紅色Tampermonkey Beta
直到v4.12.6121版本成為Chrome的正式版為止

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
    2021/3/9 警告
    Youtube改版了新功能,現在會自動清空所有非正規網址參數
    我已在v9.3修正了這問題,運用到了一個在TamperMonkey v4.12.6121引入的新api
    Chrome用戶改裝右側的紅色Tampermonkey Beta
    直到v4.12.6121版本成為Chrome的正式版為止
  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

參數

  • 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=NotSongs&shuffle=1
RadioQTama 廣播 https://www.youtube.com/?startplaylist&playlistinclude=RadioQTama
伊冬ユナ 全歌單循序 https://www.youtube.com/?startplaylist&playlistinclude=ItouYuna&playlistexclude=NotSongs
伊冬ユナ 全歌單隨機 https://www.youtube.com/?startplaylist&playlistinclude=ItouYuna&playlistexclude=NotSongs&shuffle=1
羽宮くぅ 全歌單循序 https://www.youtube.com/?startplaylist&playlistinclude=HaneMiya&playlistexclude=NotSongs
羽宮くぅ 全歌單隨機 https://www.youtube.com/?startplaylist&playlistinclude=HaneMiya&playlistexclude=NotSongs&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: GoogleDrive:

字幕

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

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

沒有留言:

張貼留言