您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a download button to the Vimeo video player. This is a rewrite of "Vimeo Embed Download" originally created by aleixdev (https://greasyfork.org/en/scripts/376551).
当前为
// ==UserScript== // @name Vimeo Download // @namespace http://tampermonkey.net/ // @version 3.0 // @description Adds a download button to the Vimeo video player. This is a rewrite of "Vimeo Embed Download" originally created by aleixdev (https://greasyfork.org/en/scripts/376551). // @author You // @match https://vimeo.com/* // @match https://player.vimeo.com/video/* // @icon https://www.google.com/s2/favicons?sz=64&domain=vimeo.com // @unwrap // ==/UserScript== (function() { if (document.title === 'VimeUhOh') { return; } function getPlayer() { if (window.playerConfig) { return window.playerConfig; } const clips = window.vimeo.clips; const videoId = Object.keys(clips).at(); if (!videoId) { throw new Error('[Vimeo Download] Error retrieving video meta data:', clips); } return clips[videoId] } const { request, video } = getPlayer(); console.log(request.files); const streams = request.files.progressive.sort((a, b) => b.width - a.width); console.log(streams); const { url, quality } = streams[0]; const button = Object.assign(document.createElement('button'), { innerHTML: 'Download', title: 'Download ' + quality, style: 'display: inline-block; font-size: 1.75em; margin: -0.25em 0 0 0.3em; color: rgb(68,187,255)', onclick: function() { console.log(url, quality); this.disabled = true; this.innerText = 'Wait'; fetch(url) .then(response => response.blob()) .then(file => { const tempUrl = URL.createObjectURL(file); const aTag = document.createElement("a"); aTag.href = tempUrl; aTag.download = name document.body.appendChild(aTag); aTag.click(); URL.revokeObjectURL(tempUrl); aTag.remove(); }).finally(() => { this.disabled = false; this.innerText = 'Download' }); } }) const interval = setInterval(function() { if (!document.querySelector('.vp-controls')) return; clearInterval(interval) document.querySelector('.vp-controls').appendChild(button); }, 100); })();