Advertisement
Guest User

Untitled

a guest
Nov 17th, 2021
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.92 KB | None | 0 0
  1. var JsCode = `
  2. //-----------------------------------------------------------------------------
  3. // Tools
  4. //-----------------------------------------------------------------------------
  5.  
  6. async function waitForElm(s) {
  7. while (!document.querySelector(s)) {
  8. await new Promise(r => requestAnimationFrame(r))
  9. }
  10. return;
  11. }
  12.  
  13. function FormatNumber(num) {
  14. if (num >= 1000000000) {
  15. return (num / 1000000000).toFixed(1).replace(/\.0$/, '') + 'B';
  16. }
  17. if (num >= 1000000) {
  18. return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
  19. }
  20. if (num >= 1000) {
  21. return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'K';
  22. }
  23. return num;
  24. }
  25.  
  26.  
  27. //-----------------------------------------------------------------------------
  28. // Return system
  29. //-----------------------------------------------------------------------------
  30.  
  31. function SetStatisticInfo()
  32. {
  33. var data = document.querySelector("ytd-app").data;
  34. var vidroot = null;
  35. for (var i = 0; i < data.response.contents.twoColumnWatchNextResults.results.results.contents.length; i++)
  36. if (typeof data.response.contents.twoColumnWatchNextResults.results.results.contents[i].videoPrimaryInfoRenderer != 'undefined')
  37. vidroot = data.response.contents.twoColumnWatchNextResults.results.results.contents[i];
  38.  
  39. var ratio = data.playerResponse.videoDetails.averageRating;
  40. if (!ratio)
  41. return false;
  42.  
  43. // Calculate
  44. var likes = Number(vidroot.videoPrimaryInfoRenderer.videoActions.menuRenderer.topLevelButtons[0].toggleButtonRenderer.toggledText.accessibility.accessibilityData.label.replace(/[^0-9]/g,'')) - 1;
  45. //if (document.querySelectorAll("yt-formatted-string#text.ytd-toggle-button-renderer")[0].parentNode.parentNode.children[0].children[0].children[0].getAttribute("aria-pressed") == "true")
  46. // likes++; // Is we putted like?
  47. var dislikes = Math.round(likes * ((5 - ratio) / (ratio - 1)));
  48. //if (document.querySelectorAll("yt-formatted-string#text.ytd-toggle-button-renderer")[1].parentNode.parentNode.children[0].children[0].children[0].getAttribute("aria-pressed") == "true")
  49. // dislikes++; // Is we putted dislike?
  50.  
  51. // Modify score
  52. document.querySelectorAll("yt-formatted-string#text.ytd-toggle-button-renderer")[0].innerHTML = FormatNumber(likes.toString());
  53. document.querySelectorAll("yt-formatted-string#text.ytd-toggle-button-renderer")[1].innerHTML = FormatNumber(dislikes.toString());
  54.  
  55. // Modify ratio
  56. var sentimentPercent = parseInt((((likes / (likes + dislikes)) * 100 * 100) / 100)).toString();
  57. document.querySelector("ytd-sentiment-bar-renderer").removeAttribute("hidden");
  58. document.getElementById("like-bar").setAttribute("style", "width: " + sentimentPercent + "%;");
  59. document.getElementById("sentiment").setAttribute("style", "width: " +
  60. String(document.querySelectorAll("yt-formatted-string#text.ytd-toggle-button-renderer")[0].parentElement.getBoundingClientRect().width +
  61. document.querySelectorAll("yt-formatted-string#text.ytd-toggle-button-renderer")[1].parentElement.getBoundingClientRect().width + 12) +
  62. "px;");
  63.  
  64. return true;
  65. }
  66.  
  67. function Init()
  68. {
  69. if (!SetStatisticInfo())
  70. return false;
  71.  
  72. // To fix value on "like" press
  73. document.querySelectorAll("ytd-toggle-button-renderer")[0].parentNode.addEventListener('click', SetStatisticInfo);
  74.  
  75. return true;
  76. }
  77.  
  78.  
  79. //-----------------------------------------------------------------------------
  80. // Init
  81. //-----------------------------------------------------------------------------
  82.  
  83. waitForElm("yt-formatted-string#text.ytd-toggle-button-renderer").then(() => Init());
  84. window.addEventListener('yt-page-data-updated', Init, false);
  85. //window.addEventListener('yt-navigate-finish', Init, false);
  86. `;
  87.  
  88. var script = document.createElement('script');
  89. script.textContent = JsCode;
  90. (document.head||document.documentElement).appendChild(script);
  91. script.remove();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement