Guest User

UserScript: Youtube related videos rating preview

a guest
Aug 22nd, 2011
441
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name           Youtube related videos rating preview
  3. // @namespace      janschejbal-youtube-rating
  4. // @description    Tired of always hitting crappy "related videos" on Youtube? This shows the rating in the related video section so you can judge before you click.
  5. // @include        http://www.youtube.com/*
  6. // ==/UserScript==
  7.  
  8. /*function getVideoID() {
  9.     var linknodes = document.getElementsByTagName('link');
  10.     for (var i in linknodes) {
  11.         if (linknodes[i].rel == "canonical") return linknodes[i].href.replace("http://www.youtube.com/watch?v=", "");
  12.     }
  13. }
  14.  
  15. var videoid = getVideoID();
  16. */
  17.  
  18. var parser = new DOMParser();
  19.  
  20. function handleVideo(element) {
  21.     var link = element.children[0].href;
  22.     var id = link.replace("http://www.youtube.com/watch?v=","").replace(/&.*/,"");
  23.     var infourl = "http://gdata.youtube.com/feeds/api/videos/"+id+"?v=2";
  24.     GM_xmlhttpRequest({
  25.         method: 'GET',
  26.         url: infourl,
  27.         headers: {
  28.             'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
  29.             'Accept': 'application/atom+xml,application/xml,text/xml',
  30.         },
  31.         onload: function(responseDetails) {
  32.             var xmldoc = parser.parseFromString(responseDetails.responseText,"text/xml");
  33.             var likes = xmldoc.getElementsByTagName('yt:rating')[0].getAttribute('numLikes');
  34.             var dislikes = xmldoc.getElementsByTagName('yt:rating')[0].getAttribute('numDislikes');
  35.             var target = element.getElementsByClassName("view-count")[0];
  36.             var rating = xmldoc.getElementsByTagName('gd:rating')[0].getAttribute('average');
  37.             target.innerHTML += ' <span title="'+likes+' Likes - '+dislikes+' Dislikes" alt="'+likes+' Likes - '+dislikes+' Dislikes" style="float:right; width:50px; height:4px;margin-right:-1px;background:#c00"><div style="float:left;height:4px;border-right:1px solid #fff;background:#060; width:'+Math.round((rating*10))+'px;"></div></span>';
  38.         }
  39.     });
  40.  
  41. }
  42.  
  43.  
  44. var videolinks = document.getElementsByClassName("video-list-item");
  45.  
  46. for (var i in videolinks) {
  47.     handleVideo(videolinks[i]);
  48. }
Advertisement
Add Comment
Please, Sign In to add comment