``` ├── .gitignore ├── 1Blocker/ ├── selector.css ├── LICENSE (omitted) ├── README.md (400 tokens) ├── Userscripts/ ├── JavdbJump2Missav.js (400 tokens) ├── RemoveMissavPopAd_Safari.js (200 tokens) ├── removeMissavPopAd_Via.js (400 tokens) ├── assets/ ├── IMG_9335.PNG ├── IMG_9336.PNG ├── IMG_9337.png ├── IMG_9339.jpeg ├── IMG_9341.jpeg ├── ScreenRecording_06-08-2025_22-40-06_compressed.mp4 ├── screen_record_25-06-10-13-05-54.mp4 ``` ## /.gitignore ```gitignore path="/.gitignore" .DS_Store ``` ## /1Blocker/selector.css ```css path="/1Blocker/selector.css" .app-desktop-banner,.subheader,.top-meta,#footer ``` ## /README.md # jav-play-go 在移动设备浏览器上,直接从 javdb 中的影片详情页跳转到 missav 对应的播放页面,并 **免除广告** 直接播放。 ## 主要功能 ### Userscripts/JavdbJump2Missav.js 1. 在 javdb.com 的影片详情页的右下角添加一个 `MissAV` 按钮 2. 点击这个按钮跳转到 missav.ws 中对应影片的播放页 ### Userscripts/RemoveMissavPop.js 1. 移除 missav.ws 中覆盖在播放按钮上的广告,点击播放按钮直接播放影片,**不会跳到广告页面** ## 使用说明 ### iOS (推荐 Safari) 1. 安装 [Userscripts](https://itunes.apple.com/us/app/userscripts/id1463298887),打开 Userscripts,设置一个存放脚本文件的目录 2. 下载本项目 `/Userscripts` 文件夹中的 `JavdbJump2Missav.js` 和 `RemoveMissavPopAd_Safari.js` 脚本文件,放到设置的文件夹中 3. 打开 Safari,进入 javdb.com 中随意一个影片详情页(最好是旧一点的影片,以防 missav 中还没有这个影片),查看左下角的拼图图标,点开图标看 Userscripts,查看对应的脚本是否生效 <p align="center"> <img src="assets/IMG_9336.PNG" width="45%" /> <img src="assets/IMG_9337.png" width="45%" /> </p> 4. 脚本生效后 javdb.com 影片详情页面右下角会有一个粉色的 `MissAV` 按钮,点击这个按钮进入 missav.ws 对应的播放页面 5. 同样检查这个页面的脚本是否生效,如果脚本生效,点击播放按钮影片会立即开始播放,而不会跳到广告页面 <img src="assets/IMG_9339.jpeg" width="45%" /> #### 进阶优化(可选,推荐) 由于 javdb.com 和 missav.ws 网站上本身有大量广告,影响体验,要达到最终效果,推荐去掉所有广告 1. 安装 [1Blocker](https://1blocker.com/),按照操作提示开启广告拦截,即可屏蔽掉绝大多数广告 2. 1Blocker -> 自定义规则 -> 拦截元素 -> 新规则 -> 填入以下 CSS 选择器:`.app-desktop-banner,.subheader,.top-meta,#footer` 可以让 javdb.com 在移动端显示效果稍好一点(不做也没什么关系) <p align="center"> <img src="assets/IMG_9341.jpeg" width="45%" /> <img src="assets/IMG_9335.PNG" width="45%" /> </p> ## Android (推荐 [Via](https://github.com/tuyafeng/Via)) 1. 安装 [Via](https://github.com/tuyafeng/Via) 浏览器 2. 下载 `Userscripts/JavdbJump2Missav.js` 和 `Userscripts/removeMissavPopAd_Via.js` 两个脚本 3. 点击 设置 -> 脚本 -> 右上角➕ -> 导入脚本,选择刚刚下载的两个脚本,完成导入 4. (可选,推荐)点击 设置 -> 通用 -> 广告拦截 -> 规则订阅,开启 `EasyList`,`Adblock Warning Removal List` ## 使用效果 1. [iOS Sarai 浏览器使用效果录屏](assets/ScreenRecording_06-08-2025_22-40-06_compressed.mp4) 1. [Android Via 浏览器使用效果录屏](assets/screen_record_25-06-10-13-05-54.mp4) ## /Userscripts/JavdbJump2Missav.js ```js path="/Userscripts/JavdbJump2Missav.js" // ==UserScript== // @name JavDB to MissAV Linker // @namespace http://tampermonkey.net/ // @version 1.0 // @description Adds a direct link from a JavDB page to the corresponding MissAV page. // @author https://github.com/aizhimou // @match *://javdb.com/v/* // @grant none // ==/UserScript== (function() { 'use strict'; /** * ---------------------------------------------------------------- * 步驟 1: 提取影片番號 * ---------------------------------------------------------------- * 我們通過CSS選擇器 '.panel-block.first-block .value' 來精準定位到包含番號的<span>元素。 * .textContent 用於獲取該元素的純文本內容。 * .trim() 用於移除文本前後可能存在的空白字符。 */ const videoIdElement = document.querySelector('.panel-block.first-block .value'); // 如果頁面上沒有找到番號元素,則終止腳本執行,避免出錯。 if (!videoIdElement) { console.log('無法在此頁面找到番號元素,腳本停止執行。'); return; } const videoId = videoIdElement.textContent.trim(); /** * ---------------------------------------------------------------- * 步驟 2: 創建並插入新的按鈕 * ---------------------------------------------------------------- * 找到右下角的浮動按鈕容器 '.float-buttons'。 * 如果找到了這個容器,我們就在裡面創建並添加新按鈕。 */ const floatButtonsContainer = document.querySelector('.float-buttons'); if (floatButtonsContainer) { // 創建一個新的<a>元素(也就是鏈接) const missAvButton = document.createElement('a'); // 設置新鏈接的屬性 // 1. href: 這是鏈接的目標地址。我們使用提取到的小寫番號來構建URL。 // 2. className: 為了讓新按鈕樣式與現有按鈕保持一致,我們賦予它相同的class。 // 3. textContent: 這是按鈕上顯示的文字。 missAvButton.href = `https://missav.ws/dm58/${videoId.toLowerCase()}`; missAvButton.className = 'material-scroll-magnets'; // 沿用現有樣式 missAvButton.style = 'background:#fe628e'; // 设置新的背景颜色 missAvButton.textContent = 'MissAV'; // 按鈕顯示文字 // 為了在新標籤頁中打開鏈接,可以添加以下這行 missAvButton.target = '_blank'; // 使用 prepend 方法將新按鈕添加到浮動按鈕組的最前面。 floatButtonsContainer.prepend(missAvButton); } else { console.log('無法找到浮動按鈕容器,無法添加新按鈕。'); } })(); ``` ## /Userscripts/RemoveMissavPopAd_Safari.js ```js path="/Userscripts/RemoveMissavPopAd_Safari.js" // ==UserScript== // @name removeMissavPopAd for iOS safari browser // @namespace http://tampermonkey.net/ // @version 1.0 // @description Removes ad hijack divs that trigger pop() when clicking on video // @author https://github.com/aizhimou // @match *://missav.ws/* // @match *://missav.ai/* // @grant none // @run-at document-idle // ==/UserScript== (function () { 'use strict'; // 延迟执行,确保页面元素加载完毕 const removeHijackDivs = () => { let found = false; document.querySelectorAll('div.aspect-w-16.aspect-h-9').forEach((el, index) => { if (el.outerHTML.includes('@click="pop()"')) { el.removeAttribute('@click'); el.removeAttribute('@keyup.space.window'); console.log(`✅ Removed hijack from div #${index}`, el); found = true; } }); if (!found) { console.log('ℹ️ No hijack divs found.'); } }; // 尝试执行 + 防止页面延迟加载的容错机制 window.addEventListener('load', () => { setTimeout(removeHijackDivs, 500); // 页面完全加载后稍等0.5秒 }); })(); ``` ## /Userscripts/removeMissavPopAd_Via.js ```js path="/Userscripts/removeMissavPopAd_Via.js" // ==UserScript== // @name removeMissavPopAd for Android via browser // @namespace http://tampermonkey.net/ // @version 1.0 // @description Removes ad hijack divs that trigger pop() when clicking on video using MutationObserver. // @author https://github.com/aizhimou // @match *://missav.ws/* // @match *://missav.ai/* // @grant none // @run-at document-start // ==/UserScript== (function () { 'use strict'; // 定义处理函数,用于移除广告属性 const cleanAdLayer = (node) => { // 确保节点是元素节点,可以进行查询 if (node.nodeType !== 1) { return; } // 查找当前节点或其子节点中匹配的目标元素 const targets = node.matches('div[class*="aspect-w-"]') ? [node] : node.querySelectorAll('div[class*="aspect-w-"]'); targets.forEach(el => { // 使用 getAttribute 来检查属性是否存在,比检查 outerHTML 更可靠 if (el.hasAttribute('@click')) { el.removeAttribute('@click'); el.removeAttribute('@keyup.space.window'); console.log('✅ Hijack attributes removed from:', el); } }); }; // 创建一个 MutationObserver 实例来监视 DOM 变化 const observer = new MutationObserver((mutationsList) => { for (const mutation of mutationsList) { // 当有新节点被添加到 DOM 时 if (mutation.type === 'childList') { mutation.addedNodes.forEach(node => { cleanAdLayer(node); }); } } }); // 配置 observer:监视子节点和后代节点的变化 const config = { childList: true, subtree: true }; // 在整个文档上启动 observer observer.observe(document.documentElement, config); // 脚本加载时,也对已存在的元素执行一次清理,以防万一 document.addEventListener('DOMContentLoaded', () => { cleanAdLayer(document.body); }); })(); ``` ## /assets/IMG_9335.PNG Binary file available at https://raw.githubusercontent.com/aizhimou/jav-play-go/refs/heads/main/assets/IMG_9335.PNG ## /assets/IMG_9336.PNG Binary file available at https://raw.githubusercontent.com/aizhimou/jav-play-go/refs/heads/main/assets/IMG_9336.PNG ## /assets/IMG_9337.png Binary file available at https://raw.githubusercontent.com/aizhimou/jav-play-go/refs/heads/main/assets/IMG_9337.png ## /assets/IMG_9339.jpeg Binary file available at https://raw.githubusercontent.com/aizhimou/jav-play-go/refs/heads/main/assets/IMG_9339.jpeg ## /assets/IMG_9341.jpeg Binary file available at https://raw.githubusercontent.com/aizhimou/jav-play-go/refs/heads/main/assets/IMG_9341.jpeg ## /assets/ScreenRecording_06-08-2025_22-40-06_compressed.mp4 Binary file available at https://raw.githubusercontent.com/aizhimou/jav-play-go/refs/heads/main/assets/ScreenRecording_06-08-2025_22-40-06_compressed.mp4 ## /assets/screen_record_25-06-10-13-05-54.mp4 Binary file available at https://raw.githubusercontent.com/aizhimou/jav-play-go/refs/heads/main/assets/screen_record_25-06-10-13-05-54.mp4 The better and more specific the context, the better the LLM can follow instructions. If the context seems verbose, the user can refine the filter using uithub. Thank you for using https://uithub.com - Perfect LLM context for any GitHub repo.