您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Picks a random movie from the Plex library on localhost and displays additional information
当前为
// ==UserScript== // @name Plex Random Movie Picker // @namespace https://greasyfork.org/en/users/247131 // @author ALi3naTEd0 // @version 1.3 // @license MIT // @description Picks a random movie from the Plex library on localhost and displays additional information // @match http://localhost/* // @grant none // ==/UserScript== (function() { 'use strict'; // Create button for new random selection const button = document.createElement("button"); button.innerText = "Pick Random Movie"; button.style.position = "fixed"; button.style.top = "20px"; // Space from the top button.style.left = "50%"; button.style.transform = "translateX(-50%)"; button.style.padding = "10px 20px"; button.style.fontSize = "16px"; button.style.zIndex = 1000; button.onclick = fetchRandomMovie; document.body.appendChild(button); async function fetchRandomMovie() { try { // Replace with your Plex token const token = "Kbx3LfZzfsM9XkRzPqk9"; const url = "http://localhost:32400/library/sections/1/all?X-Plex-Token=" + token; const response = await fetch(url); const data = await response.text(); const parser = new DOMParser(); const xmlDoc = parser.parseFromString(data, "text/xml"); // Get all movies const movies = xmlDoc.getElementsByTagName("Video"); if (movies.length === 0) { alert("No movies found."); return; } // Pick a random movie const randomIndex = Math.floor(Math.random() * movies.length); const randomMovie = movies[randomIndex]; // Retrieve movie details const title = randomMovie.getAttribute("title"); const year = randomMovie.getAttribute("year"); const durationMs = randomMovie.getAttribute("duration"); const duration = durationMs ? Math.round(durationMs / 60000) + " mins" : "Unknown"; // Construct IMDb search URL const imdbSearchUrl = `https://www.imdb.com/find?q=${encodeURIComponent(title + " " + year)}&s=tt`; // Create custom dialog to display movie details const dialog = document.createElement("div"); dialog.style.position = "fixed"; dialog.style.top = "50%"; dialog.style.left = "50%"; dialog.style.transform = "translate(-50%, -50%)"; dialog.style.backgroundColor = "#fff"; dialog.style.border = "2px solid #ccc"; dialog.style.padding = "20px"; dialog.style.zIndex = 1001; dialog.style.boxShadow = "0 4px 8px rgba(0,0,0,0.2)"; dialog.style.width = "300px"; dialog.style.textAlign = "center"; const message = document.createElement("p"); message.innerText = `Title: ${title}\nYear: ${year}\nDuration: ${duration}`; dialog.appendChild(message); const imdbLink = document.createElement("a"); imdbLink.href = imdbSearchUrl; imdbLink.innerText = "View on IMDb"; imdbLink.target = "_blank"; // Open in a new tab imdbLink.style.display = "block"; imdbLink.style.marginTop = "10px"; dialog.appendChild(imdbLink); // Create a close button const closeButton = document.createElement("button"); closeButton.innerText = "Close"; closeButton.onclick = () => { document.body.removeChild(dialog); }; closeButton.style.marginTop = "10px"; dialog.appendChild(closeButton); document.body.appendChild(dialog); } catch (error) { console.error("Error fetching movie:", error); alert("Error fetching movie."); } } })();