Greasy Fork is available in English.
获取视频封面!
当前为
// ==UserScript==
// @name Youtube 封面
// @name:en Youtube Cover
// @name:zh-CN youtube 封面
// @namespace http://tampermonkey.net/
// @version 0.2.1
// @description 獲取影片封面!
// @description:en Get the cover of youtube video!
// @description:zh-CN 获取视频封面!
// @author Anong0u0
// @include *//www.youtube.com/*
// @grant none
// ==/UserScript==
console.log("youtube Cover is loading");
loadBtn();
async function delay(ms = 0){return new Promise((r)=>{setTimeout(r, ms)})}
function checkImg(imgUrl)
{
return new Promise(function(resolve, reject)
{
var img = new Image();
img.src = imgUrl;
img.onload = () => {resolve(img);}
})
}
function loadBtn()
{
console.log("try load");
if(document.querySelector("#start")!=null) {(function()
{
var elink = document.createElement("link");
elink.rel = "stylesheet";
elink.href = "https://cdn.jsdelivr.net/gh/chiron-fonts/[email protected]/build/webfont/css/Medium.css";
var ea = document.createElement("a");
ea.text = document.querySelector("html").lang.indexOf("zh")!=-1?"封面":"Cover";
ea.id = "ytCover";
ea.target = "_blank";
ea.hidden = true;
ea.style = 'text-decoration:none;font-size: 2em;font-family: "Chiron Sans HK WS";';
document.querySelector("#start").append(elink);
document.querySelector("#start").append(ea);
console.log("done");
var ytC = document.querySelector("#ytCover");
var mas = document.querySelector("#masthead");
var body = document.querySelector("body");
ytC.style.color = mas.dark? "white":"black";
var oldHref = null
var imgTag = ["mqdefault", "hqdefault", "sddefault", "maxresdefault"]
var urlChange = new MutationObserver(async (mutations) =>
{
if (oldHref != document.location.href)
{
oldHref = document.location.href
var video_id = null;
window.location.search.replace("?","").split('&').forEach((s)=>{if(s.startsWith("v=")){video_id=s.replace("v=","")};});
ytC.hidden = (video_id == null);
if (video_id == null) return;
ytC.href = "https://i.ytimg.com/vi/" + video_id + "/default.jpg";
for(let i = 0; i < imgTag.length; i++)
{
let url = "https://i.ytimg.com/vi/" + video_id + "/" + imgTag[i] + ".jpg";
checkImg(url).then((img)=>{if(img.width>120 && img.height>90) ytC.href = url;})
await delay(50);
}
}
});
var darkMode = new MutationObserver((mutations) => {ytC.style.color = mas.dark? "white":"black"});
urlChange.observe(body, {childList: true, subtree: true});
darkMode.observe(mas, {attributes: true});
})();}
else {setTimeout(loadBtn, 300);}
}