Next Kick Stream Delay Display

Displays stream delay next to viewer stats on Kick Next

  1. // ==UserScript==
  2. // @name Next Kick Stream Delay Display
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.3
  5. // @description Displays stream delay next to viewer stats on Kick Next
  6. // @author Your Name
  7. // @match https://next.kick.com/*
  8. // @grant none
  9. // @run-at document-end
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. // Opcjonalnie, zmień te wartości według własnych potrzeb
  16. const targetDelay = 4; // Opóźnienie w sekundach, przy którym zmieniamy prędkość
  17. const speedUpFactor = 1.25; // Współczynnik przyspieszenia
  18.  
  19. function adjustPlaybackRate() {
  20. const video = document.querySelector('video');
  21. let delayText = '';
  22.  
  23. if (video) {
  24. // Oblicz opóźnienie
  25. const currentTime = video.currentTime;
  26. const buffered = video.buffered;
  27.  
  28. if (buffered.length > 0) {
  29. const bufferEnd = buffered.end(buffered.length - 1);
  30. const delay = bufferEnd - currentTime;
  31.  
  32. if (delay > targetDelay) {
  33. video.playbackRate = speedUpFactor;
  34. } else {
  35. video.playbackRate = 1.0; // Przywróć normalną prędkość
  36. }
  37.  
  38. delayText = `${Math.round(delay)}s`;
  39. }
  40. }
  41.  
  42. updateDelayDisplay(delayText);
  43.  
  44. setTimeout(adjustPlaybackRate, 1000);
  45. }
  46.  
  47. function updateDelayDisplay(delayText) {
  48. const viewerStatsContainer = document.querySelector('div.flex.items-center.gap-2.self-end.py-0\\.5');
  49.  
  50. if (viewerStatsContainer) {
  51. let delayElement = document.getElementById('delay-display');
  52. if (!delayElement) {
  53. delayElement = document.createElement('div');
  54. delayElement.id = 'delay-display';
  55. delayElement.className = 'flex items-center gap-1 text-sm font-bold';
  56. delayElement.style.marginRight = '10px'; // Margines z prawej, aby oddzielić od liczby widzów
  57. delayElement.style.color = '#929EA6';
  58. delayElement.innerHTML = `
  59. <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
  60. <path d="M8 1L12 6H10V12H6V6H4L8 1Z"></path>
  61. </svg>
  62. <span>${delayText}</span>
  63. `;
  64. viewerStatsContainer.insertBefore(delayElement, viewerStatsContainer.firstChild); // Dodaj przed liczbą widzów
  65. } else {
  66. delayElement.querySelector('span').textContent = delayText;
  67. }
  68. }
  69. }
  70.  
  71. adjustPlaybackRate();
  72. })();