Aby kontynuować zaloguj lub zarejestruj się.

Instagram Video Controls

Adds video player controls to Instagram videos

  1. // ==UserScript==
  2. // @name Instagram Video Controls
  3. // @namespace https://fxzfun.com/
  4. // @version 1.0.3
  5. // @description Adds video player controls to Instagram videos
  6. // @author FXZFun
  7. // @match https://www.instagram.com/
  8. // @match https://www.instagram.com/*
  9. // @icon https://www.google.com/s2/favicons?sz=64&domain=instagram.com
  10. // @grant GM_addStyle
  11. // @license GNU GPL v3
  12. // ==/UserScript==
  13. (function() {
  14. 'use strict';
  15. let isMuted = JSON.parse(localStorage.getItem("ivc-mute")) ?? true;
  16. let controlsShowing = false;
  17. function runMainPage() {
  18. setInterval(addControls, 500);
  19. }
  20. function addControls() {
  21. document.querySelectorAll("video").forEach(vid => {
  22. vid.controls = "controls";
  23. vid.volume = parseFloat(localStorage.getItem("ivc-volume")) || 0.8;
  24. vid.addEventListener('volumechange', () => localStorage.setItem("ivc-volume", JSON.stringify(vid.muted ? 0 : vid.volume)));
  25. vid.addEventListener('play', () => setTimeout(() => vid.muted = false, 10));
  26. let vidSibling = vid.nextElementSibling.firstChild;
  27. vidSibling.style = "transition: 0.5s; pointer-events: none";
  28. vidSibling.addEventListener('mouseover', () => {
  29. vidSibling.classList.add("ivcControls");
  30. if (controlsShowing) {
  31. vidSibling.classList.remove("ivcControls");
  32. controlsShowing = false;
  33. }
  34. });
  35. vidSibling.addEventListener('mouseout', () => {
  36. vidSibling.classList.remove("ivcControls");
  37. controlsShowing = false;
  38. });
  39. vid.addEventListener('mouseover', () => {
  40. vidSibling.classList.add("ivcControls");
  41. controlsShowing = true;
  42. });
  43. vid.addEventListener('mouseout', () => {
  44. vidSibling.classList.remove("ivcControls");
  45. controlsShowing = false;
  46. });
  47. });
  48. }
  49. let currentURL = "";
  50. setInterval(() => {
  51. if (location.href !== currentURL) {
  52. if (!document.head.innerHTML.includes("::-webkit-media-controls")) GM_addStyle('::-webkit-media-controls-panel { z-index: 999998; position: relative; } .ivcControls { margin-top: -80px; } button[aria-label="Toggle audio"] { display: none; }');
  53. if (location.host === "www.instagram.com" && location.pathname === "/") runMainPage();
  54. console.log("IVC: new video available");
  55. addControls();
  56. currentURL = location.href;
  57. }
  58. }, 500);
  59. console.log("IVC: loading...");
  60. })();