您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
play video with Potplayer
当前为
// ==UserScript== // @name Jellyfin with Potplayer // @namespace Jellyfin with Potplayer by jasmineamber // @version 0.2 // @license MIT // @description play video with Potplayer // @author jasmineamberr 原作者:Tccoin https://github.com/tccoin/Jellyfin-Potplayer // @match http://192.168.2.21:8096/web/index.html // ==/UserScript== (function() { 'use strict'; let jellyfin_url = "http://192.168.2.21:8096" let api_key = "f3ed4fdbc14042b4b8a2a87291726b2f" let openPotplayer = async (itemid) => { //let userid = (await ApiClient.getCurrentUser()).Id; let url = `${jellyfin_url}/Items/${itemid}/Download?api_key=${api_key}` window.open('potplayer://' + url) // ApiClient.getItem(userid, itemid).then(r => { // if (r.Path) { // let path = r.Path.replace(/\\/g, '/'); // //path = path.replace('D:', 'Z:'); // console.log(path); // window.open('potplayer://' + path) // } else { // ApiClient.getItems(userid, itemid).then(r => openPotplayer(r.Items[0].Id)); // } // }) }; let bindEvent = async () => { let buttons = []; let retry = 6 + 1; while (buttons.length == 0 && retry > 0) { await new Promise(resolve => setTimeout(resolve, 2000)); buttons = document.querySelectorAll('[data-mode=play],[data-mode=resume],[data-action=resume]'); retry -= 1; } for (let button of buttons) { let nextElementSibling = button.nextElementSibling; let parentElement = button.parentElement; let outerHTML = button.outerHTML; button.parentElement.removeChild(button); let newButton = document.createElement('button'); if (nextElementSibling) { parentElement.insertBefore(newButton, nextElementSibling); } else { parentElement.append(newButton); } newButton.outerHTML = outerHTML; } buttons = document.querySelectorAll('[data-mode=play],[data-mode=resume]'); for (let button of buttons) { button.removeAttribute('data-mode'); button.addEventListener('click', e => { e.stopPropagation(); let itemid = /id=(.*?)&serverId/.exec(window.location.hash)[1]; openPotplayer(itemid); }); } buttons = document.querySelectorAll('[data-action=resume]'); for (let button of buttons) { button.removeAttribute('data-action'); button.addEventListener('click', e => { e.stopPropagation(); let item = e.target; while (!item.hasAttribute('data-id')) { item = item.parentNode } let itemid = item.getAttribute('data-id'); openPotplayer(itemid); }); } }; let lazyload = async () => { let items = document.querySelectorAll('[data-src].lazy'); let y = document.scrollingElement.scrollTop; let intersectinglist = []; for (let item of items) { let windowHeight = document.body.offsetHeight; let itemTop = item.getBoundingClientRect().top; let itemHeight = item.offsetHeight; if (itemTop + itemHeight >= 0 && itemTop <= windowHeight) { intersectinglist.push(item); } } for (let item of intersectinglist) { item.style.setProperty('background-image', `url("${item.getAttribute('data-src')}")`); item.classList.remove('lazy'); item.classList.remove('lazy-hidden'); item.removeAttribute('data-src'); }; }; // window.addEventListener('scroll', lazyload); window.addEventListener('viewshow', async() => { await bindEvent(); window.addEventListener('hashchange', bindEvent); lazyload() }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址