您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Replaces fluid player with browsers HTML5 native player, initialises native preload and proceeds full preload in background.
当前为
// ==UserScript== // @name GBT HTML5 native player, full preload, download (GBTPP) // @version 4.61 // @namespace _pc // @description Replaces fluid player with browsers HTML5 native player, initialises native preload and proceeds full preload in background. // @author verydelight // @license MIT // @icon https://www.gayporntube.com/favicon.ico // @connect gayboystube.com // @connect gayporntube.com // @compatible Firefox Tampermonkey // @grant GM.xmlHttpRequest // @grant GM_download // @grant GM_xmlHttpRequest // @grant GM.download // @match *://*.gayboystube.com/video/* // @match *://*.gayporntube.com/video/* // @webRequest {"selector":"*fluidplayer*","action":"cancel"} // ==/UserScript== (async function() { const videoplayer = document.getElementById('play-video'); const videoplayerSource = videoplayer.querySelector('source'); const pattern = /\/\?br=\d*$/; if (videoplayerSource) { const src = videoplayerSource.src.replace(pattern, ''); if (src !== videoplayerSource.src) { videoplayerSource.src = src; } videoplayer.removeAttribute("height"); videoplayer.removeAttribute("width"); videoplayer.setAttribute("preload","auto"); videoplayer.focus(); await downloadVideo(videoplayerSource.src); } async function downloadVideo(url) { try { const response = await GM.xmlHttpRequest({ method: 'GET', responseType: 'blob', url: url, headers: { "Content-Type": "video/mp4", "Accept": "video/mp4" }, }); const blob = new Blob([response.response], { type: 'video/mp4' }); const objectUrl = URL.createObjectURL(blob); const { currentTime, paused, ended } = videoplayer; videoplayerSource.src = objectUrl; videoplayer.load(); videoplayer.currentTime = currentTime; if (!paused && !ended && currentTime > 0) { videoplayer.play(); } //const parts = url.split("/"); //const filename = parts[parts.length - 1]; const dlinfo = document.createElement('div'); dlinfo.textContent = "Video ready/fully preloaded - Click download button or use save as or save video as from context menue"; dlinfo.classList.add("blue"); dlinfo.style.fontWeight = "bold"; const container = document.querySelector("#tab_video_info"); const dlBttn = container.querySelector(".bttn"); const href = dlBttn.getAttribute('href'); const urlObj = new URL(href); const filename = urlObj.searchParams.get('download_filename'); dlBttn.href = objectUrl; dlBttn.download = filename; videoplayer.parentNode.insertBefore(dlinfo, videoplayer.nextSibling); } catch (err) { console.error("GBTPP: Error in fetching and downloading file: ", err); } } })();