OneJAVOneWeb(Revise)

老司机开车带你飞,一个插件畅览几大JAV网站,感谢匿名老司机,此脚本为匿名老司机创作,版权属原作者所有,我只是修改了一些不能用的网址和加了免梯子网址自用,如有兴趣者可自行下载。

  1. // ==UserScript==
  2. // @name OneJAVOneWeb(Revise)
  3. // @namespace https://sleazyfork.org/zh-CN/scripts/428639-onejavoneweb
  4. // @version 2021.0802.1000
  5. // @description 老司机开车带你飞,一个插件畅览几大JAV网站,感谢匿名老司机,此脚本为匿名老司机创作,版权属原作者所有,我只是修改了一些不能用的网址和加了免梯子网址自用,如有兴趣者可自行下载。
  6. // @author testqdg
  7. // @license MIT
  8. // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAAAAAAAAQCEeRdzAAAC1klEQVR4nK1V/U+NYRg+/4kxHylUxsx8bD4yH7PxAxmzMfO9qemkcyo5NX1wyEhD6WSpOSXmGG1+UBZJ0rA5FErIGbIoSowu9/1e7znvOfNbvNuznef+uO7rvp/reY4N9f7VWFLQjbh0YHrG6JbmKoZg2ZBQEEB0Kh3xowTUNVkwBMtmoMc6gakOc6Uhgq3+jkljTNCmMVNkxadbMWqTfBti9gEOL/D4NdDaCTS/AFYeAaaZBZYeApqeA2tPEESTL9wFqu8RUGOWHQYedAEpVQI4yQ5U3kHEt70MxhjihNXFFtqKbsCIVabtAdq02MQUYE8F9/k+AdSA5VLBc4vGknpg9gG2sDgPGPpB+/WHnFOUnQz123wGGJsMHK3jfuMpAdQZaOX1J2nc6WGSzm3TaYu1v4ctqi+zhjbXJWBMEnC1DRj+CSw4aALqHLeUMCj5vLQr+yhhk3sF+PUb6JAWv34HFuaSZWIRYytuAxP2Ak+l2LN3xjgswK2lfwNebgUCfUBpA30bigk4NxvoHwIa24FZWcC3YaC2xWBvAW47awFqkp6yVm7qkGKmL6OGhfRkH3UDXR+BdSbbrFojj4DKaIfHAtSZzs8BBqTNm09EDpX0nWvkDHV5m8UvLN3X6DNlZQHuKrcAx8tcEiVgZCRSTtqiHpay1ANRf9sr4EO/KMNlaJSyUUZJppZ2l1MKTi/32raKfVDk8+YTZ6YERCKhr8HPsQk5m1xqXp8yU4c6k3HJbE+/FW5Kw9dm7RVwkWj0yyBtx+o4BgNQgXoH6Ah8pqg14X4nT3JONqVRWBem01Qy7emjTfUaYhhsTb88H4NnZALdvSLmt7x+0WEqcFZzRAr48j1ZzssJPR42I9lexcpq1Nugz9iqQrmSbj4Gup+5H1hzXBi7GKOFEvLlhhVbr44BGGsyMClbT5SDWgzuNSn8ydKluWoLe+oiH9h/WdHBB/Y//wX8ASlYtkPZ5uteAAAAAElFTkSuQmCC
  9. // @include *://*.javlibrary.com/*
  10. // @include *://*.o58c.com/*
  11. // @include *://*.e59f.com/*
  12. // @include *://onejav.com/*
  13. // @include *://*.141jav.com/*
  14. // @include *://*.jav321.com/*
  15. // @include *://*.javbus.com/*
  16. // @include /^.*://.*?(busfan|busjav|buscdn|busdmm|dmmbus|seedmm|dmmsee|javsee|seejav).*?\..+$/
  17. // @include /^.*://.*?avmoo.*?\..+$/
  18. // @include *://hpjav.tv/*
  19. // @include *://hpav.tv/*
  20. // @include *://*.jav321.com/*
  21. // @include *://jable.tv/*
  22. // @include *://javdb*.com/*
  23. // @include /^.*://javdb39\d+\.com.+$/
  24. // @exclude *://*.javlibrary.com/*/login.php
  25. // @exclude *://*.javlibrary.com/login.php
  26. // @exclude *://*.e59f.com/*/login.php
  27. // @exclude *://*.n53i.com/login.php
  28. // @require https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js
  29. // @connect pics.dmm.co.jp
  30. // @connect jp.netcdn.space
  31. // @run-at document-end
  32. // @grant window.close
  33. // @grant window.onurlchange
  34. // @grant GM_openInTab
  35. // @grant GM_xmlhttpRequest
  36. // @grant GM_registerMenuCommand
  37. // @grant GM_setValue
  38. // @grant GM_getValue
  39. // @grant GM_notification
  40. // @grant GM_getResourceURL
  41. // @grant GM_getResourceText
  42. // @grant GM_addStyle
  43. // @grant GM_info
  44. /* globals $ */
  45. // ==/UserScript==
  46. (function () {
  47. 'use strict';
  48. console.clear();
  49. console.time('JAV');
  50. /* Basic */
  51. /* Version Update Info */
  52. // @ts-ignore
  53. if (GM_info.script.version > GM_getValue('version', '2021.0101.0000')) {
  54. const style = `#onejav_update_mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background-color:rgba(0,0,0,0.8)}#onejav_update_mask>#onejav_update_info{width:35%;position:fixed;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);top:50%;left:50%;padding:12px;border-style:solid;border-color:#ff1493;border-width:10px;border-radius:20px;background-color:#fff;color:#000;background-clip:padding-box;font-family:'思源黑体'}#onejav_update_mask>#onejav_update_info>#title{font-size:20px;text-align:center}#onejav_update_mask>#onejav_update_info>ul>li{list-style-type:none}#onejav_update_mask>#onejav_update_info>span{color:#ff1493;top:-5px;position:absolute;right:5px;cursor:pointer;font-size:24px}`;
  55. $('head').append(`<style>${style}</style>`);
  56. // Update Information
  57. const msg = ['应网友建议,新增JavDB链接及其站点的支持'];
  58. const divMsg = $(`<div id="onejav_update_mask"><div id="onejav_update_info"><div id="title">OneJAV更新详情</div><ul></ul><span>✖</span></div></div>`);
  59. for (let s of msg) {
  60. divMsg.find('ul').append(`<li>${s}</li>`);
  61. }
  62. $('body').prepend(divMsg);
  63. $('#onejav_update_info>span').on('click', function () {
  64. // @ts-ignore
  65. GM_setValue('version', GM_info.script.version);
  66. $(this).parents('#onejav_update_mask').remove();
  67. return false;
  68. });
  69. }
  70. else {
  71. // @ts-ignore
  72. GM_setValue('version', GM_info.script.version);
  73. }
  74. console.info('老司机开车带你飞');
  75. console.info('%c ', "background:url('data:image/webp;base64,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') no-repeat;padding:98px 125px;");
  76. console.info('%cOneJAV插件使用了“思源黑体”字,请确保你的计算机安装了该字体\nhttps://github.com/adobe-fonts/source-han-sans/tree/release/OTF/SimplifiedChinese', 'margin:1px;border:3px solid orange;border-radius:5px;padding:3px;line-height:1.8;');
  77. //@ts-ignore
  78. GM_registerMenuCommand('更新', () => {
  79. //@ts-ignore
  80. GM_openInTab('https://sleazyfork.org/zh-CN/scripts/428639-onejavoneweb', {
  81. active: true,
  82. insert: true,
  83. setParent: true
  84. });
  85. });
  86. //@ts-ignore
  87. GM_registerMenuCommand('下载思源黑体字体', () => {
  88. //@ts-ignore
  89. GM_openInTab('https://cdn.jsdelivr.net/gh/adobe-fonts/source-han-sans@release/OTF/SimplifiedChinese/SourceHanSansSC-Regular.otf', { active: true, insert: true, setParent: true });
  90. });
  91. class JAV {
  92. constructor(i) {
  93. [this.bango, this.fanHao] = (() => {
  94. const o = i.trim().replace(/ +/, '-');
  95. let t = o.match(/FC2-?PPV-?(\d+)/i);
  96. if ((t = o.match(/FC2-?PPV-?(\d+)/i))) {
  97. return [`FC2PPV${t[1]}`, `FC2PPV-${t[1]}`];
  98. }
  99. else if ((t = o.match(/([a-zA-Z]+)-?(\d+)/i))) {
  100. return [`${t[1].toUpperCase()}${t[2]}`, `${t[1].toUpperCase()}-${t[2]}`];
  101. }
  102. else {
  103. console.info(`JAV:${i}处理失败,反馈给作者修复bug`);
  104. return [i, i];
  105. }
  106. })();
  107. this.data = {
  108. freejavbt: {
  109. name: 'JAV目錄大全',
  110. color: '#fe1773',
  111. origin: 'https://freejavbt.com',
  112. uri: `/${this.fanHao}`
  113. },
  114. javmovs: {
  115. name: 'JAVMOVS',
  116. color: '#79c142',
  117. origin: 'https://javmovs.com',
  118. uri: `/${this.fanHao}`
  119. },
  120. javfree: {
  121. name: 'Javfree',
  122. color: '#df6e05',
  123. origin: 'https://javfree.sh',
  124. uri: `/search/movie/${this.fanHao}`
  125. },
  126. hpjav: {
  127. name: 'HPJAV',
  128. color: '#f96364',
  129. origin: 'https://hpjav.tv',
  130. uri: `/?s=${this.fanHao}`
  131. },
  132. javhd: {
  133. name: 'JAVHD',
  134. color: '#cb000d',
  135. origin: 'https://javhd.today',
  136. uri: `/search/video/?s=${this.fanHao}`
  137. },
  138. javtrust: {
  139. name: 'JAVTRUST',
  140. color: '#e38a5a',
  141. origin: 'https://javtrust.com',
  142. uri: `/search/movie/${this.fanHao}.html`
  143. },
  144. javfun: {
  145. name: 'JAVFUN',
  146. color: '#79c142',
  147. origin: 'https://www3.javfun.me',
  148. uri: `/search/${this.fanHao}`
  149. },
  150. bejav: {
  151. name: 'BEJAV',
  152. color: '#fd6500',
  153. origin: 'https://bejav.net',
  154. uri: `/search/${this.fanHao}`
  155. },
  156. sextop: {
  157. name: 'SEXTOP',
  158. color: '#c20001',
  159. origin: 'https://sextop.net',
  160. uri: `/?s=${this.fanHao}&search=Search`
  161. },
  162. javdisk: {
  163. name: 'JAVDISK',
  164. color: '#fe121e',
  165. origin: 'https://javdisk.com',
  166. uri: `/search.html?q=${this.fanHao}`
  167. },
  168. supjav: {
  169. name: 'SUPJAV',
  170. color: '#d8201d',
  171. origin: 'https://supjav.com',
  172. uri: `/?s=${this.fanHao}`
  173. },
  174. svjav: {
  175. name: 'SVJAV',
  176. color: '#cc2748',
  177. origin: 'https://svjav.com',
  178. uri: `/${this.fanHao}/`
  179. },
  180. fbjav: {
  181. name: 'FBJAV',
  182. color: '#365899',
  183. origin: 'https://fbjav.com',
  184. uri: `/${this.fanHao}/`
  185. },
  186. javusa: {
  187. name: 'JAVUSA',
  188. color: '#0f0f0f',
  189. origin: 'https://javusa.com',
  190. uri: `/jav/${this.fanHao}/`
  191. },
  192. javhdporn: {
  193. name: 'JAVHDPorn',
  194. color: '#fa9f22',
  195. origin: 'https://www2.javhdporn.net',
  196. uri: `/video/${this.fanHao}/`
  197. },
  198. javhhh: {
  199. name: 'JAVHHH',
  200. color: '#da2657',
  201. origin: 'https://javhhh.com',
  202. uri: `/video/${this.fanHao}/`
  203. },
  204. kissjav: {
  205. name: 'KISSJAV',
  206. color: '#00a2e8',
  207. origin: 'https://kissjav.com',
  208. uri: `/search/video/?s=${this.fanHao}`
  209. },
  210. javsky: {
  211. name: 'JAVSKY',
  212. color: '#ca6e00',
  213. origin: 'https://javsky.tv',
  214. uri: `/search/movie/${this.fanHao}`
  215. },
  216. javdragon: {
  217. name: 'JavDragon',
  218. color: '#ec4caf',
  219. origin: 'https://javdragon.com',
  220. uri: `/${this.bango}/`
  221. },
  222. javbel: {
  223. name: 'JAVBEL',
  224. color: '#ff5b15',
  225. origin: 'https://javbel.com',
  226. uri: `/search.php?q=${this.fanHao}`
  227. },
  228. javmix: {
  229. name: 'Javmix',
  230. color: '#f7c54c',
  231. origin: 'https://javmix.tv',
  232. uri: `/video/${this.fanHao}/`
  233. },
  234. javfor: {
  235. name: 'JAV-FOR',
  236. color: '#f0542e',
  237. origin: 'https://jav-for.me',
  238. uri: `/`
  239. },
  240. avdrive: {
  241. name: 'av-Drive',
  242. color: '#8ce1f5',
  243. origin: 'https://av-drive.blogspot.com',
  244. uri: `/`
  245. },
  246. ggjav: {
  247. name: 'GGJAV',
  248. color: '#2287f0',
  249. origin: 'https://ggjav.com',
  250. uri: `/ja/main/search?string=${this.fanHao}`
  251. },
  252. wideav: {
  253. name: 'WideAV',
  254. color: '#3e7bee',
  255. origin: 'https://wideav.com',
  256. uri: `/search?keyword=${this.fanHao}`
  257. },
  258. javcl: {
  259. name: 'JAVCL',
  260. color: '#ffcc00',
  261. origin: 'https://javcl.com',
  262. uri: `/search/${this.fanHao}/`
  263. },
  264. jav321: {
  265. name: 'JAV321',
  266. color: '#777',
  267. origin: 'https://www.jav321.com',
  268. uri: `/?bango=${this.fanHao}`
  269. },
  270. jable: {
  271. name: 'Jable',
  272. color: '#0077ac',
  273. origin: 'https://jable.tv',
  274. uri: `/search/${this.fanHao}/`
  275. },
  276. javdb: {
  277. name: 'JavDB',
  278. color: '#0a0a0a',
  279. origin: 'https://javdb39.com',
  280. uri: `/search?q=${this.fanHao}`
  281. },
  282. onejav: {
  283. name: 'OneJAV',
  284. color: '#f5da47',
  285. origin: 'https://onejav.com',
  286. uri: `/search/${this.bango}`
  287. },
  288. avmoo: {
  289. name: 'AVMOO',
  290. color: '#cc0000',
  291. origin: 'https://avmoo.click',
  292. uri: `/cn/search/${this.fanHao}`
  293. },
  294. javbus: {
  295. name: 'JavBus',
  296. color: '#febe00',
  297. origin: 'https://www.seejav.blog',
  298. uri: `/search/${this.fanHao}`
  299. },
  300. javlibarary: {
  301. name: 'JAVLibrary',
  302. color: '#f908bb',
  303. origin: 'https://www.o58c.com',
  304. uri: `/cn/vl_searchbyid.php?keyword=${this.fanHao}`
  305. },
  306. sextb: {
  307. name: 'SEXTB',
  308. color: '#f5c823',
  309. origin: 'https://sextb.net',
  310. uri: `/${this.fanHao}`
  311. }
  312. };
  313. for (let e in this.data) {
  314. this.data[e].url = `${this.data[e].origin}${this.data[e].uri}`;
  315. delete this.data[e].origin;
  316. delete this.data[e].uri;
  317. }
  318. }
  319. create_table(position = 0) {
  320. const rows = 4;
  321. const tableDataLength = Object.keys(this.data).length;
  322. let tableData = this.data;
  323. let htmlTable;
  324. if (position == 0) {
  325. // absolute
  326. htmlTable = `<div id="jav_table" style="font-family:'思源黑体';font-weight:700;font-size:18px;display:inline-block;position:absolute;z-index:9999;background-color:#fff;"><table border="1" cellspacing="0" style="border-spacing:0;line-height:1.6;">`;
  327. }
  328. else {
  329. // inherit
  330. htmlTable = `<div id="jav_table" style="font-family:'思源黑体';font-weight:700;font-size:18px;display:inline-block;inherit:relative;z-index:9999;background-color:#fff;"><table border="1" cellspacing="0" style="border-spacing:0;line-height:1.6;">`;
  331. }
  332. let htmlTbody = ``;
  333. let o = 0;
  334. if (tableDataLength % rows != 0) {
  335. for (let index = tableDataLength; index < tableDataLength + rows - (tableDataLength % rows); index++) {
  336. tableData[`temp_${index}`] = {
  337. name: '',
  338. color: '#ffffff',
  339. url: '#'
  340. };
  341. }
  342. }
  343. for (let index in tableData) {
  344. if ((o + 1) % rows == 1) {
  345. htmlTbody += '<tr>';
  346. }
  347. htmlTbody += `<td>&nbsp<a target="_blank" style="color:${tableData[index].color}" href="${tableData[index].url}">${tableData[index].name}</a>&nbsp</td>`;
  348. if ((o + 1) % rows == 0) {
  349. htmlTbody += '</tr>';
  350. }
  351. o++;
  352. }
  353. htmlTable += `${htmlTbody}</table></div>`;
  354. return htmlTable;
  355. }
  356. }
  357. /* OneJAV 141jav */
  358. if (null != location.hostname.match(/onejav.com|141jav.com/)) {
  359. (() => {
  360. $('body').on('mouseenter', '.card.mb-3>.container>.columns>.column:even', function () {
  361. const bango = $(this).parents('.columns').find('.title.is-spaced>a').text().trim();
  362. const jav = new JAV(bango);
  363. $(this).prepend(jav.create_table());
  364. return false;
  365. });
  366. $('body').on('mouseleave', '.card.mb-3>.container>.columns>.column:even', function () {
  367. $(this).find('#jav_table').remove();
  368. return false;
  369. });
  370. // Show a table without no search reasult
  371. if (null != location.pathname.match(/\/search\/[a-zA-Z0-9-]/) && 0 == $('div.card.mb-3').length) {
  372. const jav = new JAV(location.pathname.substr(8));
  373. $('div.container').append(jav.create_table(1));
  374. }
  375. })();
  376. }
  377. /* avmoo javbus */
  378. if (null != location.hostname.match(/avmoo|javbus|busfan|busjav|buscdn|busdmm|dmmbus|seedmm|dmmsee|javsee|seejav/)) {
  379. (() => {
  380. const showBoxes = $('.movie-box');
  381. if (1 == showBoxes.length) {
  382. location.href = showBoxes[0].href;
  383. }
  384. $('body').on('mouseenter', '.col-md-9.screencap', function () {
  385. const bango = $('body > div.container > h3').text().trim().split(' ')[0];
  386. const jav = new JAV(bango);
  387. $(this).prepend(jav.create_table());
  388. return false;
  389. });
  390. $('body').on('mouseleave', '.col-md-9.screencap', function () {
  391. $(this).find('#jav_table').remove();
  392. return false;
  393. });
  394. $('#sample-waterfall > a').each((_, a) => {
  395. // @ts-ignore
  396. GM_xmlhttpRequest({
  397. method: 'GET',
  398. url: a.href,
  399. responseType: 'blob',
  400. onload: (res) => {
  401. const blob = new Blob([res.response], { type: 'image/jpeg' });
  402. a.href = URL.createObjectURL(blob);
  403. }
  404. });
  405. });
  406. })();
  407. }
  408. /* javlibarary */
  409. if (null != location.hostname.match(/javlibrary|e59f|o58c/)) {
  410. (() => {
  411. const style = `.pointer,#onejav_modal *{cursor:pointer}#onejav_modal{color:#dcdcdc;font-size:64px;font-weight:700;font-family:'思源黑体';background-color:rgba(0,0,0,0.8);position:fixed;top:0;right:0;bottom:0;left:0;z-index:99}#onejav_modal img{cursor:default;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);position:absolute;top:50%;right:auto;bottom:auto;left:50%}#onejav_modal #left{-webkit-transform:translateY(-50%);transform:translateY(-50%);position:absolute;top:50%;right:auto;bottom:auto;left:10px}#onejav_modal #left::after{content:"◀"}#onejav_modal #left:hover{color:#fff}#onejav_modal #right{-webkit-transform:translateY(-50%);transform:translateY(-50%);position:absolute;top:50%;right:10px;bottom:auto;left:auto}#onejav_modal #right::after{content:"▶"}#onejav_modal #right:hover{color:#fff}#onejav_modal #close{position:absolute;top:0;right:10px;bottom:auto;left:auto}#onejav_modal #close::after{content:"✖"}#onejav_modal #close:hover{color:#fff}`;
  412. $('head').append(`<style>${style}</style>`);
  413. const sourceArr = $('#rightcolumn > div.previewthumbs > img').map((_, img) => img.src);
  414. const srcArr = sourceArr.map((_, source) => {
  415. const match = source.match(/digital\/video\/(\w+)\/\1-(\d+.jpg)/i);
  416. const src = source.replace(match[0], `digital/video/${match[1]}/${match[1]}jp-${match[2]}`);
  417. return src;
  418. });
  419. srcArr.each((index, src) => {
  420. // @ts-ignore
  421. GM_xmlhttpRequest({
  422. method: 'GET',
  423. url: src,
  424. responseType: 'blob',
  425. onload: (res) => {
  426. const blob = new Blob([res.response], { type: 'image/jpeg' });
  427. srcArr[index] = URL.createObjectURL(blob);
  428. }
  429. });
  430. });
  431. const modal = $(`<div id="onejav_modal"><img src="" alt="预览大图"/><div id="left"></div><div id="right"></div><div id="close"></div></div>`);
  432. $('#rightcolumn > div.previewthumbs > img').each(function (index, img) {
  433. $(img).addClass('pointer');
  434. $(img).on('click', () => {
  435. modal.find('img')[0].src = srcArr[index];
  436. $('body').append(modal);
  437. let i = 0;
  438. $('body').on('click', '#onejav_modal>#left', () => {
  439. i -= 1;
  440. if (i < 0) {
  441. i = srcArr.length - 1;
  442. }
  443. $('#onejav_modal>img')[0].src = srcArr[i];
  444. return false;
  445. });
  446. $('body').on('click', '#onejav_modal>#right', () => {
  447. i += 1;
  448. if (i > srcArr.length - 1) {
  449. i = 0;
  450. }
  451. $('#onejav_modal>img')[0].src = srcArr[i];
  452. return false;
  453. });
  454. $('body').on('click', '#onejav_modal>img', () => {
  455. return false;
  456. });
  457. $('body').on('click', '#onejav_modal', () => {
  458. $('#onejav_modal').remove();
  459. $('body').off('keydown.onejav');
  460. return false;
  461. });
  462. $('body').on('keydown.onejav', (event) => {
  463. if (event.key == 'ArrowLeft') {
  464. $('#onejav_modal>#left').trigger('click');
  465. }
  466. else if (event.key == 'ArrowRight') {
  467. $('#onejav_modal>#right').trigger('click');
  468. }
  469. else if (event.key == 'Escape') {
  470. $('#onejav_modal').trigger('click');
  471. }
  472. return false;
  473. });
  474. return false;
  475. });
  476. });
  477. $('body').on('mouseenter', '.video', function () {
  478. const bango = $(this).find('.id').text().trim().split(' ')[0];
  479. const jav = new JAV(bango);
  480. const html = `<div class="newBox" style="position:absolute;z-index:9999;top:0;right:0;"><button style="display:block;" link="${jav.data.onejav.url}">${jav.data.onejav.name}</button><button style="display:block;" link="${jav.data.avmoo.url}">${jav.data.avmoo.n6ame}</button><button style="display:block;" link="${jav.data.jable.url}">${jav.data.jable.name}</button></div>`;
  481. $(this).prepend(html);
  482. $('.newBox>button').on('click', function () {
  483. window.open($(this).attr('link'));
  484. return false;
  485. });
  486. });
  487. $('body').on('mouseleave', '.video', function () {
  488. $(this).find('.newBox').remove();
  489. return false;
  490. });
  491. $('body').on('mouseenter', '#video_jacket', function () {
  492. const bango = $('#video_title > h3').text().trim().split(' ')[0];
  493. const jav = new JAV(bango);
  494. $(this).prepend(jav.create_table());
  495. return false;
  496. });
  497. $('body').on('mouseleave', '#video_jacket', function () {
  498. $(this).find('#jav_table').remove();
  499. return false;
  500. });
  501. })();
  502. }
  503. /* jav321 */
  504. if (null != location.hostname.match(/jav321/)) {
  505. (() => {
  506. if (location.pathname.match(/\/video\/[a-zA-Z0-9-]+/i)) {
  507. const hinban = $('body > div:nth-child(3) > div.col-md-7.col-md-offset-1.col-xs-12 > div:nth-child(1) > div.panel-body > div:nth-child(1) > div.col-md-9')
  508. .text()
  509. .match(/品番: ([a-zA-Z0-9-]+)/i);
  510. const jav = new JAV(hinban[1]);
  511. $('body > div:nth-child(3) > div.col-md-7.col-md-offset-1.col-xs-12 > div:nth-child(1) > div.panel-body').append(jav.create_table(1));
  512. }
  513. const searchParams = new URLSearchParams(location.search.substr(1));
  514. if (undefined != searchParams.get('bango')) {
  515. $('body > div:nth-child(2) > div > nav > div > form:nth-child(2) > div > input')[0].value =
  516. searchParams.get('bango');
  517. $('body > div:nth-child(2) > div > nav > div > form:nth-child(2) > div > span > button')[0].click();
  518. window.close();
  519. }
  520. })();
  521. }
  522. /* hpjav */
  523. if (null != location.hostname.match(/hpj?av/)) {
  524. (() => {
  525. $('body > div.video-box-ather.container > div:nth-child(1) > div > div.col-md-5').on('mouseenter', function () {
  526. const bango = location.pathname.slice(location.pathname.lastIndexOf('/') + 1).toUpperCase();
  527. const jav = new JAV(bango);
  528. $(this).prepend(jav.create_table());
  529. return false;
  530. });
  531. $('body > div.video-box-ather.container > div:nth-child(1) > div > div.col-md-5').on('mouseleave', function () {
  532. $(this).find('#jav_table').remove();
  533. return false;
  534. });
  535. })();
  536. }
  537. /* jable */
  538. if (null != location.hostname.match(/jable/i)) {
  539. (() => {
  540. const matches = location.pathname.match(/\/videos\/([a-zA-Z0-9-]+)\//i);
  541. if (matches) {
  542. const jav = new JAV(matches[1]);
  543. $('#site-content > div > div > div:nth-child(1) > section.video-info.pb-3').append(jav.create_table(1));
  544. }
  545. })();
  546. }
  547. /* javdb */
  548. if (null != location.hostname.match(/javdb39|javdb/i)) {
  549. const bango = $('body > section > div > h2 > strong').text().trim().split(' ')[0];
  550. const jav = new JAV(bango);
  551. $('body > section > div > div.video-meta-panel').after(jav.create_table(1));
  552. }
  553. console.timeEnd('JAV');
  554. })();