您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Watch theYNC Underground videos without needing an account
当前为
- // ==UserScript==
- // @name theYNC.com Underground bypass
- // @description Watch theYNC Underground videos without needing an account
- // @namespace Violentmonkey Scripts
- // @match https://theync.com/*
- // @match https://theync.net/*
- // @match https://theync.org/*
- // @grant none
- // @version 1.2
- // @license MIT
- // @author -
- // ==/UserScript==
- function getTheYNCVideoURL(url) {
- for (const [, group_url] of url.matchAll(
- /https:\/\/theync.com\/media\/thumbs\/(.*?)\.[a-zA-Z0-9_.-]*/gm
- )) {
- return `https://media.theync.com/videos/${group_url}.mp4`;
- }
- }
- function waitForElm(selector) {
- return new Promise((resolve) => {
- if (document.querySelector(selector)) {
- return resolve(document.querySelector(selector));
- }
- const observer = new MutationObserver((mutations) => {
- if (document.querySelector(selector)) {
- observer.disconnect();
- resolve(document.querySelector(selector));
- }
- });
- // If you get "parameter 1 is not of type 'Node'" error, see https://stackoverflow.com/a/77855838/492336
- observer.observe(document.body, {
- childList: true,
- subtree: true,
- });
- });
- }
- waitForElm(".content-block").then((contentBlock) =>
- contentBlock
- .querySelectorAll(".inner-block > a:has(>.item-info>.border-gold)")
- .forEach((element) => {
- const thumbnailURL = element.querySelector(".image > img").src;
- if (thumbnailURL) {
- const videoURL = getTheYNCVideoURL(thumbnailURL);
- if (videoURL) {
- element.href = getTheYNCVideoURL(thumbnailURL);
- }
- }
- })
- );
- waitForElm(".content-block").then((contentBlock) => {
- contentBlock
- .querySelectorAll(".upgrade-profile > .upgrade-info-block")
- .forEach((element) => {
- const thumbnailURL = element.querySelector(".image-block > .image > img").src;
- if (thumbnailURL) {
- const videoURL = getTheYNCVideoURL(thumbnailURL);
- if (videoURL) {
- location.href = videoURL;
- }
- }
- })
- contentBlock
- .querySelectorAll(".inner-block > a:has(>.item-info>.border-gold)")
- .forEach((element) => {
- const thumbnailURL = element.querySelector(".image > img").src;
- if (thumbnailURL) {
- const videoURL = getTheYNCVideoURL(thumbnailURL);
- if (videoURL) {
- element.href = getTheYNCVideoURL(thumbnailURL);
- }
- }
- })
- }
- );