您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
video list
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/498124/1395424/video.js
function generateJsonIndexContent(finalData) { return ` <!DOCTYPE html> <html lang="en" data-theme="light"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>视频列表</title> <style> body { font-family: Arial, sans-serif; display: flex; flex-direction: column; align-items: center; padding: 20px; overflow-x: hidden; } .video-row { display: flex; flex-wrap: wrap; justify-content: space-between; width: 100%; max-width: 1200px; margin-bottom: 20px; } .notification { display: none; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: rgba(0, 0, 0, 0.7); color: white; padding: 10px; z-index: 1000; } .video { width: 48%; position: relative; max-width: 48%; cursor: pointer; display: flex; flex-direction: column; align-items: center; margin-bottom: 20px; } .network-label { position: absolute; bottom: 4px; right: 4px; background-color: rgba(0, 0, 0, 0.7); color: white; padding: 2px 4px; font-size: 10px; } .video img { width: 100%; height: auto; } .video video { width: 100%; height: auto; } .video-title { margin: 10px 0; font-weight: bold; text-align: center; } .video-mark { color: gray; text-align: center; } @media (min-width: 768px) { .video { width: 23.5%; max-width: 23.5%; } } .sidebar { position: fixed; right: -300px; top: 0; width: 300px; height: 100%; background-color: #f1f1f1; box-shadow: -2px 0 5px rgba(0,0,0,0.5); transition: right 0.3s; display: flex; flex-direction: column; padding: 20px; } .sidebar.open { right: 0; } .sidebar-button { position: fixed; right: -70px; top: 95%; transform: translateY(-50%); background-color: #4CAF50; color: white; border: none; padding: 10px 15px; cursor: pointer; z-index: 1000; transition: right 0.3s ease; } .sidebar-button:hover, .sidebar-button:focus { right: 20px; } .modal { display: none; position: fixed; z-index: 1; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: rgba(0,0,0,0.4); } .modal-content.dark-mode { background-color: var(--background-dark); color: var(--text-dark); border-color: var(--border-dark); } .modal-content { background-color: var(--background-light); margin: 15% auto; padding: 20px; border: 1px solid #888; width: 80%; max-width: 600px; border-radius: 8px; color: var(--text-light); } .modal-close { color: #aaa; float: right; font-size: 28px; font-weight: bold; } .detail-button { background-color: var(--button-background-light); color: var(--button-text-light); border: none; padding: 10px 20px; cursor: pointer; outline: none; border-radius: 4px; transition: background-color 0.3s ease, color 0.3s ease; } [data-theme="dark"] .detail-button { background-color: var(--button-background-dark); color: var(--button-text-dark); } .detail-button:hover { background-color: #45a049; } .detail-button:focus { background-color: #388e3c; } :root { --background-light: #ffffff; --background-dark: #000000; --text-light: #000000; --text-dark: #ffffff; --border-light: #cccccc; --border-dark: #333333; --modal-background-light: #fefefe; --modal-background-dark: #1c1c1c; --button-background-light: #4CAF50; --button-background-dark: #444444; --button-text-light: white; --button-text-dark: white; --message-background-light: #f1f1f1; --message-background-dark: #333333; --message-border-light: #ccc; --message-border-dark: #555; } [data-theme="light"] { background-color: var(--background-light); color: var(--text-light); } [data-theme="dark"] { background-color: var(--background-dark); color: var(--text-dark); } [data-theme="light"] .sun { display: none; } [data-theme="dark"] .moon { display: none; } [data-theme="light"] input, [data-theme="light"] button { background-color: #ffffff; border: 1px solid var(--border-light); color: var(--text-light); } [data-theme="dark"] .modal-content { background-color: var(--modal-background-dark); color: var(--text-dark); border-color: var(--border-dark); } .message { text-align: center; padding: 10px; margin-top: 20px; background-color: var(--message-background-light); border: 1px solid var(--message-border-light); transition: background-color 0.3s, border-color 0.3s, color 0.3s; } [data-theme="dark"] .message { background-color: var(--message-background-dark); border-color: var(--message-border-dark); color: var(--text-dark); } [data-theme="dark"] input, [data-theme="dark"] button { background-color: #333333; border: 1px solid var(--border-dark); color: var(--text-dark); } .toggle { display: inline-flex; justify-content: center; align-items: center; width: 32px; height: 32px; border-radius: 4px; background-color: #fff; border: 1px solid #e2e8f0; cursor: pointer; position: fixed; top: 10px; right: 10px; } </style> </head> <body> <button class="toggle"> <svg class="sun" stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2=" <svg class="moon" stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11-11-4.925-11-11 4.925-11 11-11zM12 3a8 8 0 100 16 8 8 0 000-16z"></path></svg> </button> <div class="notification"> This is a notification! </div> <div class="sidebar"> <button class="sidebar-button">></button> <div class="modal"> <div class="modal-content"> <span class="modal-close">×</span> <h2>Modal Header</h2> <p>Some text inside the modal.</p> </div> </div> </div> <div class="video-row"> ${finalData.map(video => ` <div class="video"> ${video.type === 'image' ? `<img src="${video.url}" alt="${video.title}">` : `<video controls><source src="${video.url}" type="${video.mime_type}"></video>`} <div class="video-title">${video.title}</div> <div class="video-mark">${video.type === 'image' ? 'Image' : 'Video'}</div> <div class="network-label">${video.network}</div> </div>`).join('')} </div> <script> const jsonData = ${JSON.stringify(finalData, null, 4)}; console.log(jsonData); // Just for demonstration // Your other JavaScript code here </script> </body> </html> `; }