// ==UserScript==
// @name 跳过抖音广告
// @namespace https://greasyfork.org/zh-CN/users/1034730-%E9%9A%8F%E7%BC%98%E7%8E%A9%E5%AE%B6?locale_override=1
// @version 0.13
// @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 = document.querySelectorAll(".xgplayer-playswitch-next")[0]
let configxgIcon = [
{ name: "图片", option: true, type: "tupian" },
{ name: "清屏", option: true, type: "qingping" },
{ name: "评论区", option: true, type: "comment" },
{ name: "直播", option: true, type: "live" },
{ name: "右侧", option: true, type: "right" },
{ name: "底部", option: false, type: "bottom" },
]
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 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) {
// console.log(i.addedNodes[0]);
if (getClass == "OFZHdvpl" && document.querySelector('[data-e2e="feed-active-video"] .aDQw7OWI._628BWQES') != null && configxgIcon[2].option) {
if (document.querySelector('[data-e2e="feed-active-video"] .aDQw7OWI._628BWQES.JFWzESlW.LookModalFrameFast') != null) {
setTimeout(() => {
i.addedNodes[0].querySelector(".pBxTZJeH.Qz1xVpFH.aLzJ7lUV").click()
}, 180);
}
//打开评论
let comments = document.querySelector('[data-e2e="feed-active-video"] .aDQw7OWI._628BWQES')
let observerComment = new MutationObserver((e) => {
// console.log(e[0].target);
if (e[0].target.classList.value == "aDQw7OWI _628BWQES JFWzESlW LookModalFrameFast" || e[0].target.classList.value == "aDQw7OWI _628BWQES JFWzESlW UOaw2vqQ LookModalFrameFast") {
i.addedNodes[0].querySelector(".pBxTZJeH.Qz1xVpFH.aLzJ7lUV").click()
}
})
observerComment.observe(comments, { attributes: true })
}
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'] [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")
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))
}
console.log(item);
}
xgTips.appendChild(iconitem)
}
config.appendChild(xgIcon)
}
}
if (getClass == "xgplayer-video-info-wrap") {
let nowplay = i.addedNodes[0].parentNode.parentNode.parentNode.parentNode.parentNode
if (nowplay.dataset.e2e == "feed-active-video") {
if (i.addedNodes[0].querySelector(".video-info-detail .ysRqqDJY")) {
setTimeout(() => {
next.click()
}, 800);
}
}
}
if (getClass == "mPWahmAI") {
let loginOff = i.addedNodes[0].querySelector(".box-align-center .dy-account-close")
if (loginOff != null) {
loginOff.click()
}
}
}
}
})
})
observer.observe(document, { childList: true, subtree: true })
//广告
let body = document.querySelector(".u0N5WOYm.Srjrb_Q0") || document.querySelector(".swiper-wrapper")
let time;
function skip() {
clearInterval(time)
let videos = document.querySelector("[data-e2e='feed-active-video'] .slider-video")
if (videos != null) {
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()
}
time = setInterval(() => {
next.click()
}, 2);
}
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")
if (tupian != null && configxgIcon[0].option) {
skip()
}
if (guanggao != null) {
skip()
}
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(".tSXOCvQc") != null && configxgIcon[5].option) {
let bottom = i.target.querySelector(".xgplayer-controls.controls_permanent.xgplayer-controls-initshow")
bottom.style.opacity = 0.1
}
}
//直播
if (document.querySelector("[data-e2e='feed-active-video']") == null && configxgIcon[3].option) {
skip()
}
})
})
observers.observe(body, { attributeOldValue: true, attributes: true, subtree: true, attributeFilter: ['data-e2e'] })
}
if (url == "live.douyin.com") {
window.onload = function () {
setTimeout(() => {
let liwu = document.querySelector('.ruqvqPsH')
if (liwu) {
liwu.style.display = 'none'
}
let inall = document.querySelectorAll('.fHknbHHl').length ? document.querySelectorAll('.fHknbHHl') : document.querySelectorAll('.tY7dfAwO')
let quanping = inall[1].querySelectorAll('div')[1]
let pbliwu = inall[2].querySelectorAll('div')[1]
quanping.click()
pbliwu.click()
let size = document.querySelector('.FKQqfehj')
size.style.height = '100%'
let danmus = document.querySelector('.basicPlayer.xgplayer .xgplayer-danmu')
danmus.style.top = '0px'
let mx = document.querySelectorAll('.tGBLU2eM')[2]
let vid = document.querySelector('.O6bv6zn7')
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]
huazhi.click()
}, 3000);
}
}
})();