Javlib Emby Highlighter and Redirector

在javlib高亮emby存在的视频,并在详情页提供一键跳转功能

  1. // ==UserScript==
  2. // @name Javlib Emby Highlighter and Redirector
  3. // @namespace https://github.com/CtkGHoSt/emby_highlighter
  4. // @version 0.1.3
  5. // @description 在javlib高亮emby存在的视频,并在详情页提供一键跳转功能
  6. // @author ctkghost
  7. // @match https://www.javlibrary.com/*
  8. // @require http://code.jquery.com/jquery-latest.js
  9. // @grant GM_xmlhttpRequest
  10. // @grant GM_getValue
  11. // @grant GM_setValue
  12. // @license MIT
  13. // ==/UserScript==
  14.  
  15. var embyAPI = GM_getValue("emby_api");
  16. var embyBaseUrl = GM_getValue("emby_base_url");
  17.  
  18. if (!embyAPI || !embyBaseUrl) {
  19. alert("No EmbY_API and EmbY_BASE_URL / 未设置emby_api和emby_base_url");
  20. let _emby_base_url = prompt(
  21. 'emby_base_url:'
  22. );
  23. let _emby_api = prompt("emby_api:");
  24. if (_emby_api && _emby_base_url) {
  25. GM_setValue("emby_api", _emby_api);
  26. GM_setValue("emby_base_url", _emby_base_url);
  27. }
  28. alert("Reload Page / 刷新页面");
  29. location.reload();
  30. return;
  31. }
  32.  
  33. (function () {
  34. let allVideo = $(".video");
  35. console.log(allVideo);
  36. if (allVideo.length > 0) {
  37. // list page
  38. for (let i = 0; i < allVideo.length; i++) {
  39. let bango = allVideo[i].children[0].title.split(" ")[0];
  40. if (bango.length == 0) {
  41. bango = allVideo[i].children[1].title.split(" ")[0];
  42. }
  43. console.log(bango);
  44. GM_xmlhttpRequest({
  45. method: "GET",
  46. url:
  47. embyBaseUrl+"emby/Users/"+embyAPI+"/Items?api_key="+embyAPI+
  48. "&Recursive=true&IncludeItemTypes=Movie&SearchTerm="+bango,
  49. headers: {
  50. accept: "application/json",
  51. },
  52. onload: (res) => {
  53. let rr = JSON.parse(res.responseText);
  54. console.log(rr);
  55. if(rr.Items.length>0){
  56. allVideo[i].style.backgroundColor = "HotPink";
  57. }
  58. },
  59. });
  60. }
  61. } else {
  62. // info page
  63. let bango = $("#video_id").children()[0].children[0].children[0].children[1].innerHTML;
  64. GM_xmlhttpRequest({
  65. method: "GET",
  66. url:
  67. embyBaseUrl+"emby/Users/"+embyAPI+"/Items?api_key="+embyAPI+
  68. "&Recursive=true&IncludeItemTypes=Movie&SearchTerm="+bango,
  69. headers: {
  70. accept: "application/json",
  71. },
  72. onload: (res) => {
  73. let rr = JSON.parse(res.responseText);
  74. console.log(rr);
  75. for (let idx = 0; idx < rr.Items.length; idx++) {
  76. let _emby_url =
  77. embyBaseUrl +
  78. "web/index.html#!/item?id=" +
  79. rr.Items[idx].Id +
  80. "&serverId=" +
  81. rr.Items[idx].ServerId;
  82. console.log(_emby_url);
  83. $("#video_info").append(
  84. '<div style="border:3px solid HotPink" class="item"><b><a href="' +
  85. _emby_url +
  86. '" target="_blank" >' +
  87. "<font size=6>跳转到emby👉</font></a></b>" +
  88. "</div>"
  89. );
  90. $("#video_info").append("<br>");
  91. }
  92. },
  93. });
  94. }
  95. })();