Youtube Enhanced Score

YouTube likes/dislikes ratio may hold very little value on highly rated channel since ie. 94% and 96% can be a difference between bad and good video for that channel. This extension computes a logit out of likes ratio thus unbounding and centering it, so it can be more easily human interpretable.

  1. // ==UserScript==
  2. // @name Youtube Enhanced Score
  3. // @description YouTube likes/dislikes ratio may hold very little value on highly rated channel since ie. 94% and 96% can be a difference between bad and good video for that channel. This extension computes a logit out of likes ratio thus unbounding and centering it, so it can be more easily human interpretable.
  4. // @namespace jonnyrobbie
  5. // @include /https?:\/\/(www\.)?(youtu\.be\/|youtube\.com\/(watch\?(.*&)?v=|(embed|v)\/))([^\?&"'>]+)/
  6. // @version 1.0.1
  7. // @grant none
  8. // ==/UserScript==
  9.  
  10.  
  11. function main() {
  12. likes = getLikes();
  13. score = calcScore(likes);
  14. setScore(score);
  15. }
  16.  
  17. function getLikes() {
  18. var score = {
  19. 'likes': parseInt(document.getElementsByClassName("like-button-renderer-like-button")[0].getElementsByClassName("yt-uix-button-content")[0].innerHTML.replace(/,/g, ""), 10),
  20. 'dislikes': parseInt(document.getElementsByClassName("like-button-renderer-dislike-button")[0].getElementsByClassName("yt-uix-button-content")[0].innerHTML.replace(/,/g, ""), 10)
  21. }
  22. return score;
  23. }
  24.  
  25. function calcScore(likes) {
  26. var score = 0;
  27. if (likes.likes == 0 || likes.dislikes == 0) {
  28. score = "N/A";
  29. } else {
  30. var ratio = likes.likes / (likes.likes + likes.dislikes);
  31. score = Math.log(ratio) - Math.log(1-ratio); //logit
  32. score = score.toFixed(2);
  33. }
  34. return score;
  35. }
  36.  
  37. function setScore(score) {
  38. var elScore = document.getElementsByClassName("watch-view-count")[0];
  39. elScore.innerHTML = elScore.innerHTML + " (" + score + ")";
  40. }
  41.  
  42. main();