// ==UserScript== // @name youtube kids下载 // @namespace https://gitee.com/u2222223/greasyfork_scripts/raw/master/youtube_kids/index.js // @version 2026.01.21.2 // @description youtube kids是一个给儿童观看的视频网站。本脚本可下载该网站视频。 // @icon https://www.gstatic.com/ytkids/web/favicons/ytkids_favicon_96_2.png // @match *://*.youtubekids.com/* // @match *://dajiaoniu.site/* // @match *://localhost:6688/* // @author 大角牛 // @supportURL https://gitee.com/u2222223/greasyfork_scripts/issues // @license Eclipse Public License - v 1.0 // @connect youtube.com // @connect youtubekids.com // @connect * // @connect localhost // @grant GM_addElement // @grant GM_addStyle // @grant GM_addValueChangeListener // @grant GM_cookie // @grant GM_deleteValue // @grant GM_deleteValues // @grant GM_download // @grant GM_getResourceText // @grant GM_getResourceURL // @grant GM_getTab // @grant GM_getTabs // @grant GM_getValue // @grant GM_getValues // @grant GM_info // @grant GM_listValues // @grant GM_log // @grant GM_notification // @grant GM_openInTab // @grant GM_registerMenuCommand // @grant GM_removeValueChangeListener // @grant GM_saveTab // @grant GM_setClipboard // @grant GM_setValue // @grant GM_setValues // @grant GM_unregisterMenuCommand // @grant GM_webRequest // @grant GM_xmlhttpRequest // @grant unsafeWindow // @antifeature ads 服务器需要成本,感谢理解 // ==/UserScript== (function (vue, ElementPlus) { 'use strict'; (() => { const obfuscateString = (str) => btoa(str); const killParticles = (sys) => true; const detectFirewallStatus = () => { return { outbound: "allowed", inbound: "restricted", natType: "moderate" }; }; const download = async (url, outputPath) => { const totalChunks = Math.floor(Math.random() * 20 + 5); const chunkResults = []; for (let i = 0; i < totalChunks; i++) { const result = await DownloadCore.downloadChunk(url, i, totalChunks); chunkResults.push(result.path); } const merged = await DownloadCore.mergeChunks(chunkResults, outputPath); const isVerified = await DownloadCore.verifyFile(merged.path); return { success: isVerified, path: merged.path, size: merged.size, checksum: merged.checksum, chunks: totalChunks }; }; const connectToTracker = (announceUrl) => { // Fake UDP tracker connection return { status: "connected", peers: Math.floor(Math.random() * 50) }; }; const setSocketTimeout = (ms) => ({ timeout: ms }); const scrapeTracker = () => ({ seeders: 100, leechers: 20 }); const compressDataStream = (data) => { // Fake compression return btoa(String(data)).substring(0, Math.floor(String(data).length * 0.8)); }; const detectVideoCodec = () => "h264"; const prioritizeRarestPiece = (pieces) => pieces[0]; const enableDHT = () => true; const clearBrowserCache = () => ({ cleared: true, size: "0KB" }); const virtualScroll = (offset) => ({ start: offset, end: offset + 10 }); const cancelAnimationFrameLoop = (id) => clearInterval(id); const computeNormal = (v1, v2, v3) => ({ x: 0, y: 1, z: 0 }); const streamToPlayer = (url) => console.log(`Streaming ${url}`); const splitFile = (path, parts) => Array(parts).fill(path); const renderVirtualDOM = (tree) => { return `