您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Video downloader for theworldwatch.com
当前为
// ==UserScript== // @name theworldwatch downloader // @namespace Violentmonkey Scripts // @match https://theworldwatch.com/* // @grant GM_addElement // @grant GM_addStyle // @grant GM_download // @grant GM_openInTab // @grant GM_log // @version 1.7 // @author https://gf.qytechs.cn/en/users/1409235-paywalldespiser // @description Video downloader for theworldwatch.com // @license MIT // @require https://update.gf.qytechs.cn/scripts/523012/1516081/WaitForKeyElement.js // ==/UserScript== /** * Gets filename from theworldwatch.com video URL * * @param {string} url * @returns {string} */ function getFilenameFromURL(url) { const title = document.title; for (const [, videoURL] of url.matchAll(/\/get_file\/.*\/(.*?)\.mp4/gm)) { if (videoURL) { return `${title} [${videoURL}].mp4`; } } return `${title}.mp4`; } Node.prototype.insertAfter = /** * Inserts element behind node * * @param {Node} after * @returns {Node | undefined | null} */ function (after) { return this.parentNode?.insertBefore(after, this.nextSibling); }; /** * Check if mobile browser [http://detectmobilebrowsers.com/mobile] * * @returns {boolean} */ function mobileCheck() { return (function (a) { return ( /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test( a ) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test( a.substr(0, 4) ) ); })(navigator.userAgent || navigator.vendor || window.opera); } (function () { 'use strict'; GM_addStyle(` .loader { border: 0.25em solid #f3f3f3; border-top: 0.25em solid rgba(0, 0, 0, 0); border-radius: 50%; width: 1em; height: 1em; animation: spin 2s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .kt-player .fp-controls .fp-download { display: inline-flex; float: right; height: 100%; justify-content: center; align-items: center; margin: 2px 4px 4px 10px; } `); waitForKeyElement('.player video').then(function (video) { const fullScreenButton = video.nextElementSibling.querySelector( '.fp-controls > .fp-screen' ); const downloadButtonContainer = GM_addElement('div'); downloadButtonContainer.classList.add('fp-download'); const downloadButton = GM_addElement('a'); downloadButton.style.fontSize = '1.4em'; downloadButton.textContent = '⬇'; downloadButtonContainer.appendChild(downloadButton); const loadingElement = GM_addElement('div'); loadingElement.classList.add('loader'); downloadButton.addEventListener('click', function () { if (mobileCheck()) { const element = GM_addElement(document.body, 'a', { href: video.src, download: getFilenameFromURL(video.src), }); element.click(); element.remove(); } else { downloadButtonContainer.removeChild(downloadButton); downloadButtonContainer.appendChild(loadingElement); GM_download({ url: video.src, name: getFilenameFromURL(video.src), saveAs: true, onload: function () { downloadButtonContainer.appendChild(downloadButton); downloadButtonContainer.removeChild(loadingElement); downloadButton.textContent = '✓'; }, ontimeout: function () { GM_log('download timed out'); downloadButtonContainer.appendChild(downloadButton); downloadButtonContainer.removeChild(loadingElement); downloadButton.textContent = '⮿'; }, onerror: function (e) { GM_log(`error: ${e}`); console.error(e); downloadButtonContainer.appendChild(downloadButton); downloadButtonContainer.removeChild(loadingElement); downloadButton.textContent = '⮿'; }, }); } }); fullScreenButton.insertAfter(downloadButtonContainer); }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址