谁不想在遇到好视频的时候能够缓存下来呢?
// ==UserScript==
// @name A 站视频缓存 视频链接解析
// @namespace czzonet
// @version 1.1.1
// @description 谁不想在遇到好视频的时候能够缓存下来呢?
// @author czzonet
// @include *://www.acfun.cn/v/ac*
// @include *://www.acfun.cn/bangumi/aa*
// @exclude *://*.eggvod.cn/*
// @connect www.acfun.cn
// @license MIT License
// @grant GM_download
// @grant GM_openInTab
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_xmlhttpRequest
// @grant GM_addStyle
// @grant unsafeWindow
// @grant GM_setClipboard
// @grant GM_getResourceURL
// @grant GM_getResourceText
// ==/UserScript==
// 等待页面加载完毕
window.onload = function () {
// 插入到标题
let descriptionElement = document.getElementsByClassName("video-description clearfix")[0];
// 创建一个按钮节点
let oButNode = nodeButton("获取链接");
oButNode.onclick = function () {
const dataVideos = getlink();
if (!dataVideos) {
descriptionElement.appendChild(nodeText(`解析播放器数据源失败!`));
}
else {
// descriptionElement.appendChild(nodeText(`视频共${dataVideos.length}P`));
for (let i = 0; i < dataVideos.length; i++) {
// descriptionElement.appendChild(nodeText(`---`));
// descriptionElement.appendChild(nodeText(`第${i + 1}P`));
const representation = dataVideos[i].representation;
for (let j = 0; j < representation.length; j++) {
const dataVideo = representation[j];
const url = dataVideo.url;
const qualityLabel = dataVideo.qualityLabel;
descriptionElement.appendChild(nodeText(`【${qualityLabel}】\n${url}`));
}
}
}
};
descriptionElement.appendChild(oButNode);
};
// type Target = {
// pagrInfo:any
// }
// type MyWindow = typeof that& Target
// 解析链接
function getlink() {
// 获取当前window
let pageWindow = this.window;
// 视频链接的json对象
const ksPlay = JSON.parse(pageWindow.pageInfo.currentVideoInfo.ksPlayJson);
if (!ksPlay) {
console.log("解析播放器数据源失败!");
}
else {
const dataVideos = ksPlay.adaptationSet;
// console.log("视频共" + dataVideos.length + "P");
for (let i = 0; i < dataVideos.length; i++) {
// console.log("---");
// console.log(`第${i + 1}P`);
const representation = dataVideos[i].representation;
for (let j = 0; j < representation.length; j++) {
const dataVideo = representation[j];
const url = dataVideo.url;
const qualityLabel = dataVideo.qualityLabel;
console.log(`【${qualityLabel}】${url}`);
}
}
}
return ksPlay.adaptationSet;
}
// 创建一个文字节点
function nodeText(text) {
let textNode = document.createElement("div");
textNode.innerText = text;
return textNode;
}
// 创建一个按钮节点
function nodeButton(text) {
let oButNode = document.createElement("input");
oButNode.type = "button";
oButNode.value = text;
oButNode.style.margin = "10px";
oButNode.style.borderWidth = "1px";
oButNode.style.paddingTop = "5px";
oButNode.style.paddingBottom = "5px";
oButNode.style.paddingLeft = "10px";
oButNode.style.paddingRight = "10px";
oButNode.style.backgroundColor = "#5e64ff";
oButNode.style.color = "#fff";
oButNode.style.fontSize = "12px";
oButNode.style.lineHeight = "1.5";
oButNode.style.borderRadius = "3px";
oButNode.style.borderColor = "#444bff";
oButNode.style.display = "block";
oButNode.style.cursor = "pointer";
return oButNode;
}
//# sourceMappingURL=index.js.map