您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
In the up next queue on Youtube, include the time since upload as part of the displayed metadata
// ==UserScript== // @name Youtube Up Next Time Since Upload // @namespace https://github.com/deelawn/user-scripts // @version 0.3 // @description In the up next queue on Youtube, include the time since upload as part of the displayed metadata // @author deelawn // @include /^http(s?)://((www\.)?)youtube\.com/watch(.*)$/ // @grant none // @require http://code.jquery.com/jquery-latest.js // ==/UserScript== // Check every second for upcoming videos with no uploaded time metadata displayed var myTimer = setInterval( function () { 'use strict'; $("ytd-watch-next-secondary-results-renderer.ytd-watch > div[id='items']").children().each(function() { var nextObj; // The video up next is structured a bit differently, so check for that if($(" > div[id='head']", this).length){ nextObj = $(" > ytd-compact-video-renderer", this); }else{ nextObj = this; } if(!($(" > div[id='dismissable']", nextObj).length)){ return; } nextObj = $(" > div[id='dismissable']", nextObj); // Don't add the time span if it's already there if($(" > a > ytd-video-meta-block > div[id='metadata'] > div[id='metadata-line'] > span[id='time-since-upload']", nextObj).length){ return; } var rawLabel = $(" > a > h3 > span", nextObj).attr("aria-label"); var regEx = /.*?\sby\s.*?\s((\d+)\s((year(s?))|(month(s?))|(week(s?))|(day(s?))|(hour(s?))|(minute(s?))|(second(s?))))\sago/; var timeSinceUpload = regEx.exec(rawLabel)[1]; var timeSpan = "<span id=\"time-since-upload\" class=\"style-scope ytd-video-meta-block\">".concat(timeSinceUpload.concat("</span>")); $(" > a > ytd-video-meta-block > div[id='metadata'] > div[id='metadata-line'] > span", nextObj).after(timeSpan); }); }, 3000);