您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Download videos from web sites.
- // ==UserScript==
- // @name SaveTube+
- // @version 2018.11.12
- // @description Download videos from web sites.
- // @author sebaro
- // @namespace http://sebaro.pro/savetube
- // @icon https://gitlab.com/sebaro/savetube/raw/master/savetube.png
- // @include *
- // @noframes
- // @grant none
- // @run-at document-end
- // ==/UserScript==
- /*
- Copyright (C) 2014 - 2018 Sebastian Luncan
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- Website: http://sebaro.pro/savetube
- Contact: http://sebaro.pro/contact
- */
- (function() {
- // ==========Variables========== //
- // Userscript
- var userscript = 'SaveTube';
- // Contact
- var contact = 'http://sebaro.pro/contact';
- // ==========Fixes========== //
- // Don't run on frames or iframes
- if (window.top && window.top != window.self) return;
- // ==========Websites========== //
- /* Page Source */
- var xmlHTTP = new XMLHttpRequest();
- xmlHTTP.open('GET', window.location.href, false);
- xmlHTTP.send();
- var source = xmlHTTP.responseText + document.getElementsByTagName('html')[0].innerHTML;
- if (!source) return;
- /* Video Patterns */
- var patterns = [
- '=(http[^=\'"]*?\\.(mp4|flv|webm|m3u8).*?)&',
- 'file\s*:\s*"(http[^")]*?\\.(mp4|flv|webm|m3u8).*?)"',
- 'src="(http[^"]*?\\.(mp4|flv|webm|m3u8).*?)"',
- '"(http[^"]*?\\.(mp4|flv|webm|m3u8).*?)"',
- '\'(http[^\']*?\\.(mp4|flv|webm|m3u8).*?)\''
- ];
- /* Video Matcher */
- var pattern, matches, matcher, video, type;
- var links = '';
- for (var i = 0; i < patterns.length; i++) {
- pattern = new RegExp(patterns[i], 'g');
- matches = source.match(pattern);
- if (matches) {
- for (var v = 0; v < matches.length; v++) {
- matcher = matches[v].match(patterns[i]);
- video = (matcher) ? matcher[1] : null;
- if (video) {
- video = video.replace(/\\/g, '');
- if (video.indexOf('%') != -1) video = unescape(video);
- if (video.indexOf('&') != -1) video = video.replace(/&/g, '&');
- if (video.indexOf('http') == 0 && !video.match(/(thumb|\.jpg|\.png|\.gif|\.htm|format=|\/\/[^\/]*?(mp4|flv|webm|m3u8))/)) {
- if (video.indexOf('.mp4') != -1) type = 'MP4';
- else if (video.indexOf('.flv') != -1) type = 'FLV';
- else if (video.indexOf('.webm') != -1) type = 'WebM';
- else if (video.indexOf('.m3u8') != -1) type = 'M3U8';
- else type = 'Video';
- if (links.indexOf(video) == -1) links += ' <a href="' + video + '" style="color:#2C72C7">' + type + '</a>';
- }
- }
- }
- }
- }
- if (links) {
- var panel = document.createElement('div');
- panel.style.position = 'fixed';
- panel.style.bottom = '0px';
- panel.style.right = '25px';
- panel.style.zIndex = '2000000000';
- panel.style.color = '#336699';
- panel.style.backgroundColor = '#FFFFFF';
- panel.style.padding = '5px 5px 10px 5px';
- panel.style.fontSize = '12px';
- panel.style.fontWeight = 'bold';
- panel.style.borderLeft = '3px solid #EEEEEE';
- panel.style.borderRight = '3px solid #EEEEEE';
- panel.style.borderTop = '3px solid #EEEEEE';
- panel.style.borderRadius = '5px 5px 0px 0px';
- panel.innerHTML = '<a href="' + contact + '" style="color:#336699; font-weight:bold; text-decoration:none">' + userscript + '</a>: ' + links;
- var button = document.createElement('div');
- button.innerHTML = '<';
- button.style.height = '12px';
- button.style.border = '1px solid #CCCCCC';
- button.style.borderRadius = '3px';
- button.style.padding = '0px 5px';
- button.style.display = 'inline';
- button.style.color = '#CCCCCC';
- button.style.fontSize = '12px';
- button.style.textShadow = '0px 1px 1px #CCCCCC';
- button.style.cursor = 'pointer';
- button.style.marginLeft = '10px';
- button.addEventListener('click', function() {
- if (panel.style.right == '25px') {
- panel.style.left = '25px';
- panel.style.right = 'auto';
- button.innerHTML = '>';
- }
- else {
- panel.style.left = 'auto';
- panel.style.right = '25px';
- button.innerHTML = '<';
- }
- }, false);
- panel.appendChild(button);
- document.body.appendChild(panel);
- }
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址