Greasy Fork is available in English.

小红书倍速增强

为小红书网页端播放器增加更多倍速选项,滚动调整菜单高度

// ==UserScript==
// @name         小红书倍速增强
// @namespace    http://tampermonkey.net/
// @version      0.0.2
// @description  为小红书网页端播放器增加更多倍速选项,滚动调整菜单高度
// @author       zzx114
// @match        *://www.xiaohongshu.com/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // 等待播放器加载完成
    const waitForPlayer = setInterval(() => {
        const playbackRateList = document.querySelector('xg-playbackrate ul');
        if (playbackRateList) {
            clearInterval(waitForPlayer);
        const playbackRateList = document.querySelector('xg-playbackrate ul');
              playbackRateList.style.height = 'auto'; // 或设置具体像素值
              playbackRateList.style.overflowY = 'auto'; // 超出部分显示滚动条
            // 添加新的倍速选项
            const newSpeeds = [
                { cname: '3', text: '3x' },
                { cname: '4', text: '4x' },
            ];

            // 将新选项插入到列表的最前面
            newSpeeds.forEach(speed => {
                const li = document.createElement('li');
                li.setAttribute('cname', speed.cname);
                li.className = '';
                li.textContent = speed.text;
                playbackRateList.insertBefore(li, playbackRateList.firstChild);
            });

            // 更新点击事件处理
            playbackRateList.querySelectorAll('li').forEach(li => {
                li.addEventListener('click', function() {
                    // 移除所有li的selected类
                    playbackRateList.querySelectorAll('li').forEach(item => {
                        item.classList.remove('selected');
                    });
                    // 为当前点击的li添加selected类
                    this.classList.add('selected');

                    const speed = parseFloat(this.getAttribute('cname'));
                    const video = document.querySelector('video');
                    if (video) {
                        video.playbackRate = speed;
                    }
                });
            });
        }
    }, 500);
})();