EZTVx enhancement

EZTVx Add show's poster preview on info icon at the left of torrent list's Mouseover, move "Aired today" list to the left side, etc. find out yourself.

  1. // ==UserScript==
  2. // @name EZTVx enhancement
  3. // @name:zh EZTVx 网站增强
  4. // @author Zhonggh@gmail.com
  5. // @version 0.1.5
  6. // @namespace http://tampermonkey.net/
  7. // @description EZTVx Add show's poster preview on info icon at the left of torrent list's Mouseover, move "Aired today" list to the left side, etc. find out yourself.
  8. // @description:zh 增加剧集海报预览功能,将鼠标放到列表左边的i图标上即可显示;将"Aired today"列表放到左边栏,在右边栏增加yysub的美剧播出时间表,在剧集详情页增加搜索豆瓣的链接,其他增强细节自己体会。
  9. // @match https://eztvx.to/home
  10. // @match https://eztvx.to/shows/*
  11. // @match https://eztvx.to/search/*
  12. // @match https://eztvx.to/cat/tv-packs*
  13. // @connect eztvx.to
  14. // @connect www.yysub.cc
  15. // @grant GM_xmlhttpRequest
  16. // @license aGPL License
  17. // ==/UserScript==
  18. //document.querySelectorAll("#header_holder > table > tbody > tr > td:nth-child(2) > a").forEach(element => { element.innerHTML = element.title ? element.title : element.innerHTML});
  19.  
  20. try {
  21. document.querySelectorAll("#header_holder > table").forEach(element => { element.width = "1220";});
  22. document.getElementsByClassName("forum_header_border_normal")[0].setAttribute('width', 'max-content');
  23. } catch (error) {console.error(error);};
  24.  
  25. const $position = document.querySelector("body");
  26. $position.insertAdjacentHTML('afterend', '<div id="divFloat" style="position:absolute;"><img height="500px" id="minipics" src=""></div><div style="height:450px;"> </div>');
  27. const gmFetch = (url, {method,headers,anonymous} = {}) => new Promise((onload, onerror) => {GM_xmlhttpRequest({url, method, headers, anonymous, onload, onerror})});
  28. const parseHTML = (str) => {const tmp = document.implementation.createHTMLDocument(); tmp.body.innerHTML = str; return tmp;};
  29.  
  30. const YYSchedule = async() => {
  31. try {
  32. document.querySelectorAll("#header_holder > table > tbody > tr > td:nth-child(1) > a").forEach(element => {
  33. var hrefs = element.href.split("/");
  34. element.childNodes[0].title = "https://eztvx.to/ezimg/thumbs/" + hrefs[5] + "-" + hrefs[4] + ".jpg";
  35. element.addEventListener("mouseover", () => {
  36. document.querySelector("#minipics").src = element.childNodes[0].title;
  37. document.querySelector("#divFloat").style.setProperty("Left", (window.event.pageX + 20 || window.event.clientX + scrollX + 20) + "px");
  38. document.querySelector("#divFloat").style.setProperty("Top", (window.event.pageY + 20 || window.event.clientY + scrollY + 20) + "px");
  39. document.querySelector("#divFloat").style.setProperty("display", "block");
  40. });
  41. element.addEventListener("mouseout", () => {
  42. document.querySelector("#divFloat").style.setProperty("display", "none");
  43. });
  44. })
  45. } catch (error) {console.error(error);}
  46.  
  47. try {
  48. const $position = document.querySelector("#header_holder");$position.style="display, inline-block;position: absolute;left: 50%;transform: translate(-50%, 0px);";
  49. const html = '<div id="lside" style="float: left; position: absolute; left: 0px;top: 138px;width:'+(screen.width-1300)/2+'px;">'
  50. +'<a href="/calendar/" class="forum_thread_header" style="color:#c0dbf6"><b>Aired today on EZTV 今日播放:'
  51. +new Array(" Sunday 星期天", " Monday 星期一", " Tuesday 星期二", " Wednesday 星期三", " Thursday 星期四", " Friday 星期五", " Saturday 星期六")[new Date().getDay()] + '</b></a>'
  52. +document.getElementsByClassName("section_header_column")[1].innerHTML + '<div style="height:520px;"> </div></div>';
  53. $position.insertAdjacentHTML('afterend', html);
  54. } catch (error) {console.error(error);}
  55.  
  56. try {
  57. const res = await gmFetch('https://www.yysub.cc/tv/schedule', {method: 'GET', anonymous: true, headers: {'User-Agent': 'Android'},});
  58. const yysubs = parseHTML(res.responseText).getElementsByClassName("ihbg");
  59. var array = Array.from(yysubs);
  60. array.forEach(element => {element.innerHTML = element.innerHTML.toString().replaceAll('/resource', 'https://www.yysub.cc/resource');});
  61. const yysub = array[new Date().getDate() - 1].innerHTML;
  62. const $position = document.querySelector("#header_holder"); //if (!$position) return;
  63. const html = '<div id="rside" style="float:right; position:relative; top:136px; display:block;"><div>'
  64. +document.getElementsByClassName("section_header_column")[2].innerHTML + '</div><br><div>' + document.getElementsByClassName("section_header_column")[3].innerHTML + '</div><br><div>' + yysub
  65. + '</div></div><style>.start{display:inline-block;color:#FFFFFF;background:#39BB66;border-radius:4px;}.new{display:inline-block;color:#FFFFFF;background:#3866C5;border-radius:4px;}'
  66. + '.completed{display:inline-block;color:#FFFFFF;background:#EF4238;border-radius:4px;}.end{display:inline-block;color:#FFFFFF;background:rgb(72,94,105);border-radius:4px;}</style>';
  67. $position.insertAdjacentHTML('afterend', html);
  68. } catch (error) {console.error(error);}
  69.  
  70. try {
  71. document.querySelectorAll("#lside > table > tbody > tr > td > a").forEach(element => {
  72. var hrefs = element.href.split("/");
  73. element.title = "https://eztvx.to/ezimg/thumbs/" + hrefs[5] + "-" + hrefs[4] + ".jpg";
  74. element.addEventListener("mouseover", () => {
  75. document.querySelector("#minipics").src = element.title;
  76. document.querySelector("#divFloat").style.setProperty("Left", (window.event.pageX + 20 || window.event.clientX + scrollX + 20) + "px");
  77. document.querySelector("#divFloat").style.setProperty("Top", (window.event.pageY + 20 || window.event.clientY + scrollY + 20) + "px");
  78. document.querySelector("#divFloat").style.setProperty("display", "block");
  79. });
  80. element.addEventListener("mouseout", () => {
  81. document.querySelector("#divFloat").style.setProperty("display", "none");
  82. });
  83. })
  84. } catch (error) {console.error(error);};
  85.  
  86. //document.querySelectorAll("#header_holder > table")[1].remove();
  87. try {document.querySelector("#header_holder > table:nth-child(9)").remove();} catch (error) {}
  88. try {document.querySelectorAll("#header_holder > table > tbody > tr > td:nth-child(2) > a").forEach(element => { element.innerHTML = element.title ? element.title : element.innerHTML});} catch (error) {}
  89. };
  90. YYSchedule();
  91.  
  92. try {
  93. const douban = document.querySelector("#header_holder > div > table > tbody > tr > td > center > table > tbody > tr > td > a");
  94. const imdb = douban.href.split("/");
  95. const html = '<br><a href="https://search.douban.com/movie/subject_search?search_text=' + imdb[4] + '" target="douban">在豆瓣中搜索 ' + douban.text.replace(" on IMDb", "") + '</a>';
  96. const $position = douban;
  97. $position.insertAdjacentHTML('afterend', html);
  98. } catch (error) {console.error(error);};