Advertisement
Guest User

Untitled

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