您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a download btn to download all availble Pn whenever possible
当前为
// ==UserScript== // @name PN Script DL Btn // @namespace http://tampermonkey.net/ // @version 0.2 // @description Adds a download btn to download all availble Pn whenever possible // @author DA25 // @match *://*/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // ==/UserScript== (function () { 'use strict'; document.addEventListener("DOMContentLoaded", function(){ if (window.flashvars) { console.log("Found"); console.log(window.flashvars); function fixVidUrl(vidUrl) { if (!!vidUrl) { return vidUrl.replace("function/0/", ""); } else { return undefined } } function getDefaultVidUrl() { return fixVidUrl(window.flashvars["video_url"]); } function getDefaultVidText() { return window.flashvars["video_url_text"]; } function getVidAltUrl(num) { let urlNumStr = ""; if (num === 1) { urlNumStr = `video_alt_url`; } else { urlNumStr = `video_alt_url${num}`; } return fixVidUrl(window.flashvars[urlNumStr]); } function getVidAltText(num) { let textNumStr = ""; if (num === 1) { textNumStr = `video_alt_url_text`; } else { textNumStr = `video_alt_url${num}_text`; } return window.flashvars[textNumStr]; } function createDownloadLinkEle(altUrl, altText) { let altAnchorEle = document.createElement("a"); altAnchorEle.classList.add("dropdown-item", "btn-sm"); altAnchorEle.setAttribute("href", altUrl); altAnchorEle.innerText = altText; return altAnchorEle; } function createdDownloadEle() { let dropdownWrapper = document.createElement("div"); dropdownWrapper.classList.add("dropdown"); let downloadBtn = document.createElement("button"); downloadBtn.classList.add("btn", "btn-dark", "btn-sm", "dropdown-toggle"); downloadBtn.setAttribute("type", "button"); downloadBtn.setAttribute("data-bs-toggle", "dropdown"); downloadBtn.innerText = "DA25-Download"; dropdownWrapper.append(downloadBtn); let btnList = document.createElement("ul"); btnList.classList.add("dropdown-menu", "btn-sm"); dropdownWrapper.append(btnList); return dropdownWrapper; } function appendDownloadLinkEle(downloadEle, linkEle) { let downloadBtnList = downloadEle.querySelector("ul.dropdown-menu"); let listItem = document.createElement("li"); listItem.append(linkEle); downloadBtnList.append(listItem); } function addBootstrap() { let head = document.getElementsByTagName("head")[0]; let bootstrapCssScriptEle = document.createElement("link"); bootstrapCssScriptEle.setAttribute("href", "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"); bootstrapCssScriptEle.setAttribute("rel", "stylesheet"); bootstrapCssScriptEle.setAttribute("integrity", "sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"); bootstrapCssScriptEle.setAttribute("crossorigin", "anonymous"); head.insertAdjacentElement("beforeend", bootstrapCssScriptEle); let body = document.getElementsByTagName("body")[0]; let bootstrapJsScriptEle = document.createElement("script"); bootstrapJsScriptEle.setAttribute("src", "https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"); bootstrapJsScriptEle.setAttribute("integrity", "sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"); bootstrapJsScriptEle.setAttribute("crossorigin", "anonymous"); body.insertAdjacentElement("beforeend", bootstrapJsScriptEle); } function initDownloadLink(downloadDropDownEle) { let listEle = document.createElement("li"); listEle.append(downloadDropDownEle); let menuList = document.querySelector(".tabs-menu > ul"); if (!!menuList) { menuList.prepend(listEle); // addBootstrap(); } else { alert("window.flashvars present but '.tabs-menu > ul' is not"); } } try { let defaultVidUrl = getDefaultVidUrl(); let defaultVidText = getDefaultVidText(); let defaultDownloadEle = createdDownloadEle(); appendDownloadLinkEle(defaultDownloadEle, createDownloadLinkEle(defaultVidUrl, defaultVidText)); let count = 1; let vidAltUrl = getVidAltUrl(count); let vidAltText = getVidAltText(count); while (!!vidAltUrl) { appendDownloadLinkEle(defaultDownloadEle, createDownloadLinkEle(vidAltUrl, vidAltText)); count = count + 1; vidAltUrl = getVidAltUrl(count); vidAltText = getVidAltText(count); } initDownloadLink(defaultDownloadEle); } catch (e) { alert(e); } } else { console.log("Not Found"); } }); })();