度盘给我播!

强迫度盘打开 ts mts f4v m2ts等视频文件的播放页面。

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         度盘给我播!
// @namespace    http://tampermonkey.net/
// @version      0.2.1
// @description  强迫度盘打开 ts mts f4v m2ts等视频文件的播放页面。
// @author       coolwind2012
// @match        http*://pan.baidu.com/disk/home*
// @exclude      http*://pan.baidu.com/disk/home*search*
// @icon         https://pan.baidu.com/box-static/disk-system/images/favicon.ico
// @require      https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js
// @grant        none
// @run-at       document-end
// ==/UserScript==
let myPath;
(function () {
    const timer = setInterval(() => {
        if (document.querySelector(".vdAfKMb")) {
            work();
            clearInterval(timer);
        }
    }, 200);
    window.addEventListener("hashchange", afterHashChanged, false);
    afterHashChanged();
})()

function afterHashChanged() {
    // https://pan.baidu.com/disk/home#list/path=%2F&vmode=list
    if (location.href.indexOf('/disk/home') !== -1) {
        myPath = location.href.split('path=')[1].split('&')[0];
    }
    myPath += (decodeURIComponent(myPath).slice(-1) === '/') ? '' : '%2F';
}

function work() {
    'use strict';
    const mediaType = new Array('ts', '3gp2', '3g2', '3gpp', 'amv', 'divx', 'dpg', 'f4v', 'm2t', 'm2ts', 'm2v', 'mpe', 'mpeg', 'mts', 'vob', 'webm', 'wxp', 'wxv');
    init();

    // 小图标的变化与处理
    //启动检测:          修改动作          监测对象与配置
    new MutationObserver(listChange).observe(document.querySelector('.vdAfKMb'), {
        attributes: false,
        childList: true,
        subtree: false
    });

    new MutationObserver(listChange).observe(document.querySelector('.JKvHJMb'), {
        attributes: false,
        childList: true,
        subtree: false
    });

    function init() {
        updateItem(document.querySelectorAll('.vdAfKMb>dd'));
    }

    function listChange(mutationList) {
        updateItem(mutationList[0].addedNodes);
    }

    function isMedia(str) {
        str = str.toLowerCase();
        str = str.split('.').pop();
        return mediaType.includes(str);
    }

    function updateItem(itemList) {
        const itemQueryStr = document.querySelector('.fyQgAEb').style.display == 'none'? '.text a':'.file-name a';  // :not(.open-enable)
        if(itemQueryStr == '.file-name a'){
            let tmp = [];
            itemList.forEach(item =>{
                for(let i=0;i<item.children.length;i++){
                    tmp.push(item.children[i]);
                }
            })
            itemList = tmp;
        }
        itemList.forEach(item => {
            const aEle = item.querySelector(itemQueryStr);
            const suffix = aEle.title.split('.').pop();
            if (isMedia(suffix) && aEle.href === 'javascript:void(0);') {
                aEle.onclick = ()=>{
                    window.open('https://pan.baidu.com/play/video#video/path=' + myPath + encodeURIComponent(aEle.title));
                };
                aEle.href = '';
                aEle.target = '_blank_';
                item.querySelector('.twwJWy').className = 'twwJWy fileicon-sys-s-video';
            }
        });
    }
}