您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Pornhub 视频一键下载 | pornhub.com 【Mod包括:1.Pc和安卓都可以,2.调整布局,减少面积】 原作者链接https://update.sleazyfork.org/scripts/483386/PHDownloader.meta.js
当前为
// ==UserScript== // @name 【Mod】PHDownloader // @namespace http://tampermonkey.net/ // @version 0.0.2-2024.03.31 // @description Pornhub 视频一键下载 | pornhub.com 【Mod包括:1.Pc和安卓都可以,2.调整布局,减少面积】 原作者链接https://update.sleazyfork.org/scripts/483386/PHDownloader.meta.js // @author Hmhm 【mod by heckles】 // @match *://*.pornhub.com/view_video.php?viewkey=* // @match *://*.pornhubpremium.com/view_video.php?viewkey=* // @icon https://ci.phncdn.com/www-static/favicon.ico // @grant unsafeWindow // @require https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js // @license MIT // ==/UserScript== /** * 一个异步函数,用于检索并显示远程视频地址的下载列表。 * 该函数会遍历`unsafeWindow`对象,寻找以`flashvars_`开头的属性, * 然后从这些属性中提取视频信息,并通过AJAX请求获取视频下载列表, * 最后将下载列表插入到页面指定的位置。 * * @returns {void} 该函数没有返回值。 */ (async function () { 'use strict'; let videoWrapTarget;//let可以先不赋值,用在这里 if (document.querySelector('.video-wrapper')) { videoWrapTarget = document.querySelector('.video-wrapper'); } else { console.log("安卓"); videoWrapTarget = document.querySelector('#videoShow'); } let signDomTarget;//let可以先不赋值,用在这里 if (document.querySelector('.video-wrapper')) { signDomTarget = document.querySelector('.video-wrapper .title-container'); } else { console.log("安卓"); signDomTarget = document.querySelector('#videoShow .categoryTags'); } // 获取视频容器元素和标题容器元素 const videoWrap = videoWrapTarget const signDom = signDomTarget let remoteAddress // 遍历unsafeWindow对象,寻找可能的视频源信息 for (let key in unsafeWindow) { // 查找以'flashvars_'开头的属性,提取视频地址 if (key.startsWith('flashvars_')) { console.log(unsafeWindow[key]) let flashvars = unsafeWindow[key] let mediaDefinitions = flashvars.mediaDefinitions // 从mediaDefinitions中寻找远程视频地址 mediaDefinitions.some(item => { if (item.remote) { remoteAddress = item.videoUrl } }) } } // 使用获取到的远程地址通过AJAX请求下载列表 const list = await $.ajax(remoteAddress).then(data => { return data }) // 创建一个DOM元素,用于装载下载列表 const dom = document.createElement("div"); dom.style = "display:inline-flex;"//调成一行 let str = '<div style="font-size:17px;">DOWNLOAD LIST</div><ul class="Download_List" style="display:inline-flex;">'; // 构建下载列表的HTML字符串 list.forEach(item => { const { videoUrl, quality } = item console.log(item) str += `<li style='padding-inline:16px; font-size:17px;'><a href="${videoUrl}" target="_blank">${quality}P</a></li>` }) str += '</ul>'; dom.innerHTML = str // 创建文档片段,并将下载列表DOM插入其中 const fragment = document.createDocumentFragment(); fragment.appendChild(dom) // 将下载列表插入到页面指定位置 videoWrap.insertBefore(fragment, signDom) })();