硕鼠一键视频解析

调用硕鼠网站解析网页中的视频,支持解析国内各类主流视频网站、综合网站、教育网站、MV音频网站、网络电视台、游戏网站、体育网站以及部分国外视频网站的视频,支持网站列表截至2023.05.14

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         硕鼠一键视频解析
// @version      1.1
// @author       猫不理
// @namespace    https://www.flvcd.com/index.htm
// @license      MIT
// @description  调用硕鼠网站解析网页中的视频,支持解析国内各类主流视频网站、综合网站、教育网站、MV音频网站、网络电视台、游戏网站、体育网站以及部分国外视频网站的视频,支持网站列表截至2023.05.14
// @match        *://tv.sohu.com/v/*
// @match        *://www.letv.com/ptv/vplay/*
// @match        *://www.ku6.com/video/detail?id=*
// @match        *://www.56.com/*/*
// @match        *://c.m.163.com/news/v/*
// @match        *://share.tangdou.com/h5/play?vid=*
// @match        *://weibo.com/tv/show/*
// @match        *://www.miaopai.com/show/*
// @match        *://www.meipai.com/media/*
// @match        *://m.eyepetizer.net/u1/*
// @match        *://www.ixigua.com/*
// @match        *://www.bilibili.com/video/*
// @match        *://haokan.baidu.com//v?vid=*
// @match        *://krcom.cn/*/episodes/*
// @match        *://www.pearvideo.com/video_*
// @match        *://v.douyin.com/*/*
// @match        *://www.365yg.com/group/*
// @match        *://video.mtime.com/*/*
// @match        *://www.boosj.com/*.html
// @match        *://movie.douban.com/trailer/*
// @match        *://www.news.cn/*/*
// @match        *://www.v1.cn/video/*
// @match        *://v.tom.com/*/*
// @match        *://video.baomihua.com/*/*
// @match        *://www.ouou.com/article/index/id/*/cid/*
// @match        *://finance.ce.cn/*/*
// @match        *://www.cuctv.com/*/*
// @match        *://art.china.cn/shipin/*
// @match        *://www.kankanews.com/*/*
// @match        *://www.pinshan.com/*/*
// @match        *://apiapp.people.cn/*/*
// @match        *://www.yicai.com/video/*
// @match        *://www.jiemian.com/video/*
// @match        *://www.huxiu.com/article/*
// @match        *://www.yizhibo.com/l/*
// @match        *://www.zhihu.com/zvideo/*
// @match        *://www.zhanqi.tv/v2/videos/*
// @match        *://v.autohome.com.cn/*
// @match        *://wx.vzan.com/live/*
// @match        *://live.ddeliveu.com/live/*
// @match        *://zj.cztv.live/live/page/*
// @match        *://www.huajiao.com/l/*
// @match        *://mparticle.uc.cn/video.html?*
// @match        *://www.skypixel.com/videos/*
// @match        *://bbs.mihoyo.com/ys/article/*
// @match        *://www.yy.com/sv/*
// @match        *://www.koushare.com/video/videodetail/*
// @match        *://www.wasu.cn/Play/show/id/*
// @match        *://art.sclsje.com/share/detail/video_out.html?*
// @match        *://mp.weixin.qq.com/s?*
// @match        *://roadshow.eastmoney.com/luyan/*
// @match        *://www.docuchina.cn/*/*
// @match        *://video.mct.gov.cn/v.html?id=*
// @match        *://tieba.baidu.com/p/*
// @match        *://yidumen.cn/chatroom/*/*
// @match        *://www.360kuai.com/*
// @match        *://tv.81.cn/*/*
// @match        *://wap.che.360.cn/share/h5/detail/*
// @match        *://www.ntv.cn/*/*
// @match        *://video.caixin.com/*/*
// @match        *://roadshow.sseinfo.com/roadshowIndex.do?id=*
// @match        *://live.baidu.com/m/media/pclive/pchome/live.html?room_id=*
// @match        *://www.fuyinfm.com/content/view/movid/*
// @match        *://rs.p5w.net/html/*
// @match        *://www.pdnews.cn/video/*
// @match        *://www.cantonfair.org.cn/zh-CN/eventShows/*
// @match        *://www.zaobao.com/*/*
// @match        *://www.chinanews.com.cn/*/*
// @match        *://www.yangtse.com/content/*
// @match        *://www.lontv.cn/index.php?*
// @match        *://www.dongchedi.com/video/*
// @match        *://tv.southcn.com/*/*
// @match        *://yn.chinadaily.com.cn/*/*
// @match        *://www.qlwb.com.cn/videoDetail/*
// @match        *://www.jingju.com/video_detail.php?id=*
// @match        *://baijiahao.baidu.com/s?id=*
// @match        *://m.dianping.com/smallvideo/*
// @match        *://v.ccdi.gov.cn/*/*
// @match        *://open.163.com/newview/movie/free?pid=*
// @match        *://www.zxx.edu.cn/syncClassroom/classActivity?activityId=*
// @match        *://new.hbeducloud.com/course/*
// @match        *://v.ucas.ac.cn/course/*
// @match        *://www.centv.cn/*/p/*
// @match        *://www.xuexi.cn/lgpage/detail/index.html?id=*
// @match        *://lv.ulikecam.com/*/*
// @match        *://www.wkzj.com/shared/*
// @match        *://zy.szedu.cn/*/*
// @match        *://mskzkt.jse.edu.cn/*/*
// @match        *://www.ahedu.cn/course/video.html?id=*
// @match        *://e.dxy.cn/broadcast/live/id/*/replay
// @match        *://v.91360.com/lectures/*
// @match        *://www.houdask.com/site/hd/resources/views/free/play.html?id=*
// @match        *://www.dangjian.cn/shouye/shipinxinwen/*
// @match        *://hezhibo.migucloud.com/watch/*
// @match        *://live.yanxiu.com/lv2/program/*/detail
// @match        *://www.scedu.com.cn/ThirdPortalService/html/indexNew/index.html#/detailVideo?as_id=*
// @match        *://mooc1.chaoxing.com/nodedetailcontroller/visitnodedetail?courseId=*
// @match        *://yun.ercmedia.cn/gswsd/index.php?p=*
// @match        *://youzy.cn/learn/classrooms/detail1?packId=*
// @match        *://h5.dingtalk.com/group-live-share/index.htm?*
// @match        *://meeting.tencent.com/v2/cloud-record/share?id=*
// @match        *://zhibo.chaoxing.com/*
// @match        *://www.wookey.cn/mkzt?id=*
// @match        *://www.wupen.org/lectures/1?lesson=*
// @match        *://web.guangdianyun.tv/live/*
// @match        *://www.leleketang.com/cr/stage.php?id=*
// @match        *://www.manamana.net/video/detail?id=*
// @match        *://video.pku.edu.cn/videos.html*
// @match        *://m.inmuu.com/v1/live/news/*
// @match        *://www.yinyuetai.com/play?id=*
// @match        *://www.1ting.com/album_*
// @match        *://y.qq.com/n/ryqq/*/*
// @match        *://www.kugou.com/*/*
// @match        *://music.163.com/#/*
// @match        *://www.beva.com/page/videoPlayer?albumId=*
// @match        *://www.ximalaya.com/album/*
// @match        *://kuwo.cn/*/*
// @match        *://www.hqgq.com/video/show/*
// @match        *://qishui.douyin.com/s/*
// @match        *://www.qtfm.cn/channels/*/programs/*
// @match        *://tv.cctv.com/*/*
// @match        *://news.cctv.com/*/*
// @match        *://www.cutv.com/v2/*
// @match        *://v.ifeng.com/c/*
// @match        *://v.jstv.com/a/*
// @match        *://www.zjstv.com/zcloud/video/*
// @match        *://v.iqilu.com/*/*
// @match        *://item.btime.com/*
// @match        *://tv.cztv.com/vplay/*
// @match        *://www.gztv.com/video/videoIndex.html?uuid=*
// @match        *://www.xmtv.cn/*/*
// @match        *://pc.yun.jxntv.cn/*/*
// @match        *://headline.fjtv.net/*/*
// @match        *://gdtv.cn/tv/*
// @match        *://www.sjzjx.gov.cn/col/*
// @match        *://live.ipanda.com/*/*
// @match        *://tv.hoolo.tv/*/*
// @match        *://news.cgtn.com/*/*
// @match        *://www.hebtv.com/*/*
// @match        *://live.nbwbwx.com/live/*
// @match        *://www.gzstv.com/v/*
// @match        *://www.csztv.com/doc/*
// @match        *://vod.gxtv.cn/video/videoShow_*
// @match        *://www.js7tv.cn/video/*
// @match        *://www.sxrtv.com/live*
// @match        *://zmt-m.hljtv.com/video_details.html?*
// @match        *://www.hljtv.com/*/*
// @match        *://news.hbtv.com.cn/p/*
// @match        *://kscgc.sctv-tf.com/*/*
// @match        *://17173.tv.sohu.com/v/*
// @match        *://v.4399pk.com/*/video_*
// @match        *://v.huya.com/play/*
// @match        *://v.douyu.com/show/*
// @match        *://m.dongqiudi.com/article/*
// @match        *://v.zhibo.tv/detail/headerline/*
// @match        *://www.zhibo8.cc/*/*
// @match        *://www.formula1.com/*/*
// @match        *://www3.nhk.or.jp/*/*
// @icon         https://www.flvcd.com/b30.gif
// @grant        GM_openInTab
// @run-at       document-idle
// ==/UserScript==

(function() {
    'use strict';

    var isMenuOpen = false;

    function setButtonStyle(button) {
        button.style.position = 'fixed';
        button.style.left = '10px';
        button.style.transform = 'translateY(-50%)';
        button.style.zIndex = '9999';
        button.style.opacity = '0.7';
        button.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
        button.style.borderRadius = '15px';
        button.style.color = 'white';
        button.style.padding = '5px';
    }

    function toggleMenu() {
        if (!isMenuOpen) {
            openMenu();
        } else {
            closeMenu();
        }
    }

    function openMenu() {
        if (!isMenuOpen) {
            isMenuOpen = true;
            document.body.appendChild(updateButton);
        }
    }

    function closeMenu() {
        if (isMenuOpen) {
            isMenuOpen = false;
            if (updateButton && updateButton.parentNode) {
                updateButton.parentNode.removeChild(updateButton);
            }
        }
    }

    function checkForUpdates() {
        const crv = GM_info.script.version;
        let updateUrl = GM_info.scriptUpdateURL || GM_info.script.updateURL || GM_info.script.downloadURL;
        updateUrl = `${updateUrl}?t=${Date.now()}`;
        fetch(updateUrl, {
            cache: 'no-cache'
        }).then((response) => {
            response.text().then((data) => {
                const m = data.match(/@version\s+(\S+)/);
                const ltv = m && m[1];
                if (ltv && verInt(ltv) > verInt(crv)) {
                    GM_openInTab(updateUrl, { active: true });
                } else {
                    updateButton.textContent = '暂无更新';
                    setTimeout(function() {
                        closeMenu();
                        updateButton.textContent = '检查更新';
                    }, 3000);
                }
            });
        }).catch(e => console.log(e));
    };

    const verInt = function(vs) {
        const vl = vs.split('.');
        let vi = 0;
        for (let i = 0; i < vl.length && i < 3; i++) {
            vi += parseInt(vl[i]) * (1000 ** (2 - i));
        }
        return vi;
    };

    var button = document.createElement('button');
    button.textContent = '一键解析';
    button.style.top = '50%';
    setButtonStyle(button);

    button.addEventListener('click', function() {
        var currentUrl = encodeURIComponent(window.location.href);
        var searchUrl = 'https://www.flvcd.com/parse.php?kw=' + currentUrl;
        GM_openInTab(searchUrl, { active: true });
    });

    button.addEventListener('contextmenu', function(event) {
        event.preventDefault();
        toggleMenu();
    });

    var updateButton = document.createElement('button');
    updateButton.textContent = '检查更新';
    updateButton.style.top = 'calc(50% + 40px)';
    setButtonStyle(updateButton);

    updateButton.addEventListener('click', function() {
        checkForUpdates();
    });

    updateButton.addEventListener('contextmenu', function(event) {
        event.preventDefault();
        closeMenu();
    });

    document.body.appendChild(button);
})();