用腳本插件自動連續播放NicoNico多個分頁

最近覺得vibe coding真的滿扯的
因為有特別需求叫AI弄了個番茄鐘的小工具
用我沒碰過的語言在我沒碰過的環境下 我沒動半行code兩小時就搞出成品出來
沒有到網路上宣稱什麼一行prompt就搞定
應該是個簡單的project 但中間還是出一堆bug要跟AI來來回回
但這成果也是夠扯的了

言歸正傳 我本來也沒打算弄這個腳本的
但就突然想要躺在床上刷曲 那就需要讓他能結束一首時自動跳轉下一個分頁
隨意的把這個問題丟給GPT 他就幫我生了這個腳本
而且一次到位 只花幾秒鐘這功能就出現在我的瀏覽器理了
我覺得算是實用的東西所以分享
但不到完美 使用前還是要了解一下

注意事項

  • 畢竟是AI生的code,我不懂語法也沒有檢驗過裡面到底怎麼運作的,使用前先斟酌
  • 他會自動關閉分頁跟自動播放,某種層面上也是讓腳本幫你操作瀏覽器,有一定風險
  • 他是偵測影片正篇內容是否播放完畢,我嘗試手動從進度條跳轉到最後面贊助的那段,結束後並不會自動關閉分頁,所以使用上最好還是讓他自然播放就好
  • 我在Vivaldi上的tampermonkey可用,其他瀏覽器或greasemonkey應該需要一些修改,待測試

使用說明

  • tampermonkey安裝和權限設定不贅述,直接新增腳本就可以了
  • 新增一個視窗,把想連續播放的影片分頁開一開,在影片播放完的時候腳本會自動關閉分頁然後會依照瀏覽器行為跳到下一個分頁,然後腳本會自動播放影片
  • 注意跳nico分頁時如果那個分頁在背景的話我在vivaldi裡是不會自動播放,不知道是省資源還是他預設播放行為,因此才需要新增一個視窗開分頁確保那個分頁都是在最前方
  • 中間有想跳過的歌就手動關掉分頁就可以了,然後建議平常把這個腳本關掉不然每次看完影片他都會自動幫你關分頁

腳本code

// ==UserScript==
// @name         NicoNico Auto Play & Close on End
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  分頁變成目前頁時自動播放,播完自動關掉分頁
// @match        https://www.nicovideo.jp/watch/*
// @grant        GM_closeTab
// ==/UserScript==

(function () {
    'use strict';

    let initialized = false;

    function init() {
        if (initialized) return;
        const video = document.querySelector('video');
        if (!video) {
            // 播放器可能還沒載入好,稍後再試
            setTimeout(init, 1000);
            return;
        }
        initialized = true;

        // 分頁被看到的時候,自動播放一次
        function tryPlay() {
            if (document.visibilityState !== 'visible') return;
            if (video.paused) {
                video.play().catch(() => {
                    // 若被瀏覽器的自動播放政策擋掉,就只能手動按一次開始
                });
            }
        }

        // 當影片播完,就關掉這個分頁
        video.addEventListener('ended', () => {
            if (typeof GM_closeTab === 'function') {
                GM_closeTab();
            } else {
                // 沒有 GM_closeTab 的話,window.close() 只有在此視窗是 script 開啟時才有效
                window.close();
            }
        });

        // 目前頁面如果已經是可見,就試著播放
        if (document.visibilityState === 'visible') {
            tryPlay();
        }

        // 當分頁從背景切換到前景時,再試著播放
        document.addEventListener('visibilitychange', tryPlay);
    }

    // 頁面載入後跑一次 init
    window.addEventListener('load', () => {
        setTimeout(init, 1000);
    });
})();

可能改善方向(但因為很懶大概不會再改版了

  • 做相容firefox的版本
  • 看看可以不用特別另外開個視窗讓他在背景分頁也能自動播放
  • 看看要不要弄個快捷鍵什麼的能自動關閉播放的分頁來切歌或是加入清單之類的
  • 他code有個warning是有關閉個function沒有定義,不知道那是什麼情況用的但使用上感覺不影響功能
  • 其實一直想要個功能是讓他能自動從超檢索撈連結沒有被開過的新曲然後開啟分頁,配上這個腳本的話就真的完成刷曲全自動化了

留言

這個網誌中的熱門文章

小魔女DoReMi 第二部+劇場版