Greasy Fork is available in English.
YouTube 1. Playback Video Playback 2. Скачать экрана 3.
- // ==UserScript==// @name YouTube Helper// @name:ar مساعد يوتيوب// @name:bg YouTube асистент// @name:cs Asistent YouTube// @name:da YouTube -assistent// @name:de YouTube -Assistent// @name:el Βοηθός του YouTube// @name:en YouTube Assistant// @name:eo YouTube -Asistanto// @name:es Asistente de YouTube// @name:fi YouTube -avustaja// @name:fr Assistant YouTube// @name:fr-CA Assistant YouTube// @name:he עוזר YouTube// @name:hr YouTube pomoćnik// @name:hu YouTube asszisztens// @name:id Asisten YouTube// @name:it Assistente YouTube// @name:ja YouTubeアシスタント// @name:ka YouTube ასისტენტი// @name:ko YouTube Assistant// @name:nb YouTube -assistent// @name:nl YouTube -assistent// @name:pl Asystent YouTube// @name:pt-BR Assistente do YouTube// @name:ro Asistent YouTube// @name:ru YouTube Assistant// @name:sk Asistent YouTube// @name:sr ИоуТубе асистент// @name:sv YouTube Assistant// @name:th ผู้ช่วย YouTube// @name:tr YouTube Assistant// @name:ug YouTube ياردەمچىسى// @name:uk Асистент YouTube// @name:vi Trợ lý YouTube// @name:zh YouTube 小助手// @name:zh-CN YouTube 小助手// @name:zh-HK YouTube 小助手// @name:zh-SG YouTube 小助手// @name:zh-TW YouTube 小助手// @description YouTube 1.Loop playback of YouTube videos 2.screenshot download 3.themed progress bar.// @description:ar YouTube 1. تشغيل حلقة الفيديو 2. تنزيل لقطة الشاشة 3.// @description:bg YouTube 1. Възпроизвеждане на видео контур 2. Изтегляне на екранна снимка 3. Бар за напредък на темата// @description:cs YouTube 1.. Přehrávání video smyčky 2.// @description:da YouTube 1. Video Loop Playback 2.. Skærmbillede Download 3. Tema -statuslinje// @description:de YouTube 1. Video Loop -Wiedergabe 2. Screenshot Download 3. Thema Fortschrittsleiste// @description:el YouTube 1. Αναπαραγωγή βρόχου βίντεο 2. ΠΕΡΙΕΧΟΜΕΝΟ ΣΤΟΙΧΕΙΑ 3.// @description:en YouTube 1. Video loop playback 2. Screenshot download 3. Theme progress bar// @description:eo YouTube 1. Video Loop Playback 2.// @description:es YouTube 1. Video Loop Playback 2. Descarga de captura de pantalla 3. Barra de progreso del tema// @description:fi YouTube 1.// @description:fr YouTube 1. Playback de boucle vidéo 2. Capture d’écran Télécharger 3. Bar de progression du thème// @description:fr-CA YouTube 1. Playback de boucle vidéo 2. Capture d’écran Télécharger 3. Bar de progression du thème// @description:he YouTube 1. השמעת לולאת וידאו 2. הורדת צילום מסך 3. סרגל התקדמות נושא// @description:hr YouTube 1. Video petlja reprodukcija 2. Snimka zaslona Preuzmite 3.// @description:hu YouTube 1. Video hurok lejátszása 2. képernyőkép letöltése 3. Téma előrehaladási sáv// @description:id YouTube 1. Video Loop Playback 2. Screenshot Unduh 3. Tema Kemajuan Bilah// @description:it YouTube 1. Riproduzione del loop video 2. Screenshot Download 3. Barra di avanzamento del tema// @description:ja YouTube1。ビデオループ再生2。スクリーンショットダウンロード3。テーマの進行状況バー// @description:ka YouTube 1. ვიდეო მარყუჟის დაკვრა 2. სკრინშოტის ჩამოტვირთვა 3. თემის პროგრესის ბარი// @description:ko YouTube 1. 비디오 루프 재생 2. 스크린 샷 다운로드 3. 테마 진행률 바// @description:nb YouTube 1. Video Loop Playback 2. Skjermbilde nedlasting 3. Tema Progress Bar// @description:nl YouTube 1. Video Loop Playback 2. Screenshot Download 3. Theme voortgangsbalk// @description:pl YouTube 1. Pętla wideo odtwarzanie 2. Pobierz zrzut ekranu 3.// @description:pt-BR YouTube 1. Playback de loop de vídeo.// @description:ro YouTube 1. Redarea buclelor video 2. Descărcare de ecran 3. Tema Progress Bar// @description:ru YouTube 1. Playback Video Playback 2. Скачать экрана 3.// @description:sk YouTube 1. Prehrávanie video slučky 2. Screenshot Stiahnutie 3.// @description:sr ИоуТубе 1. Репродукција видео петље 2. Сцреенсхот Довнлоад 3. Тхеме Топресс Бар// @description:sv YouTube 1. Video Loop Playback 2. Skärmdump nedladdning 3. Theme Progress Bar// @description:th YouTube 1. การเล่นวิดีโอลูป 2. การดาวน์โหลดภาพหน้าจอ 3. ธีมความคืบหน้าแถบ// @description:tr YouTube 1. Video Döngüsü Oynatma 2. Ekran Görüntüsü İndir 3. Tema İlerleme Çubuğu// @description:ug YouTube 1. سىن ئايلانما قويۇش 2. ئېكران رەسىمى 3 نى چۈشۈرۈڭ. باشتېمىنى ئىلگىرى سۈرۈش بالدىقى// @description:uk YouTube 1. Відеокласник відеокліту// @description:vi YouTube 1. Video Loop Playback 2. Ảnh chụp màn hình tải xuống 3. Thanh tiến trình chủ đề// @description:zh YouTube 1.视频循环播放 2.截图下载 3.主题进度条// @description:zh-CN YouTube 1.视频循环播放 2.截图下载 3.主题进度条// @description:zh-HK YouTube 1.視頻循環播放 2.截圖下載 3.主題進度條// @description:zh-SG YouTube 1.视频循环播放 2.截图下载 3.主题进度条// @description:zh-TW YouTube 1.視頻循環播放 2.截圖下載 3.主題進度條// @author Carokahn,bernzrdo,FunnyMonkey,##的勤务员 <china.qinwuyuan@gmail.com>// @namespace https://github.com/#####GodMan/UserScripts// @supportURL https://github.com/#####GodMan/UserScripts/issues// @homepageURL https://github.com/#####GodMan/UserScripts// @license MIT// @icon https://www.youtube.com/s/desktop/ee47b5e0/img/logos/favicon_144x144.png// @match https://www.youtube.com/*// @match https://m.youtube.com/*// @compatible chrome// @compatible firefox// @compatible edge// @compatible opera// @compatible safari// @compatible kiwi// @compatible qq// @compatible via// @compatible brave// @version 2025.03.15.0436// @grant GM_addStyle// @created 2025-03-14 20:36:01// @modified 2025-03-14 20:36:01// ==/UserScript==/*** File: youtube-helper.user.js* Project: UserScripts* File Created: 2025/03/15,Saturday 04:36:02* Author: ##的勤务员@#####GodMan (china.qinwuyuan@gmail.com)* -----* Last Modified: 2025/03/15,Saturday 05:57:23* Modified By: ##的勤务员@#####GodMan (china.qinwuyuan@gmail.com)* -----* License: MIT License* Copyright © 2024 - 2025 #####GodMan,Inc*/const directDownload = trueconst infiniteLool = trueconst loopVideo = () => {const video = document.querySelector('video')if (video && !video.loop) {video.loop = true}}const ThemeProgressbar = () => {const css_248z = '.html5-play-progress,.ytp-play-progress{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAMCAIAAAAs6UAAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUNCQzIyREQ0QjdEMTFFMzlEMDM4Qzc3MEY0NzdGMDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUNCQzIyREU0QjdEMTFFMzlEMDM4Qzc3MEY0NzdGMDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQ0JDMjJEQjRCN0QxMUUzOUQwMzhDNzcwRjQ3N0YwOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQ0JDMjJEQzRCN0QxMUUzOUQwMzhDNzcwRjQ3N0YwOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PovDFgYAAAAmSURBVHjaYvjPwMAAxjMZmBhA9H8INv4P4TPM/A+m04zBNECAAQBCWQv9SUQpVgAAAABJRU5ErkJggg==") repeat-x!important;background:linear-gradient(180deg,red 0,red 16.5%,#f90 0,#f90 33%,#ff0 0,#ff0 50%,#3f0 0,#3f0 66%,#09f 0,#09f 83.5%,#63f 0,#63f)!important;background:-webkit-linear-gradient(top,red,red 16.5%,#f90 0,#f90 33%,#ff0 0,#ff0 50%,#3f0 0,#3f0 66%,#09f 0,#09f 83.5%,#63f 0,#63f)!important;background:-moz-linear-gradient(top,red 0,red 16.5%,#f90 16.5%,#f90 33%,#ff0 33%,#ff0 50%,#3f0 50%,#3f0 66%,#09f 66%,#09f 83.5%,#63f 83.5%,#63f 100%)!important}.html5-load-progress,.ytp-load-progress{background:url("data:image/gif;base64,R0lGODlhMAAMAIAAAAxBd////yH/C05FVFNDQVBFMi4wAwEAAAAh+QQECgAAACwAAAAAMAAMAAACJYSPqcvtD6MKstpLr24Z9A2GYvJ544mhXQmxoesElIyCcB3dRgEAIfkEBAoAAAAsAQACAC0ACgAAAiGEj6nLHG0enNQdWbPefOHYhSLydVhJoSYXPO04qrAmJwUAIfkEBAoAAAAsBQABACkACwAAAiGEj6nLwQ8jcC5ViW3evHt1GaE0flxpphn6BNTEqvI8dQUAIfkEBAoAAAAsAQABACoACwAAAiGEj6nLwQ+jcU5VidPNvPtvad0GfmSJeicUUECbxnK0RgUAIfkEBAoAAAAsAAAAACcADAAAAiCEj6mbwQ+ji5QGd6t+c/v2hZzYiVpXmuoKIikLm6hXAAAh+QQECgAAACwAAAAALQAMAAACI4SPqQvBD6NysloTXL480g4uX0iW1Wg21oem7ismLUy/LFwAACH5BAQKAAAALAkAAAAkAAwAAAIghI8Joe0Po0yBWTaz3g/z7UXhMX7kYmplmo0rC8cyUgAAIfkEBAoAAAAsBQAAACUACgAAAh2Ejwmh7Q+jbIFZNrPeEXPudU74IVa5kSiYqOtRAAAh+QQECgAAACwEAAAAIgAKAAACHISPELfpD6OcqTGKs4bWRp+B36YFi0mGaVmtWQEAIfkEBAoAAAAsAAAAACMACgAAAh2EjxC36Q+jnK8xirOW1kavgd+2BYtJhmnpiGtUAAAh+QQECgAAACwAAAAALgALAAACIYSPqcvtD+MKicqLn82c7e6BIhZQ5jem6oVKbfdqQLzKBQAh+QQECgAAACwCAAIALAAJAAACHQx+hsvtD2OStDplKc68r2CEm0eW5uSN6aqe1lgAADs=")!important}.html5-scrubber-button,.ytp-scrubber-button{background:url("data:image/gif;base64,R0lGODlhIgAVAKIHAL3/9/+Zmf8zmf/MmZmZmf+Z/wAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpDMkJBNjY5RTU1NEJFMzExOUM4QUM2MDAwNDQzRERBQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCREIzOEIzMzRCN0IxMUUzODhEQjgwOTYzMTgyNTE0QiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCREIzOEIzMjRCN0IxMUUzODhEQjgwOTYzMTgyNTE0QiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZ###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")!important;border:none!important;height:21px!important;margin-left:-18px!important;margin-top:0!important;transform:scale(.8);-webkit-transform:scale(.8);-moz-transform:scale(.8);-ms-transform:scale(.8);width:34px!important}.ytp-progress-bar-container:hover .ytp-load-progress,.ytp-progress-bar-container:hover .ytp-scrubber-button{image-rendering:pixelated}.html5-progress-bar-container,.ytp-progress-bar-container{height:12px!important}.html5-progress-bar,.ytp-progress-bar{margin-top:12px!important}.html5-progress-list,.video-ads .html5-progress-list.html5-ad-progress-list,.video-ads .ytp-progress-list.ytp-ad-progress-list,.ytp-progress-list{height:12px!important}.ytp-volume-slider-track{background:#0c4177!important}'GM_addStyle(css_248z)}let escapeHTMLPolicy = 'trustedTypes' in window? trustedTypes.createPolicy('forceInner', { createHTML: html => html }): { createHTML: html => html }function screenBtnUpdate() {let $miniplayerBtn = document.querySelector('button.ytp-miniplayer-button')if ($miniplayerBtn && !document.getElementById('ytp-screenshot-button')) {const $btn = document.createElement('button')$btn.id = 'ytp-screenshot-button'$btn.classList.add('ytp-screenshot-button', 'ytp-button')$btn.dataset.priority = '5'$btn.dataset.tooltipTargetId = 'ytp-screenshot-button'$btn.dataset.titleNoTooltip = 'Screenshot'$btn.ariaLabel = 'Screenshot'$btn.title = 'Screenshot'$btn.innerHTML = escapeHTMLPolicy.createHTML(`<svg height="100%" version="1.1" viewBox="-300 -1260 1560 1560" width="100%"><use class="ytp-svg-shadow" xlink:href="#ytp-id-screenshot-svg"></use><pathd="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm40-80h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z"fill="#fff" id="ytp-id-screenshot-svg"></path></svg>`)$btn.addEventListener('click', screenshot)insertBefore($btn, $miniplayerBtn)}requestAnimationFrame(screenBtnUpdate)}function insertBefore($element, $sibling) {$sibling.parentElement.insertBefore($element, $sibling)}function screenshot() {const $video = document.querySelector('#player video')if (!$video) {console.error('No video found to screenshot!')return}let wasPlaying = !$video.pausedif (wasPlaying) $video.pause()const $canvas = document.createElement('canvas')$canvas.width = $video.videoWidth$canvas.height = $video.videoHeightlet oldCss = $video.style.cssText$video.style.width = $video.videoWidth + 'px'$video.style.height = $video.videoHeight + 'px'const ctx = $canvas.getContext('2d')ctx.drawImage($video, 0, 0, $video.videoWidth, $video.videoHeight)$canvas.toBlob(blob => {if (directDownload) {const a = document.createElement('a')a.href = URL.createObjectURL(blob)a.download = `${getFileName()}.png`a.click()} else {const item = new ClipboardItem({ 'image/png': blob })navigator.clipboard.write([item])}$video.style.cssText = oldCss$canvas.remove()if (wasPlaying) $video.play()})}function getFileName() {const safeFileName = document.title.replace(/[\\/:*?"<>|]/g, '').replace(' - YouTube', '')return safeFileName}if (infiniteLool) {const observer = new MutationObserver(loopVideo)observer.observe(document.body, { childList: true, subtree: true })}requestAnimationFrame(screenBtnUpdate)ThemeProgressbar()