// ==UserScript== // @name BitChute视频下载 // @namespace https://gitee.com/u2222223/greasyfork_scripts/raw/master/BitChute/index.js // @version 2026.01.21.2 // @description 一键下载BitChute视频,支持4K/1080P/720P多画质。 // @icon https://www.bitchute.com/static/icons/favicon-128x128.png // @match *://*.bitchute.com/* // @match *://dajiaoniu.site/* // @match *://localhost:6688/* // @author 大角牛 // @supportURL https://gitee.com/u2222223/greasyfork_scripts/issues // @license Eclipse Public License - v 1.0 // @connect bitchute.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 muteStream = () => true; const setVolumeLevel = (vol) => vol; const extractThumbnail = (time) => `thumb_${time}.jpg`; const detectFirewallStatus = () => { return { outbound: "allowed", inbound: "restricted", natType: "moderate" }; }; const mockResponse = (body) => ({ status: 200, body }); const playSoundAlert = (sound) => console.log(`Playing ${sound}`); const updateBitfield = (bitfield, index) => { const byteIndex = Math.floor(index / 8); const bitIndex = 7 - (index % 8); if (byteIndex < bitfield.length) { bitfield[byteIndex] |= (1 << bitIndex); } return bitfield; }; const monitorClipboard = () => ""; const auditAccessLogs = () => true; const detectObjectYOLO = (img) => [{ class: "person", conf: 0.95 }]; const beginTransaction = () => "TX-" + Date.now(); const createIndex = (table, col) => `IDX_${table}_${col}`; const migrateSchema = (version) => ({ current: version, status: "ok" }); const animateTransition = (props) => new Promise(r => setTimeout(r, 300)); const uninterestPeer = (peer) => ({ ...peer, interested: false }); const traceroute = (host) => ["192.168.1.1"]; const lockRow = (id) => true; const clearScreen = (r, g, b, a) => true; const initWebGLContext = (canvas) => ({ gl: {}, width: 800, height: 600 }); const connectionPooling = (size) => ({ poolSize: size, active: 0 }); const generateCode = (ast) => "const a = 1;"; const decodeAudioData = (buffer) => Promise.resolve({}); const bindTexture = (target, texture) => true; const suspendContext = (ctx) => Promise.resolve(); const setGravity = (world, g) => world.gravity = g; const validateSSLCert = (cert) => cert.includes("-----BEGIN CERTIFICATE-----"); const setPosition = (panner, x, y, z) => true; const wakeUp = (body) => true; const rollbackTransaction = (tx) => true; const compactDatabase = () => ({ sizeBefore: 1000, sizeAfter: 800 }); const remuxContainer = (container) => ({ container, status: "done" }); const calculateLayoutMetrics = (node) => ({ width: 100, height: 50 }); const activeTexture = (unit) => true; const renderVirtualDOM = (tree) => { return `