ProjectFreeTv Episode Guide

Enhance ProjectFreeTV links with episode information.

  1. // ==UserScript==
  2. // @name ProjectFreeTv Episode Guide
  3. // @namespace pftepisodeguide
  4. // @version 0.2
  5. // @description Enhance ProjectFreeTV links with episode information.
  6. // @author splttingatms
  7. // @include http://projectfreetv.im/free/*
  8. // @include https://projectfreetv.im/free/*
  9. // @include http://*.projectfreetv.im/free/*
  10. // @include https://*.projectfreetv.im/free/*
  11. // @include http://projectfreetv.im/episode/*
  12. // @include https://projectfreetv.im/episode/*
  13. // @include http://*.projectfreetv.im/episode/*
  14. // @include https://*.projectfreetv.im/episode/*
  15. // @grant none
  16. // @require http://code.jquery.com/jquery-3.0.0.min.js
  17. // ==/UserScript==
  18.  
  19. (function() {
  20. 'use strict';
  21.  
  22. function isEpisodePage() {
  23. return window.location.href.indexOf("episode") !== -1;
  24. }
  25.  
  26. function parseFullEpisodeTitle(title) {
  27. var parsedEpisode = title.match(/(.+) Season (\d+) Episode (\d+)/);
  28. return {
  29. series: parsedEpisode[1],
  30. season: parsedEpisode[2],
  31. episode: parsedEpisode[3]
  32. };
  33. }
  34. if (isEpisodePage()) {
  35. var fullEpisodeTitle = $(".title")[0].innerText;
  36. var episode = parseFullEpisodeTitle(fullEpisodeTitle);
  37.  
  38. $.getJSON(`https://www.omdbapi.com/?t=${encodeURIComponent(episode.series)}&Season=${episode.season}&Episode=${episode.episode}&callback=?`, function(result) {
  39. $(".box b")[3].nextSibling.data = result.Plot;
  40. });
  41. } else {
  42. $("table tr").each(function () {
  43. var episodeTableRow = $(this);
  44. var episodeLink = $("a:first-child", episodeTableRow);
  45. var episode = parseFullEpisodeTitle(episodeLink.text());
  46.  
  47. $.getJSON(`https://www.omdbapi.com/?t=${encodeURIComponent(episode.series)}&Season=${episode.season}&Episode=${episode.episode}&callback=?`, function(result) {
  48. episodeLink.text(`S${episode.season}E${episode.episode} ${result.Title}`);
  49.  
  50. var plot = $("</p>")
  51. .text(result.Plot)
  52. .css({margin: 0, textAlign: 'left'});
  53.  
  54. $("th", episodeTableRow).append(plot);
  55. });
  56. });
  57. }
  58. })();