Greasy Fork is available in English.

⚙vpGenius🎬

Video speed changer and other useful video player tools

Versione datata 19/01/2022. Vedi la nuova versione l'ultima versione.

  1. // ==UserScript==
  2. // @name ⚙vpGenius🎬
  3. // @namespace https://github.com/Filszu/video_player_genius
  4. // @version 1.1
  5. // @description Video speed changer and other useful video player tools
  6. // @description:pl Skrypt umożliwiający przyspieszenie video do 16x i pobranie go.
  7. // @author Filszu (https://github.com/Filszu)
  8. // @license MIT
  9. // @match http://*/*
  10. // @include https://www.youtube.com/*
  11. // @include *://*/**
  12. // @icon https://ciac.me/logo.png
  13. // @resource customCSS https://raw.githubusercontent.com/Filszu/video_player_genius/master/style.css
  14. // @grant GM_addStyle
  15. // @grant GM_getResourceText
  16. // ==/UserScript==
  17.  
  18. var newCSS = GM_getResourceText ("customCSS");
  19. GM_addStyle (newCSS);
  20.  
  21.  
  22.  
  23.  
  24. console.log('%c------------⚙vpGenius------------', 'color: green; ');
  25. var body;
  26. var video_players;
  27. //detected videoplayers
  28. let videos_no;
  29.  
  30.  
  31. window.addEventListener("load", function(){
  32. body = document.querySelector("body");
  33. //FIND VIDEO
  34.  
  35. try{
  36.  
  37. video_players=document.querySelectorAll('video');
  38.  
  39. //detected videoplayers
  40. videos_no=video_players.length;
  41. console.log(video_players);
  42. console.log(video_players[0]);
  43.  
  44. if(videos_no<=0){
  45.  
  46. console.log('%c[⚙vpGenius]', 'color: green; ',`Video hasn't been founded`);
  47. console.log("to refresh, type 'setup()' in the console");
  48. }
  49. else{
  50. setup();
  51. }
  52. }catch(err){
  53. console.log('%c[⚙vpGenius]', 'color: green; ',`Video hasn't been founded`);
  54. console.log(err);
  55.  
  56. }
  57.  
  58. })
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71. function setup(){
  72. console.log('%c------------⚙vpGenius------------', 'color: green; ');
  73. //PANEL
  74.  
  75. const el = document.createElement("div");
  76. const menu = el;
  77. menu.innerHTML = `
  78. <div id="menu-container">
  79. <div id="menu_icon">⚙vpGenius🎬
  80. <div class="title_desc">powered by: <a href="https://ciac.me">CIAC.me V-speeder</a></div>
  81. </div>
  82.  
  83.  
  84. <div id="menuOptions">
  85. video speed: <span id="v_speed_info">1</span>
  86. <input type="range" id="speed_control" name="speed_control""
  87. min="0.1" max="16" value="1" step="0.1" style="width: 100%;">
  88.  
  89. <div>🎬Detected: <span class="specialFont">${videos_no}</span> video-players</div>
  90.  
  91.  
  92.  
  93. <div class="controls">
  94. <div onclick="controls(1)">▶</div>
  95.  
  96. <div onclick="controls(0)">II</div>
  97. </div>
  98.  
  99. <div id="operations-con">
  100. <div class="controls" ><div>open </div> / <div> download⬇</div></div>
  101. <div id="operations">videos: </div>
  102.  
  103.  
  104. </div>
  105.  
  106.  
  107.  
  108.  
  109. <!--⬜▶👣⬛💱🔄⏸⏺⏹-->
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116. </div>
  117.  
  118.  
  119.  
  120.  
  121. `;
  122.  
  123.  
  124.  
  125.  
  126. body.append(menu);
  127.  
  128. const menu_icon = document.querySelector("#menu_icon");
  129. const menu_options = document.querySelector("#menuOptions");
  130. const v_control = document.querySelector('#speed_control');
  131. const v_info = document.querySelector('#v_speed_info');
  132. const operations = document.querySelector('#operations');
  133.  
  134.  
  135.  
  136.  
  137. //change speed
  138.  
  139. v_control.addEventListener("change", function(){
  140.  
  141. const v_speed =v_control.value;
  142. v_info.innerHTML = v_speed;
  143.  
  144. for( let v_num in video_players)
  145. {
  146. // video_players[v_num].style.display="none";
  147.  
  148. // video_players[v_num].defaultPlaybackRate = 1.0;
  149. // video_players[v_num].play();
  150. video_players[v_num].playbackRate = v_speed;
  151. }
  152.  
  153.  
  154. });
  155.  
  156.  
  157.  
  158.  
  159. //edit div
  160. //DOWNLOAD or open option
  161.  
  162. let nContent='';
  163.  
  164. for(let i=0; i<videos_no; i++){
  165. let file_name = video_players[i].currentSrc;
  166.  
  167.  
  168.  
  169. // nContent+=`<div>video${i} (src="${file_name}")</div>`;
  170. nContent+=`<div>
  171. video ${i}:
  172.  
  173. <a href="${file_name}" target="blank" title="open: ${file_name}">open↗</a>`
  174.  
  175. }
  176.  
  177.  
  178. operations.innerHTML=nContent;
  179.  
  180. }
  181.  
  182. function controls(action){
  183.  
  184.  
  185. switch (action){
  186. case 1:
  187. for(let i=0; i<videos_no; i++){
  188. video_players[i].play();
  189. }
  190. break;
  191. case 0:
  192. video_players.forEach(v_num => {
  193. v_num.pause();
  194. });
  195. break;
  196. }
  197.  
  198. }
  199.  
  200. // ADD STYLES
  201. // Get HTML head element
  202. const head = document.getElementsByTagName('HEAD')[0];
  203. // Create new link Element
  204. const link = document.createElement('link');
  205. // set the attributes for link element
  206. link.rel = 'stylesheet';
  207. link.type = 'text/css';
  208. link.href = 'style.css';
  209. // Append link element to HTML head
  210. head.appendChild(link);