🏠 返回首頁 

Greasy Fork is available in English.

Better FMovies

Stay Fullscreen and Switch to Next Season on Last Episode

  1. // ==UserScript==
  2. // @name Better FMovies
  3. // @description Stay Fullscreen and Switch to Next Season on Last Episode
  4. // @version 0.1.4
  5. // @require http://code.jquery.com/jquery-latest.js
  6. // @include /https?://(www\.)?fmoviesz\.to\/tv/
  7. // @run-at document-idle
  8. // @namespace https://greasyfork.org/users/1235006
  9. // ==/UserScript==
  10. (function () {
  11. const fullScreenBtn = document.createElement("div");
  12. const fullScreenBtnContent = document.createTextNode("Stay Fullscreen");
  13. fullScreenBtn.id = "fullscreen-btn";
  14. fullScreenBtn.classList.add("item");
  15. fullScreenBtn.appendChild(fullScreenBtnContent);
  16. const bottomButtons = document.querySelector(".c-items");
  17. bottomButtons.appendChild(fullScreenBtn);
  18. fullScreenBtn.addEventListener("click", function () {
  19. var elem = document.getElementById("player");
  20. var fn =
  21. elem.requestFullscreen ||
  22. elem.mozRequestFullScreen ||
  23. elem.webkitRequestFullscreen ||
  24. elem.msRequestFullscreen;
  25. if (fn) {
  26. fn.call(elem);
  27. }
  28. });
  29. const addSkipTimeBtn = document.createElement("div");
  30. addSkipTimeBtn.classList.add("item");
  31. const addSkipTimeBtnContent = document.createTextNode("Add skip time");
  32. addSkipTimeBtn.appendChild(addSkipTimeBtnContent);
  33. let skipTime;
  34. addSkipTimeBtn.addEventListener("click", function () {
  35. let skipTimeRaw = prompt(
  36. "Please enter a valid time for when intro ends (00:00:00):"
  37. );
  38. let a = skipTimeRaw.split(":");
  39. skipTime = +a[0] * 60 * 60 + +a[1] * 60 + +a[2];
  40. });
  41. bottomButtons.appendChild(addSkipTimeBtn);
  42. function receiveMessage(e) {
  43. let visibleEpisodes = $("ul.episodes:visible");
  44. let episodeLinks = Array.from(visibleEpisodes.find("a"));
  45. let lastEpisode = episodeLinks[episodeLinks.length - 1];
  46. let r = e.message || e.data || e.originalEvent.data;
  47. let p = JSON.parse(r);
  48. console.log(p);
  49. if (p.event === "META_LOADED") {
  50. if (skipTime) {
  51. document
  52. .querySelector("#player iframe")
  53. .contentWindow.postMessage(
  54. JSON.stringify({
  55. cmd: "SEEK",
  56. value: skipTime,
  57. }),
  58. "*"
  59. );
  60. }
  61. }
  62. if (lastEpisode.classList.contains("active")) {
  63. if (p.event === "PLAY_COMPLETED") {
  64. let currentSeason = visibleEpisodes.attr("data-season");
  65. let nextSeason =
  66. $("ul.episodes").find(":visible").prevObject[currentSeason];
  67. if (typeof nextSeason !== "undefined") {
  68. nextSeason.querySelector("a").click();
  69. } else {
  70. let firstSeason = $("ul.episodes").find(":visible").prevObject[0];
  71. firstSeason.querySelector("a").click()
  72. }
  73. }
  74. }
  75. }
  76. window.addEventListener("message", receiveMessage);
  77. })();