Greasy Fork

Greasy Fork is available in English.

粤语屋去视频内嵌广告

去除粤语屋视频里嵌入的广告

当前为 2024-06-01 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         粤语屋去视频内嵌广告
// @name:zh-CN   粤语屋去视频内嵌广告
// @name:zh-TW   粵語屋去視頻內嵌廣告
// @name:zh-HK   粵語屋去視頻內嵌廣告
// @namespace    https://bbs.tampermonkey.net.cn/
// @version      1.0.0
// @description  去除粤语屋视频里嵌入的广告
// @description:zh-CN 去除粤语屋及其在中国大陆、香港和台湾地区相关视频网站里嵌入的广告
// @description:zh-TW 去除粵語屋及其在中國大陸、香渌和台灣地區相關視頻網站裡嵌入的廣告
// @description:zh-HK 去除粵語屋及其在中國大陸、香港和台灣地區相關視頻網站裡嵌入的廣告
// @author       hua
// @grant        unsafeWindow
// @license      MIT
// @include      https://m3u8.yueyuwu.cc/player/*
// @run-at       document-start
// ==/UserScript==

(function () {
    unsafeWindow.XMLHttpRequest = class extends unsafeWindow.XMLHttpRequest {
        get xhrResponseValue() {
            const xhr = this;
            if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
                const url = xhr.responseURL;
                if (url.endsWith('mixed.m3u8')) {
                    return process_m3u8(super.response);
                }
            }
            return super.response;
        }
        get responseText() {
            return this.xhrResponseValue;
        }
        get response() {
            return this.xhrResponseValue;
        }
    };

    function process_m3u8(file) {
        // console.log(file);
        let lines = file.split('\n');
        let ts_name_pre;
        let processed_lines = [];
        for (let line of lines) {
            if (line.endsWith('.ts')) {
                ts_name_pre = line.slice(0, 10);
                break;
            }
        }
        for (let line of lines) {
            if (line.endsWith('.ts') && !line.startsWith(ts_name_pre)) {
                processed_lines.pop();
                if (processed_lines[processed_lines.length - 1] == '#EXT-X-DISCONTINUITY') {
                    processed_lines.pop();
                }
                console.log(`删除${line}`);
                continue;
            }
            processed_lines.push(line);
        }

        let processed_file = processed_lines.join('\n');
        // console.log(processed_file);
        return processed_file;
    }
})();