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 unbounding and centering ito, so it can be more easily human interpretable.

当前为 2016-01-31 提交的版本,查看 最新版本

  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 unbounding and centering ito, 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
  7. // @grant none
  8. // ==/UserScript==
  9.  
  10.  
  11. function main() {
  12. likes = getLikes();
  13. score = calcScore(likes);
  14. setScore(score.toFixed(2));
  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. }
  33. return score;
  34. }
  35.  
  36. function setScore(score) {
  37. var elScore = document.getElementsByClassName("watch-view-count")[0];
  38. elScore.innerHTML = elScore.innerHTML + " (" + score + ")";
  39. }
  40.  
  41. main();