您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
关闭抖音弹窗登录,跳过抖音广告和直播,观看直播默认原画
当前为
// ==UserScript== // @name 跳过抖音广告 // @namespace http://greasyfork.icu/zh-CN/users/1034730-%E9%9A%8F%E7%BC%98%E7%8E%A9%E5%AE%B6?locale_override=1 // @version 0.25 // @description 关闭抖音弹窗登录,跳过抖音广告和直播,观看直播默认原画 // @author 随缘玩家 // @license 随缘玩家 // @match https://www.douyin.com/ // @match https://live.douyin.com/* // @grant none // ==/UserScript== (function () { 'use strict'; let url = window.location.host; if (url == "www.douyin.com") { let next; let configxgIcon = [ { name: "图片", option: true, type: "tupian" }, { name: "清屏", option: false, type: "qingping" }, { name: "评论区", option: false, type: "comment" }, { name: "直播", option: true, type: "live" }, { name: "右侧", option: true, type: "right" }, { name: "底部", option: true, type: "bottom" }, { name: "购物", option: true, type: "shopping" }, { name: "提示", option: true, type: "tips" }, { name: "回退", option: true, type: "rollback" }, { name: "屏蔽", option: false, type: "filter" }, ] if (!localStorage.getItem("xg-icon")) { localStorage.setItem("xg-icon", JSON.stringify(configxgIcon)) } else if (JSON.parse(localStorage.getItem("xg-icon")).length != configxgIcon.length) { localStorage.setItem("xg-icon", JSON.stringify(configxgIcon)) } else { configxgIcon = JSON.parse(localStorage.getItem("xg-icon")) } let listModuleContent = ` <div class="userInput"> <div class="choice"> ﹀ </div> <input class="content" type="text"> <div class="confirm"> ✔ </div> </div> <div class="option"></div> <div class="list"> </div></div> `; let listModule = document.createElement("div") listModule.className = "listModule" listModule.innerHTML = listModuleContent let rootvideo = document.querySelector(".YwClj8rK.fullscreen_capture_feedback") let createlistModule = setInterval(() => { if (rootvideo) { clearInterval(createlistModule) rootvideo.appendChild(listModule) } }, 1000) let userValue = listModule.querySelector(".content") let KeywordFiltering = [ { name: "名字", class: "username", data: [] }, { name: "文案", class: "Copywriting", data: [] }, { name: "全选", class: "selectall", data: [] } ] if (!localStorage.getItem("KeywordData")) { localStorage.setItem("KeywordData", JSON.stringify(KeywordFiltering)) } else { KeywordFiltering = JSON.parse(localStorage.getItem("KeywordData")) } for (const item of KeywordFiltering) { let li = document.createElement("li") li.innerText = item.name listModule.querySelector(".option").appendChild(li) let div = document.createElement("div") div.className = item.class listModule.querySelector(".list").appendChild(div) li.onclick = () => { for (const allDiv of listModule.querySelectorAll(".list div")) { allDiv.style.display = "none" } div.style.display = "block" listModule.querySelector(".option").style.display = "none " listModule.querySelector(".choice").innerText = li.innerText listModule.querySelector(".confirm").onclick = () => { if (item.data.includes(userValue.value)) { alert("已存在") return } else if (userValue.value == "") { alert("不允许为空") return } let span = document.createElement("span") span.innerText = userValue.value div.appendChild(span) item.data.push(userValue.value) localStorage.setItem("KeywordData", JSON.stringify(KeywordFiltering)) userValue.value = "" } userValue.onkeydown = (e) => { if (e.keyCode == 13) { listModule.querySelector(".confirm").click() } } } item.data.forEach(subitem => { let span = document.createElement("span") span.innerText = subitem div.appendChild(span) }); div.onclick = (e) => { if (e.target.nodeName === "SPAN") { e.target.remove() item.data = item.data.filter(item => item != e.target.innerText) localStorage.setItem("KeywordData", JSON.stringify(KeywordFiltering)) } } } listModule.querySelector(".choice").onmouseover = () => { listModule.querySelector(".option").style.display = "block " for (const allDiv of listModule.querySelectorAll(".list div")) { allDiv.style.display = "none" } } listModule.querySelector(".option").onmouseleave = () => { listModule.querySelector(".option").style.display = "none " } document.onclick = function () { listModule.style.opacity = 0 setTimeout(() => { listModule.style.display = "none" listModule.querySelector(".choice").innerText = " ﹀ " listModule.querySelectorAll(".list div").forEach(item => { item.style.display = "none" }) }, 300); } listModule.onclick = function (e) { e.stopPropagation() } let observer = new MutationObserver((e) => { e.forEach((i) => { if (i.addedNodes.length > 0 && i.addedNodes[0].className) { let getClass = i.addedNodes[0].classList[0] if (getClass != undefined) { if (getClass == "OFZHdvpl" && document.querySelector('[data-e2e="feed-active-video"] ._QjzkgP3.Vw_S4MTA.isDark') != null && configxgIcon[2].option) { let commentsOff = document.querySelector('[data-e2e="feed-active-video"] ._QjzkgP3.Vw_S4MTA.isDark.z_zS3jcn.dLCldFlr') || document.querySelector('[data-e2e="feed-active-video"] .aDQw7OWI._628BWQES.JFWzESlW.LookModalFrameFast') if (commentsOff) { setTimeout(() => { i.addedNodes[0].querySelector(".pBxTZJeH.Qz1xVpFH.aLzJ7lUV").click() }, 200); } } if (getClass == "gear") { let clear = i.addedNodes[0].querySelectorAll(".virtual .item") if (clear[0] != null && clear[0].classList.length <= 1 && clear[0].querySelectorAll("span")[1] == undefined) { clear[0].click() } if (clear[0].querySelectorAll("span")[1] != undefined && clear[2].classList.length <= 1) { clear[2].click() } if (document.querySelector("[data-e2e='feed-active-video']") && !document.querySelector("[data-e2e='feed-active-video'] [data-peizhi]")) { let config = document.querySelector("[data-e2e='feed-active-video'] .xg-right-grid") let xgIcon = document.createElement("xg-icon") xgIcon.className = "xgplayer-autoplay-setting automatic-continuous" xgIcon.innerHTML = `<div class="xgplayer-icon" data-e2e="video-player-auto-play" data-e2e-state="video-player-auto-playing"><div class="xgplayer-setting-label"><span class="xg-switch-inner"></span></button><span class="xgplayer-setting-title" data-peizhi>配置</span></div></div><div class="xgTips"> </div>` for (const item of configxgIcon) { let icon = `<div class="xgplayer-icon" data-e2e="video-player-auto-play" data-e2e-state="video-player-auto-playing"><div class="xgplayer-setting-label"><button data-type="${item.type}" aria-checked="${item.option}" class="${item.option ? "xg-switch-checked" : ""} xg-switch" aria-labelledby="xg-switch-pip" type="button"><span class="xg-switch-inner"></span></button><span class="xgplayer-setting-title">${item.name}</span></div></div>` let range = document.createRange() let iconitem = range.createContextualFragment(icon) let button = iconitem.querySelector("button"); let xgTips = xgIcon.querySelector(".xgTips") xgTips.style.display = "none" xgTips.style.visibility = "visible" xgTips.style.bottom = 31 + "px" button.onclick = () => { if (item.option == true) { item.option = false button.classList.remove("xg-switch-checked") button.setAttribute("aria-checked", "false") localStorage.setItem("xg-icon", JSON.stringify(configxgIcon)) } else { item.option = true button.classList.add("xg-switch-checked") button.setAttribute("aria-checked", "true") localStorage.setItem("xg-icon", JSON.stringify(configxgIcon)) } } xgIcon.onmouseover = () => { xgTips.style.display = "block" } xgIcon.onmouseleave = () => { xgTips.style.display = "none" } xgTips.onclick = (e) => { e.stopPropagation() let item = e.target if (item.nodeName == "BUTTON") { if (item.dataset.type == "filter") { if (item.ariaChecked == "true") { listModule.style.display = "block" setTimeout(() => { listModule.style.opacity = "1" }, 50); } } } } xgTips.appendChild(iconitem) } config?.appendChild(xgIcon) } } if (getClass == "mPWahmAI") { let loginOff = i.addedNodes[0].querySelector(".box-align-center .dy-account-close") if (loginOff != null) { loginOff.click() } } if (getClass == "xgplayer-playswitch") { i.addedNodes[0].style.opacity = 0 } } } }) }) observer.observe(document, { childList: true, subtree: true }) //广告 let body; let time; let VideoNumber = [] let bodyTime let geteStyle = document.createElement("style") geteStyle.innerText = ` * { margin: 0; padding: 0; } body { background-color: #252526; } input { text-decoration: none; border: none; outline: none; } li { list-style: none; } .listModule { box-sizing: border-box; position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin: auto; width: 500px; height: 300px; background-color: #fff; opacity: 0; border-radius: 25px; padding: 10px; transition: all .3s; display: none; } .userInput { display: flex; justify-content: space-evenly; align-items: center; text-align: center; } .userInput .content { position: relative; background-color: #d3d3d4; width: 400px; height: 35px; font-size: 20px; font-weight: 400; border-radius: 25px; text-align: center; } .choice, .confirm { cursor: pointer; width: 35px; } .option { position: absolute; width: 130px; text-align: left; padding: 10px; display: none; } .option li { padding: 7px 5px; font-size: 13px; cursor: pointer; border-radius: 5px; width: 100px; } .option li:hover, .selected { background-color: #e5e5e5; } .list { width: 400px; margin: 20px auto; } .list div { display: none; padding: 0 0 10px 5px; background-color: #fff; border-radius: 20px; } .list span { display: inline-block; cursor: pointer; padding: 11px; margin: 3px; background-color: #a5c6ef; font-size: 13px; border-radius: 5px; } .list span:hover { background-color: #235eac; color: #fff; } .JrMwkvQy.playerContainer.YFEqUSvt{cursor:none !important} .Xu8BXy_K{display:none} #douyin-sidebar{display:none} .N7WC10t2.R0e9n3hS{display:none} .C0PKXv0T.vVKvTOe_{display:none} .XOS1zQWA{display:none} ` document.head.appendChild(geteStyle) function Tips(tipsText) { let RootVideo = document.querySelector(".YwClj8rK.fullscreen_capture_feedback") let TipsBox = document.createElement("div") TipsBox.style = ` position: absolute; left: 0; right: 0; bottom: 90px; margin: 0 auto; text-align: center; width: 300px; height: 30px; line-height: 30px; background-image: linear-gradient(to top, #cfd9df 0%, #e2ebf0 100%); cursor: pointer; z-index: 99999999999999999999999999; opacity:.9; transition: all .3s ` TipsBox.innerText = "已为您跳过了" + tipsText RootVideo.appendChild(TipsBox) setTimeout(() => { TipsBox.style.opacity = 0 }, 500); setTimeout(() => { TipsBox.remove() }, 1000); } function skip(item, index) { if (configxgIcon[8].option && VideoNumber.includes(index)) return if (VideoNumber.length > 20) VideoNumber = [] if (index && !VideoNumber.includes(index)) VideoNumber.push(index) let videos = document.querySelector("[data-e2e='feed-active-video'] .slider-video") if (videos != null) { // if (!configxgIcon[8].option) videos.style.display = "none" if (videos.querySelector("video") != null) videos.querySelector("video").pause() } let zhibonode = document.querySelector("[data-e2e='feed-live'] video") if (zhibonode != null && zhibonode.style.display == "") { zhibonode.style.display = "none" zhibonode.pause() } if (configxgIcon[7].option) { Tips(item) } time = setInterval(function () { next.click() }, 80); } bodyTime = setInterval(() => { body = document.querySelector(".u0N5WOYm.Srjrb_Q0") || document.querySelector(".swiper-wrapper") next = document.querySelectorAll(".xgplayer-playswitch-next")[0] if (body && next) { clearInterval(bodyTime) let observers = new MutationObserver((e) => { e.forEach((i) => { if (i.target.attributes[0].nodeValue == 'feed-active-video') { clearInterval(time) let guanggao = i.target.querySelector(".video-info-detail .SlSbcMqT.FxjGh3L8.alznRtIZ") let tupian = i.target.querySelector(".video-info-detail .ysRqqDJY") let gouwu = i.target.querySelector(".tSXOCvQc .xgplayer-shop-anchor") let username = i.target.querySelector(".Nu66P_ba")?.innerText let Copywriting = i.target.querySelector(".UCT89JiM")?.innerText if (tupian != null && configxgIcon[0].option) { skip("图片", i.target.dataset.e2eVid) } if (guanggao != null) { skip("广告", i.target.dataset.e2eVid) } if (gouwu != null && gouwu.innerText.includes("购物") && configxgIcon[6].option) { skip("购物广告", i.target.dataset.e2eVid) } if (gouwu != null && gouwu.innerText.includes("剪映")) { gouwu.style.display = "none" } if (i.target.querySelector(".tSXOCvQc") != null && configxgIcon[1].option) { i.target.querySelector(".tSXOCvQc").style.display = "none" } if (i.target.querySelector(".tSXOCvQc") != null && configxgIcon[4].option) { let rightHide = i.target.querySelector(".L1TH4HdO.d6KxRih3.positionBox") || i.target.querySelector(".L1TH4HdO.positionBox") rightHide.style.opacity = 0 } if (i.target.querySelector(".Xu8BXy_K") != null && configxgIcon[5].option) { let imgBackground = i.target.querySelector(".Xu8BXy_K") imgBackground.style.display = "none" } if (i.target.querySelector(".xg-video-container") != null && configxgIcon[5].option) { let time let video = i.target.querySelector(".xg-video-container") let qingping = i.target.querySelector(".tSXOCvQc") let xgplayer = i.target.querySelector(".xgplayer-controls") let bottomItem = xgplayer.querySelector(".xg-inner-controls.xg-pos") video.style.height = '99%' video.style.cursor = "none" video.style.bottom = 0 video.style.margin = "auto 0" qingping.style.bottom = "6px" bottomItem.style.bottom = -bottomItem.offsetHeight + "px" xgplayer.style.backgroundImage = "none" if (qingping.querySelector(".video-info-mask")) { qingping.querySelector(".video-info-mask").remove() } let CommentItem = i.target.querySelectorAll(".UXyEyqbq.UdkDK3ea.DZKZZklc .otZjcQr3") if (CommentItem) { CommentItem.forEach((i) => { i.remove() }) } xgplayer.onmouseover = () => { clearTimeout(time) bottomItem.style.transition = "all 0.3s" bottomItem.style.bottom = 0 + "px" i.target.querySelector(".tSXOCvQc").style.display = "none" } xgplayer.onmouseleave = () => { clearTimeout(time) time = setTimeout(() => { bottomItem.style.bottom = -bottomItem.offsetHeight + "px" if (!configxgIcon[1].option && i.target.querySelector(".tSXOCvQc")) { i.target.querySelector(".tSXOCvQc").style.display = "" } }, 1000); } } if (configxgIcon[9].option) { let selectallData = [username, Copywriting] let user = KeywordFiltering.find(item => item.class == "username")?.data.filter(item => username?.includes(item)) let copy = KeywordFiltering.find(item => item.class == "Copywriting")?.data.filter(item => Copywriting?.includes(item)) let selectall = KeywordFiltering.find(item => item.class == "selectall")?.data.find(item => { return selectallData.find(subkey => subkey?.includes(item) ) }) if (user.length != 0 || copy.length != 0 || !!selectall) { skip(username, i.target.dataset.e2eVid) return } } } if (document.querySelector("[data-e2e='feed-active-video']") == null && configxgIcon[3].option) { clearInterval(time) skip("直播", document.querySelector("[data-e2e='feed-live'] .Nu66P_ba")?.innerText) } }) }) observers.observe(body, { attributeOldValue: true, attributes: true, subtree: true, attributeFilter: ['data-e2e'] }) } else { return } }, 500); } if (url == "live.douyin.com") { window.onload = function () { setTimeout(() => { let liwu = document.querySelector('.tgMCqIjJ') if (liwu) { liwu.style.display = 'none' } let inall = document.querySelectorAll('.tY7dfAwO') let quanping = inall[1]?.querySelectorAll('div')[1] let pbliwu = inall[3]?.querySelectorAll('div')[1] quanping.click() let size = document.querySelector('.FKQqfehj') if (size) size.style.height = '99.8%' let danmus = document.querySelector('.basicPlayer.xgplayer .xgplayer-danmu') danmus.style.top = '0px' let vid = document.querySelector('.Zs4Pv2bD') let time; vid.onmousemove = function () { clearInterval(time) vid.style.cursor = 'auto' time = setInterval(function () { vid.style.cursor = 'none' }, 2000) } let huazhi = document.querySelectorAll('.J1hZCcks .LH4RopWg')[0] || document.querySelectorAll('.iDyiVE4p.bWLQ7URi .LgIvTpnw')[0] huazhi.click() let config = [ { name: "弹幕", option: true }, { name: "特效", option: true }, ] if (!localStorage.getItem("xg-icon")) { localStorage.setItem("xg-icon", JSON.stringify(config)) } else if (JSON.parse(localStorage.getItem("xg-icon")).length === config.length) { config = JSON.parse(localStorage.getItem("xg-icon")); } else { localStorage.setItem("xg-icon", JSON.stringify(config)) } let bottom = document.querySelector(".xgplayer-controls.control_autohide.xgplayer-controls-initshow .xg-right-grid") let danmu = bottom.querySelector(".danmu-icon") let div = document.createElement("xg-icon") div.dataset.index = 1 div.classList.add("tGBLU2eM") div.innerHTML = ` <div class="tY7dfAwO"> <div class="xuUeCQbT Gv4jhKug"> </div> <div>配置</div> </div>` for (const item of config) { let label = document.createElement("label") let input = document.createElement("input") let span = document.createElement("span") input.type = "checkbox" input.checked = item.option span.innerText = item.name label.appendChild(input) label.appendChild(span) div.querySelector(".xuUeCQbT.Gv4jhKug").appendChild(label) div.querySelector(".xuUeCQbT.Gv4jhKug").style.bottom = "26px" label.onclick = function () { item.option = input.checked localStorage.setItem("xg-icon", JSON.stringify(config)) window.location.reload() } } div.onmousemove = () => { div.querySelector(".xuUeCQbT.Gv4jhKug").style.display = "block" } div.onmouseleave = () => { div.querySelector(".xuUeCQbT.Gv4jhKug").style.display = "none" } bottom.appendChild(div) let liveVoice = document.querySelector(".xgplayer-volume").dataset.state if (liveVoice == "mute") { document.querySelector(".xgplayer-volume .xgplayer-icon").click() } if (config[0].option) { danmu?.click() } if (config[1].option) { pbliwu?.click() } if (document.querySelector(".xgplayer-play").dataset.state == "pause") { document.querySelector(".xgplayer-play").click() } }, 3200); setInterval(() => { let ClosePrompt = document.querySelector(".B10aL8VQ.s6mStVxD.vMQD6aai.u9TZ1Vxb") if (ClosePrompt) { ClosePrompt.click() } }, 500); } } })();