JavDB Trailer

JavDB观看预告片

  1. // ==UserScript==
  2. // @name JavDB Trailer
  3. // @namespace http://tampermonkey.net/
  4. // @version 2025-01-03
  5. // @description JavDB观看预告片
  6. // @author haoyinhaoyin
  7. // @match https://javdb.com/v/*
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=javdb.com
  9. // @grant GM_xmlhttpRequest
  10. // @connect javtrailers.com
  11. // @license MIT
  12. // ==/UserScript==
  13.  
  14. (function () {
  15. 'use strict';
  16. // javdb获取包含IPBZ-010的span元素
  17. const spanElement = document.querySelector('.panel-block.first-block .value a');
  18. if (spanElement != null) {
  19. // 获取完整的文本内容
  20. const javId = spanElement.parentElement.textContent.trim();
  21. toPreview(javId, javdb);
  22. } else {
  23. console.log("no javdb");
  24. }
  25.  
  26. function toPreview(javId, funToDo) {
  27. console.log(javId); // 输出: IPBZ-010
  28. var url = `https://search.javtrailers.com/indexes/videos/search?q=${javId}&page=1&sort=releaseDate:desc&hitsPerPage=1`
  29. doGet(url).then(data => {
  30. console.log(data);
  31. const contendId = JSON.parse(data)['hits'][0]['contentId']
  32. funToDo(javId, contendId);
  33. });
  34. }
  35.  
  36. function javdb(javId, contendId) {
  37. // 输出结果
  38. console.log(javId); // 输出: IPBZ-010
  39. const searchUrl = `https://javtrailers.com/search/${javId}`;
  40. const newUrl = `https://javtrailers.com/video/${contendId}`;
  41.  
  42. const existingDiv = document.querySelector('.panel-block.first-block');
  43. // 生成新的div
  44. const toTrailerHTML = `
  45. <div class="panel-block">
  46. <strong>预览:</strong>
  47. &nbsp;<span class="value"><a href="${newUrl}" target="_blank">${javId}</a></span>
  48. &nbsp;
  49. <a class="button is-white copy-to-clipboard" title="search" href="${searchUrl}" target="_blank">
  50. <span class="icon is-small">
  51. <i class="icon-search"></i>
  52. </span>
  53. </a>
  54. </div>
  55. `;
  56. // 插入新的div到现有div的后边
  57. if (existingDiv) {
  58. existingDiv.insertAdjacentHTML('afterend', toTrailerHTML);
  59. } else {
  60. console.warn("Existing div not found.");
  61. }
  62. }
  63.  
  64. async function doGet(url) {
  65. return new Promise(resolve => {
  66. GM.xmlHttpRequest({
  67. method: "GET",
  68. headers: { "authorization": "Bearer 6b4bd3e560e994a5b009023e1d21f51e95dbb86ca3f47cb03f34f8a2cb9a93f2" },
  69. url,
  70. onload: response => resolve(response.responseText),
  71. });
  72. })
  73. }
  74. })();