JAV 添加跳转在线观看

为 JavDB、JavBus、JavLibrary 这三个站点添加跳转在线观看的链接

< Feedback on JAV 添加跳转在线观看

سؤال / تعليق

§
Posted: 04-04-2023

大佬,GGJav似乎有了些改动。 这里的spaceCode替换"-"为" " 不再适用。 搜索必须精确到添加"-" 修改成false或者删除就能正常使用了。

 {
  name: "GGJAV",
  disable: false,
  hostname: "ggjav.com",
  url: "https://ggjav.com/main/search?string={{code}}",
  fetcher: "parser",
  domQuery: {
    listIndex: 1,
    spaceCode: false,
    linkQuery: "div.columns.large-3.medium-6.small-12.item.float-left>div.item_title>a.gray_a",
    titleQuery: "div.columns.large-3.medium-6.small-12.item.float-left>div.item_title>a.gray_a",

  },
  method: print,
 }

§
Posted: 04-04-2023

同时我发现,javlibrary网站无论是否有资源promise请求返回的状态码都是200
导致Javlib按钮常亮绿色
我针对javlib网址搜到资源会跳转的特性,
给function xhr进行了修改
现在会优先判断是否是javlib,

javlib --> 判断请求后网页是否跳转:
跳转 --> 亮
不跳转 --> 不亮
其他网站 --> 正常根据状态码判断

以下是修改后的代码

function xhr(siteItem, targetLink, CODE) {
const xhrPromise = new Promise((resolve) => {
GM_xmlhttpRequest({
method: "GET",
url: targetLink,
onload: (response) => {
const isJavLibraryLink = /javlibrary/.test(targetLink); // 判断是否为 javlibrary 的链接
if (isJavLibraryLink) {
// 如果是 javlibrary 链接
if (response.status === 200 && response.finalUrl !== targetLink) {
// 如果请求成功且发生了跳转
resolve({
isSuccess: true,
targetLink,
hasSubtitle: false,
hasLeakage: false,
msg: "[get],存在资源",
});
} else {
// 如果请求失败或者没有跳转
resolve({
isSuccess: false,
targetLink,
hasSubtitle: false,
hasLeakage: false,
msg: "应该是没有资源",
});
}
} else {
// 如果不是 javlibrary 链接
if (siteItem.fetcher === "get") {
if (response.status === 404) {
resolve({
isSuccess: false,
targetLink,
hasSubtitle: false,
hasLeakage: false,
msg: "应该是没有资源",
});
} else {
const { hasSubtitle, hasLeakage, isSuccess } = videoPageParser(
response.responseText,
siteItem.domQuery,
);
resolve({
isSuccess,
targetLink,
hasSubtitle,
hasLeakage,
msg: "[get],存在资源",
});
}
} else if (siteItem.fetcher === "parser") {
const {
targetLink: targetLink2,
isSuccess,
hasLeakage,
hasSubtitle,
} = serachPageParser(response.responseText, siteItem.domQuery, siteItem.hostname, CODE);
resolve({
isSuccess,
targetLink: isSuccess ? targetLink2 : targetLink2,
hasSubtitle,
hasLeakage,
msg: "[parser]存在资源",
});
}
}},

onerror: (error) => {
resolve({
isSuccess: false,
targetLink,
hasSubtitle: false,
hasLeakage: false,
msg: error.error,
});
},

});
});
return xhrPromise;
}

§
Posted: 04-04-2023

(不太会用markdown,重新编制了下。。救命:X)




同时我发现,javlibrary网站无论是否有资源promise请求返回的状态码都是200
导致Javlib按钮常亮绿色
我针对javlib网址搜到资源会跳转的特性,
给function xhr进行了修改
现在会优先判断是否是javlib,

javlib --> 判断请求后网页是否跳转:
跳转 --> 亮
不跳转 --> 不亮
其他网站 --> 正常根据状态码判断

以下是修改后的代码

function xhr(siteItem, targetLink, CODE) {
    const xhrPromise = new Promise((resolve) => {
      GM_xmlhttpRequest({
          method: "GET",
          url: targetLink,
          onload: (response) => {
              const isJavLibraryLink = /javlibrary/.test(targetLink); // 判断是否为 javlibrary 的链接
              if (isJavLibraryLink) {
                  // 如果是 javlibrary 链接
                  if (response.status === 200 && response.finalUrl !== targetLink) {
                      // 如果请求成功且发生了跳转
                      resolve({
                          isSuccess: true,
                          targetLink,
                          hasSubtitle: false,
                          hasLeakage: false,
                          msg: "[get],存在资源",
                      });
                  } else {
                      // 如果请求失败或者没有跳转
                      resolve({
                          isSuccess: false,
                          targetLink,
                          hasSubtitle: false,
                          hasLeakage: false,
                          msg: "应该是没有资源",
                      });
                  }
              } else {
                  // 如果不是 javlibrary 链接
                  if (siteItem.fetcher === "get") {
                      if (response.status === 404) {
                          resolve({
                              isSuccess: false,
                              targetLink,
                              hasSubtitle: false,
                              hasLeakage: false,
                              msg: "应该是没有资源",
                          });
                      } else {
                          const { hasSubtitle, hasLeakage, isSuccess } = videoPageParser(
                              response.responseText,
                              siteItem.domQuery,
                          );
                          resolve({
                              isSuccess,
                              targetLink,
                              hasSubtitle,
                              hasLeakage,
                              msg: "[get],存在资源",
                          });
                      }
          } else if (siteItem.fetcher === "parser") {
            const {
              targetLink: targetLink2,
              isSuccess,
              hasLeakage,
              hasSubtitle,
            } = serachPageParser(response.responseText, siteItem.domQuery, siteItem.hostname, CODE);
            resolve({
              isSuccess,
              targetLink: isSuccess ? targetLink2 : targetLink2,
              hasSubtitle,
              hasLeakage,
              msg: "[parser]存在资源",
            });
          }
        }},

          onerror: (error) => {
          resolve({
            isSuccess: false,
            targetLink,
            hasSubtitle: false,
            hasLeakage: false,
            msg: error.error,
          });
        },

      });
    });
    return xhrPromise;
    }
§
Posted: 04-04-2023
Edited: 04-04-2023

我的代码有个bug,
当搜索关键词为MIDE-077或某些个别番号时,会出现多个结果。
这样就不会跳转,便无法检测。
现在根据页面是否出现div.titlebox搜索提示框(只有在没有搜到或者输入了无法识别的东西才会出现)
而正确的跳转,或者出现多个结果都不会出现该元素 更新后的代码:

function xhr(siteItem, targetLink, CODE) {
    const xhrPromise = new Promise((resolve) = >{
        GM_xmlhttpRequest({
            method: "GET",
            url: targetLink,
            onload: (response) = >{
                if (/^https:\/\/www\.javlibrary\.com/.test(targetLink)) {
                    if (/<div class="titlebox">/.test(response.responseText)) {
                        resolve({
                            isSuccess: false,
                            targetLink,
                            hasSubtitle: false,
                            hasLeakage: false,
                            msg: "应该是没有资源",
                        });
                    } else {
                        resolve({
                            isSuccess: true,
                            targetLink,
                            hasSubtitle: false,
                            hasLeakage: false,
                            msg: "[parser]存在资源",
                        });
                    }
                } else {
                    if (siteItem.fetcher === "get") {
                        if (response.status === 404) {
                            resolve({
                                isSuccess: false,
                                targetLink,
                                hasSubtitle: false,
                                hasLeakage: false,
                                msg: "应该是没有资源",
                            });
                        } else {
                            const {
                                hasSubtitle,
                                hasLeakage,
                                isSuccess
                            } = videoPageParser(response.responseText, siteItem.domQuery, );
                            resolve({
                                isSuccess,
                                targetLink,
                                hasSubtitle,
                                hasLeakage,
                                msg: "[get],存在资源",
                            });
                        }
                    } else if (siteItem.fetcher === "parser") {
                        const {
                            targetLink: targetLink2,
                            isSuccess,
                            hasLeakage,
                            hasSubtitle,
                        } = serachPageParser(response.responseText, siteItem.domQuery, siteItem.hostname, CODE);
                        resolve({
                            isSuccess,
                            targetLink: isSuccess ? targetLink2: targetLink2,
                            hasSubtitle,
                            hasLeakage,
                            msg: "[parser]存在资源",
                        });
                    }
                }
            },
            onerror: (error) = >{
                resolve({
                    isSuccess: false,
                    targetLink,
                    hasSubtitle: false,
                    hasLeakage: false,
                    msg: error.error,
                });
            },
        });
    });
    return xhrPromise;
}
§
Posted: 04-04-2023

再补充个bug,
在Javlibrary.com中,网页不会自动隐藏Javlib的按钮,
修复方式,将以下这段代码中的
disableHostname: "javlibrary" ↓更改↓
disableHostname: "javlib"

{
  name: "JAVLib",
  disableHostname: "javlibrary",
  disable: false,
  hostname: "javlibrary.com",
  url: "https://www.javlibrary.com/cn/vl_searchbyid.php?keyword={{code}}",
  fetcher: "get",
  domQuery: {},
  method: print,
}
mission522مؤلف
§
Posted: 05-04-2023

感谢反馈,已更改在 1.1.8 版本中

  1. [spaceCode 问题] 没测,按你的改了

  2. 当时想着 javlib 应该是都有的,反正绿就行了,就没有特别的去适配。 还有一个原因就是,他这个经常搜出来大于一个结果以上,我也不知道该返回哪个。 我现在给他写上 domQuery 了,不知道行不行。

  3. [javlib 不跳过自己] 我搞错了,两边 name 没匹配上。按你的改了

后续我把代码开源吧,这个代码多少带点编译

Post reply

تسجيل الدخول إلى مرحلة ما بعد الرد.