Plex-IMDB

Add IMDB link and ratings to Plex movies

  1. // ==UserScript==
  2. // @name Plex-IMDB
  3. // @namespace plex.tv
  4. // @description Add IMDB link and ratings to Plex movies
  5. // @author John Woods
  6. // @include http://127.0.0.1:32400/web/index.html#!/server/*
  7. // @include http://plex.tv/web/app#!/server/*
  8. // @require http://code.jquery.com/jquery-1.11.0.min.js
  9. // @require https://greasyfork.org/scripts/1003-wait-for-key-elements/code/Wait%20for%20key%20elements.js?version=2765
  10. // @version 0.0.2
  11. // @grant GM_xmlhttpRequest
  12. // ==/UserScript==
  13.  
  14. waitForKeyElements(".metadata-right", run);
  15.  
  16. // var loadingImg = "data:image/gif;base64,R0lGODlhEAAQAPQAAPbx7pmZmfPu662sq8jGxJqamqampefj4NXS0KCfn8PAv727uuvn5NDNy+Dc2rKxsLi2tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAAFUCAgjmRpnqUwFGwhKoRgqq2YFMaRGjWA8AbZiIBbjQQ8AmmFUJEQhQGJhaKOrCksgEla+KIkYvC6SJKQOISoNSYdeIk1ayA8ExTyeR3F749CACH5BAkKAAAALAAAAAAQABAAAAVoICCKR9KMaCoaxeCoqEAkRX3AwMHWxQIIjJSAZWgUEgzBwCBAEQpMwIDwY1FHgwJCtOW2UDWYIDyqNVVkUbYr6CK+o2eUMKgWrqKhj0FrEM8jQQALPFA3MAc8CQSAMA5ZBjgqDQmHIyEAIfkECQoAAAAsAAAAABAAEAAABWAgII4j85Ao2hRIKgrEUBQJLaSHMe8zgQo6Q8sxS7RIhILhBkgumCTZsXkACBC+0cwF2GoLLoFXREDcDlkAojBICRaFLDCOQtQKjmsQSubtDFU/NXcDBHwkaw1cKQ8MiyEAIfkECQoAAAAsAAAAABAAEAAABVIgII5kaZ6AIJQCMRTFQKiDQx4GrBfGa4uCnAEhQuRgPwCBtwK+kCNFgjh6QlFYgGO7baJ2CxIioSDpwqNggWCGDVVGphly3BkOpXDrKfNm/4AhACH5BAkKAAAALAAAAAAQABAAAAVgICCOZGmeqEAMRTEQwskYbV0Yx7kYSIzQhtgoBxCKBDQCIOcoLBimRiFhSABYU5gIgW01pLUBYkRItAYAqrlhYiwKjiWAcDMWY8QjsCf4DewiBzQ2N1AmKlgvgCiMjSQhACH5BAkKAAAALAAAAAAQABAAAAVfICCOZGmeqEgUxUAIpkA0AMKyxkEiSZEIsJqhYAg+boUFSTAkiBiNHks3sg1ILAfBiS10gyqCg0UaFBCkwy3RYKiIYMAC+RAxiQgYsJdAjw5DN2gILzEEZgVcKYuMJiEAOwAAAAAAAAAAAA==";
  17. var loadingImg = "data:image/gif;base64,R0lGODlhEAAQAPIAAP////////7+/v7+/v////7+/v7+/v7+/iH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==";
  18. var targetPopup = 'imdb';
  19. var running = false;
  20.  
  21. function processImdbInfo(content, title) {
  22. var movieInfo = content;
  23. var imdbUrl = 'http://www.imdb.com/title/'+movieInfo.imdbID;
  24. if (content.code == 404) {
  25. $('#loading_image').html('<em>Could not find <a style="color:#dd0000;" href="http://www.imdb.com/find?q='+title+'&s=tt&ttype=ft" target="'+targetPopup+'">IMDB</a> info</em>');
  26. } else {
  27. $('#loading_image').html('&raquo;&nbsp;<a href="'+imdbUrl+
  28. '" target="'+targetPopup+'">IMDB: </a>'+movieInfo.imdbRating);
  29. }
  30. }
  31.  
  32. function getImdbInfo(title, year) {
  33. if (title === '') {
  34. return null;
  35. }
  36. var t = title.replace(/\s/g, '+');
  37. var url = 'http://omdbapi.com/?t='+t+'&y='+year;
  38. GM_xmlhttpRequest({
  39. method: "GET",
  40. url: url,
  41. onload: function(response) {
  42. // We've received a response from the API
  43. var data = JSON.parse(response.responseText);
  44. processImdbInfo(data, title);
  45. },
  46. onerror: function(response) {
  47. var data = JSON.parse(response.responseText);
  48. console.log('error:'+data);
  49. $('#loading_image').html('<em>IMDB Error</em>');
  50. }
  51. });
  52. }
  53.  
  54. function run(jNode) {
  55. var div = $(".metadata-right");
  56. var movieTitle = $(".item-title").text();
  57. var movieYear = $(".item-year").text();
  58. div.append("<span id='loading_image'><img src='" + loadingImg + "' alt='Loading...'></span>");
  59. getImdbInfo(movieTitle, movieYear);
  60. }