您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Makes Invidious settings persist across instances and in private browsing.
当前为
// ==UserScript== // @name Persistent Invidious Settings // @namespace http://tampermonkey.net/ // @version 1.0 // @description Makes Invidious settings persist across instances and in private browsing. // @author Veeno // @license GPLv3 // @match invidious.snopyta.org/* // @match yewtu.be/* // @match invidious.kavin.rocks/* // @match vid.puffyan.us/* // @match invidious.namazso.eu/* // @match inv.riverside.rocks/* // @match yt.artemislena.eu/* // @match invidious.flokinet.to/* // @match invidious.esmailelbob.xyz/* // @match inv.bp.projectsegfau.lt/* // @match y.com.sb/* // @match invidious.tiekoetter.com/* // @match invidious.nerdvpn.de/* // @match inv.vern.cc/* // @match invidious.slipfox.xyz/* // @match watch.thekitty.zone/* // @match invidious.dhusch.de/* // @match inv.odyssey346.dev/* // @match invidious.baczek.me/* // @match invidious.weblibre.org/* // @match invidious.privacydev.net/* // @match yt.funami.tech/* // @match invidious.drivet.xyz/* // @match vid.priv.au/* // @match invidious.lidarshield.cloud/* // @match invidious.silur.me/* // @match iv.melmac.space/* // @match iv.ggtyler.dev/* // @match invidious.epicsite.xyz/* // @match invidious.sethforprivacy.com/* // @match yt.oelrichsgarcia.de/* // @icon https://invidious.io/invidious-colored-vector.svg // @run-at document-start // @grant GM_getValue // @grant GM_setValue // ==/UserScript== /* jshint esversion: 11 */ (function() { 'use strict'; const domain = location.hostname; const defaultDomainUpToDate = { "invidious.snopyta.org": true, "yewtu.be": true, "invidious.kavin.rocks": true, "vid.puffyan.us": true, "invidious.namazso.eu": true, "inv.riverside.rocks": true, "yt.artemislena.eu": true, "invidious.flokinet.to": true, "invidious.esmailelbob.xyz": true, "inv.bp.projectsegfau.lt": true, "y.com.sb": true, "invidious.tiekoetter.com": true, "invidious.nerdvpn.de": true, "inv.vern.cc": true, "invidious.slipfox.xyz": true, "watch.thekitty.zone": true, "invidious.dhusch.de": true, "inv.odyssey346.dev": true, "invidious.baczek.me": true, "invidious.weblibre.org": true, "invidious.privacydev.net": true, "yt.funami.tech": true, "invidious.drivet.xyz": true, "vid.priv.au": true, "invidious.lidarshield.cloud": true, "invidious.silur.me": true, "iv.melmac.space": true, "iv.ggtyler.dev": true, "invidious.epicsite.xyz": true, "invidious.sethforprivacy.com": true, "yt.oelrichsgarcia.de": true }; const domainUpToDate = GM_getValue("Invidious_DomainUpToDate", defaultDomainUpToDate); function validateCurrentDomain(){ domainUpToDate[domain] = true; GM_setValue("Invidious_DomainUpToDate", domainUpToDate); } function invalidateOtherDomains(){ Object.keys(domainUpToDate).forEach(key => { domainUpToDate[key] = false; }); validateCurrentDomain(); } const defaultSettings = encodeURIComponent(JSON.stringify({ "annotations": false, "annotations_subscribed": false, "autoplay": true, "automatic_instance_redirect": false, "captions": [ "", "", "" ], "comments": [ "youtube", "" ], "continue": false, "continue_autoplay": true, "dark_mode": "", "latest_only": false, "listen": false, "local": false, "watch_history": false, "vr_mode": true, "show_nick": false, "locale": "en-US", "region": "US", "max_results": 40, "notifications_only": false, "player_style": "invidious", "quality": "hd720", "quality_dash": "auto", "default_home": "Popular", "feed_menu": [ "Popular", "Trending" ], "related_videos": true, "sort": "published", "speed": 1, "thin_mode": false, "unseen_only": false, "video_loop": false, "extend_desc": false, "volume": 100, "save_player_pos": false })); const storedSettings = GM_getValue("Invidious_Settings", defaultSettings); const cookieSettings = document.cookie .split("; ") .find((entry) => entry.startsWith("PREFS=")) ?.split("=")[1]; if(cookieSettings && domainUpToDate[domain]){ if(cookieSettings !== storedSettings){ GM_setValue("Invidious_Settings", cookieSettings); invalidateOtherDomains(); } } else{ const date = new Date(); date.setFullYear(date.getFullYear() + 2); document.cookie = "PREFS=" + storedSettings + "; domain=" + domain + "; path=/; expires=" + date.toGMTString() + "; Secure; SameSite=Lax"; validateCurrentDomain(); location.reload(); } })();