Greasy Fork is available in English.
下载腾讯视频
当前为
// ==UserScript==
// @name 腾讯视频下载
// @namespace http://tampermonkey.net/
// @version 0.0.22
// @description 下载腾讯视频
// @author feyaha9619
// @license MIT License
// @run-at document-start
// @grant GM_download
// @include *://v.qq.com/*
// @require http://greasyfork.icu/scripts/440006-mono/code/mono.js?version=1021983
// ==/UserScript==
(function () {
var mono = window['mono-descargar'];
var $ = mono.jQuery;
var md5 = mono.md5;
var filename = mono.filename;
var onRequest = mono.onRequest;
var errCode = mono.FAIL_TO_DEFAULT;
var idKey = 'mono-dsg-id';
var metaCache = {}
onRequest(({url, resp, _body, method}) => {
if (!resp || !(url.includes('qq.com/proxyhttp') && resp.includes('vinfo'))) return;
console.log('url, resp', url, resp)
var data = typeof resp == "string" ? JSON.parse(resp) : resp;
var vinfo = JSON.parse(data.vinfo);
vinfo.vl.vi.forEach((item) => {
console.log('item.ul.ui[item.ul.ui.length-1].url', item.ul.ui[item.ul.ui.length-1].url)
var url = item.ul.ui[item.ul.ui.length-1].url;
var baseUrl = url.split('?')[0]
metaCache[item.vid] = {
url: baseUrl,
meta: {
title: item.ti,
cover: item.wl.wi.surl,
name: filename(item.ti || document?.title),
m3u8Data: item.ul.m3u8
}
}
});
});
var getItemByMeta = (meta, selector='', selClass='') => {
var id = `ks-${md5(meta.id)}`
if ($(`[${idKey}=${id}]`).length > 0) return null;
var $el = null;
if (selector) $el = $(selector)
if ($el.length > 0 && selClass) {
var ps = $el.parentsUntil(selClass);
if (ps.length > 0) $el = $(ps[ps.length - 1])
}
if ($el.length <= 0) return null;
var container = $el[0];
return { id, url: meta.url, container, meta: meta.meta }
}
var cc = () => {
var items = [];
for (var [id, meta] of Object.entries(metaCache)) {
var selector = `.tenvideo_player`;
var item = getItemByMeta(meta, selector, '.mod_player')
if (!item) continue;
if (item) items.push(item);
}
return items
}
var parser = async function () {
var url = window.location.href;
if (url.indexOf('/x/cover/') !== -1) {
return await cc();
} else {
throw errCode;
}
}
if (mono?.init) mono.init({ parser });
})()