mirror of
https://github.com/fireinrain/JHS-enhance.git
synced 2026-10-13 21:06:37 +08:00
支持作品自定义保存目录
This commit is contained in:
Vendored
+224
-67
@@ -1,7 +1,7 @@
|
||||
// ==UserScript==
|
||||
// @name JHS-enhance
|
||||
// @namespace JHS-enhance
|
||||
// @version 3.3.14
|
||||
// @version 3.3.15
|
||||
// @author xiebro,fireinrain
|
||||
// @description Jav-鉴黄师 增强脚本。列表页:作品状态标签、一键筛选、新作品检测、演员黑名单过滤;详情页:磁力链接高亮、DMM 多画质预览视频、标题翻译、整合字幕搜索(迅雷+SubTitleCat)并支持 115 直传、多源预览图(javfree/projectjav/javstore)含来源切换;数据:115 网盘目录匹配与多目录选择、云盘备份/恢复、跨 Tab 同步;其他:自动翻页、分类折叠、Top250、以图识图、热门榜单、评论查看、相关清单。支持 JavDB / JavBus / JavSee / SeeJav / FC2 / JavTrailers
|
||||
// @license MIT
|
||||
@@ -254,7 +254,7 @@ System.register("./__entry.js", ['jquery', 'localforage', 'toastify-js', 'blueim
|
||||
isSearchPage = currentHref$1.includes("/search?q") || currentHref$1.includes("/search/") || currentHref$1.includes("/users/"),
|
||||
Status_RUNNING = "RUNNING", Status_SUCCESS = "SUCCESS", Status_FAIL = "FAIL", Status_LOADING = "LOADING",
|
||||
Status_FILTER$1 = "filter", Status_FAVORITE$1 = "favorite", Status_HAS_DOWN$1 = "hasDown",
|
||||
Status_HAS_WATCH$1 = "hasWatch", NO = "no", YES$1 = "yes", qualityOptions = [{
|
||||
Status_HAS_WATCH$1 = "hasWatch", NO$1 = "no", YES$1 = "yes", qualityOptions = [{
|
||||
id: "video-mhb",
|
||||
quality: "dmb_w",
|
||||
text: "旧视频源-中画质宽版 (404p)",
|
||||
@@ -1315,7 +1315,7 @@ System.register("./__entry.js", ['jquery', 'localforage', 'toastify-js', 'blueim
|
||||
window.Status_FAVORITE = Status_FAVORITE$1;
|
||||
window.Status_HAS_DOWN = Status_HAS_DOWN$1;
|
||||
window.Status_HAS_WATCH = Status_HAS_WATCH$1;
|
||||
window.NO = NO;
|
||||
window.NO = NO$1;
|
||||
window.YES = YES$1;
|
||||
const HAS_GM = typeof GM !== "undefined";
|
||||
const NEW_GM = ((scope, GM2) => {
|
||||
@@ -3336,7 +3336,7 @@ ${value}\r
|
||||
}
|
||||
async loadNextPage() {
|
||||
var _a2;
|
||||
if (await storageManager.getSetting("autoPage", YES$1) === NO) {
|
||||
if (await storageManager.getSetting("autoPage", YES$1) === NO$1) {
|
||||
this.setState("waterfall-loading", "");
|
||||
return;
|
||||
}
|
||||
@@ -4077,6 +4077,7 @@ ${value}\r
|
||||
<div class="side-menu-item ${"base-panel" === defaultActivePanel ? "active" : ""}" data-panel="base-panel">⚙️ 基础配置</div>
|
||||
<div class="side-menu-item ${"filter-panel" === defaultActivePanel ? "active" : ""}" data-panel="filter-panel">🚫 屏蔽配置</div>
|
||||
<div class="side-menu-item ${"task-panel" === defaultActivePanel ? "active" : ""}" data-panel="task-panel">📋 定时任务</div>
|
||||
<div class="side-menu-item ${"offline-panel" === defaultActivePanel ? "active" : ""}" data-panel="offline-panel">📂 离线配置</div>
|
||||
<div class="side-menu-item ${"domain-panel" === defaultActivePanel ? "active" : ""}" data-panel="domain-panel" title="第三方视频资源域名配置">🌐 外部网站</div>
|
||||
<div class="side-menu-item ${"mark-delete-panel" === defaultActivePanel ? "active" : ""}" data-panel="mark-delete-panel">🗑️ 标记删除</div>
|
||||
<div class="side-menu-item ${"hotkey-panel" === defaultActivePanel ? "active" : ""}" data-panel="hotkey-panel">⌨️ 快捷键配置</div>
|
||||
@@ -4460,6 +4461,37 @@ ${value}\r
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 离线配置面板 -->
|
||||
<div id="offline-panel" class="content-panel" style="display: ${"offline-panel" === defaultActivePanel ? "block" : "none"};">
|
||||
<div style="border: 1px solid #ccc; padding: 10px; margin-bottom: 15px;">
|
||||
<span style="font-size: 14px; font-weight: bold; padding:3px">115离线文件夹命名</span>
|
||||
<div class="setting-item">
|
||||
<span class="setting-label">
|
||||
启用自定义格式:
|
||||
</span>
|
||||
<div class="form-content" style="text-align: right;">
|
||||
<input type="checkbox" id="enable115OfflineFormat" class="mini-switch">
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<span class="setting-label">命名格式:</span>
|
||||
<div class="form-content" style="max-width: 600px;">
|
||||
<input id="offlineFolderFormat" placeholder="例: \${code}" style="width: 100%;">
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-top: 10px; padding: 8px; background: #f8f8f8; border-radius: 4px; font-size: 12px; color: #666; line-height: 1.8;">
|
||||
<div style="font-weight: bold; margin-bottom: 4px;">可用变量(\${} 形式):</div>
|
||||
<div><code>code</code> - 完整番号(如 ABC-123)</div>
|
||||
<div><code>title</code> - 作品标题</div>
|
||||
<div><code>maker</code> - 片商</div>
|
||||
<div><code>actor</code> - 演员(多演员只取第一个)</div>
|
||||
<div><code>date</code> - 当前日期(YYYY-MM-DD)</div>
|
||||
<div style="margin-top: 6px; color: #999;">例: <code>\${actor}/\${code}</code> = 演员目录下的番号子目录</div>
|
||||
<div style="color: #e67e22;">支持 / 分隔的多级目录,离线文件下载到最末级子目录</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 域名设置面板 -->
|
||||
<div id="domain-panel" class="content-panel" style="display: ${"domain-panel" === defaultActivePanel ? "block" : "none"};">
|
||||
<div class="setting-item">
|
||||
@@ -4969,6 +5001,8 @@ ${value}\r
|
||||
})).on("keydown", ((event) => this.handleHotkeyInput(event, $element)));
|
||||
}));
|
||||
$("#enableImageHotKey").prop("checked", !!settingObj.enableImageHotKey && settingObj.enableImageHotKey === YES$1);
|
||||
$("#enable115OfflineFormat").prop("checked", !!settingObj.enable115OfflineFormat && settingObj.enable115OfflineFormat === YES$1);
|
||||
$("#offlineFolderFormat").val(settingObj.offlineFolderFormat || "");
|
||||
}
|
||||
handleHotkeyInput(event, $input) {
|
||||
event.preventDefault();
|
||||
@@ -5041,7 +5075,7 @@ ${value}\r
|
||||
storageManager.saveSettingItem("containerWidth", containerWidth + 70);
|
||||
}));
|
||||
$("#dialogOpenDetail").on("change", ((event) => {
|
||||
let dialogOpenDetail = $("#dialogOpenDetail").is(":checked") ? YES$1 : NO;
|
||||
let dialogOpenDetail = $("#dialogOpenDetail").is(":checked") ? YES$1 : NO$1;
|
||||
storageManager.saveSettingItem("dialogOpenDetail", dialogOpenDetail);
|
||||
}));
|
||||
$("#showFilterItem").prop("checked", !!settingObj.showFilterItem && settingObj.showFilterItem === YES$1);
|
||||
@@ -5051,32 +5085,32 @@ ${value}\r
|
||||
$("#showHasDownItem").prop("checked", !settingObj.showHasDownItem || settingObj.showHasDownItem === YES$1);
|
||||
$("#showHasWatchItem").prop("checked", !settingObj.showHasWatchItem || settingObj.showHasWatchItem === YES$1);
|
||||
$("#showFilterItem").on("change", (async (event) => {
|
||||
let showFilterItem = $("#showFilterItem").is(":checked") ? YES$1 : NO;
|
||||
let showFilterItem = $("#showFilterItem").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("showFilterItem", showFilterItem);
|
||||
window.refresh();
|
||||
}));
|
||||
$("#showFilterActorItem").on("change", (async (event) => {
|
||||
let showFilterActorItem = $("#showFilterActorItem").is(":checked") ? YES$1 : NO;
|
||||
let showFilterActorItem = $("#showFilterActorItem").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("showFilterActorItem", showFilterActorItem);
|
||||
window.refresh();
|
||||
}));
|
||||
$("#showFilterKeywordItem").on("change", (async (event) => {
|
||||
let showFilterKeywordItem = $("#showFilterKeywordItem").is(":checked") ? YES$1 : NO;
|
||||
let showFilterKeywordItem = $("#showFilterKeywordItem").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("showFilterKeywordItem", showFilterKeywordItem);
|
||||
window.refresh();
|
||||
}));
|
||||
$("#showFavoriteItem").on("change", (async (event) => {
|
||||
let showFavoriteItem = $("#showFavoriteItem").is(":checked") ? YES$1 : NO;
|
||||
let showFavoriteItem = $("#showFavoriteItem").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("showFavoriteItem", showFavoriteItem);
|
||||
window.refresh();
|
||||
}));
|
||||
$("#showHasDownItem").on("change", (async (event) => {
|
||||
let showHasDownItem = $("#showHasDownItem").is(":checked") ? YES$1 : NO;
|
||||
let showHasDownItem = $("#showHasDownItem").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("showHasDownItem", showHasDownItem);
|
||||
window.refresh();
|
||||
}));
|
||||
$("#showHasWatchItem").on("change", (async (event) => {
|
||||
let showHasWatchItem = $("#showHasWatchItem").is(":checked") ? YES$1 : NO;
|
||||
let showHasWatchItem = $("#showHasWatchItem").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("showHasWatchItem", showHasWatchItem);
|
||||
window.refresh();
|
||||
}));
|
||||
@@ -5088,23 +5122,23 @@ ${value}\r
|
||||
};
|
||||
$("#showAllItem").prop("checked", !!settingObj.showAllItem && settingObj.showAllItem === YES$1);
|
||||
$("#showAllItem").on("change", (async (event) => {
|
||||
let showAllItem = $("#showAllItem").is(":checked") ? YES$1 : NO;
|
||||
let showAllItem = $("#showAllItem").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("showAllItem", showAllItem);
|
||||
updateOtherCheckboxesState();
|
||||
window.refresh();
|
||||
}));
|
||||
updateOtherCheckboxesState();
|
||||
$("#needClosePage").on("change", (async (event) => {
|
||||
await storageManager.saveSettingItem("needClosePage", $("#needClosePage").is(":checked") ? YES$1 : NO);
|
||||
await storageManager.saveSettingItem("needClosePage", $("#needClosePage").is(":checked") ? YES$1 : NO$1);
|
||||
window.refresh();
|
||||
}));
|
||||
$("#autoPage").on("change", (async (event) => {
|
||||
const autoPage = $("#autoPage").is(":checked") ? YES$1 : NO;
|
||||
const autoPage = $("#autoPage").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("autoPage", autoPage);
|
||||
autoPage === YES$1 ? ($("#sort-toggle-btn").hide(), $("#one-time-sort-btn").show()) : ($("#sort-toggle-btn").show(), $("#one-time-sort-btn").hide());
|
||||
}));
|
||||
$("#translateTitle").on("change", (async (event) => {
|
||||
const translateTitle = $("#translateTitle").is(":checked") ? YES$1 : NO;
|
||||
const translateTitle = $("#translateTitle").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("translateTitle", translateTitle);
|
||||
if (translateTitle === YES$1) {
|
||||
await this.getBean("ListPagePlugin").doFilter();
|
||||
@@ -5116,38 +5150,38 @@ ${value}\r
|
||||
}));
|
||||
$("#hoverBigImg").prop("checked", !!settingObj.hoverBigImg && settingObj.hoverBigImg === YES$1);
|
||||
$("#hoverBigImg").on("change", (async (event) => {
|
||||
const hoverBigImg = $("#hoverBigImg").is(":checked") ? YES$1 : NO;
|
||||
const hoverBigImg = $("#hoverBigImg").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("hoverBigImg", hoverBigImg);
|
||||
hoverBigImg === YES$1 ? window.imageHoverPreviewObj = new ImageHoverPreview({
|
||||
selector: this.getSelector().coverImgSelector
|
||||
}) : window.imageHoverPreviewObj && window.imageHoverPreviewObj.destroy();
|
||||
}));
|
||||
$("#enableLoadActressInfo").on("change", (async (event) => {
|
||||
const enableLoadActressInfo = $("#enableLoadActressInfo").is(":checked") ? YES$1 : NO;
|
||||
const enableLoadActressInfo = $("#enableLoadActressInfo").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("enableLoadActressInfo", enableLoadActressInfo);
|
||||
enableLoadActressInfo === YES$1 ? this.getBean("ActressInfoPlugin").loadActressInfo() : $(".actress-info").remove();
|
||||
}));
|
||||
$("#enableLoadOtherSite").on("change", (async (event) => {
|
||||
const enableLoadOtherSite = $("#enableLoadOtherSite").is(":checked") ? YES$1 : NO;
|
||||
const enableLoadOtherSite = $("#enableLoadOtherSite").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("enableLoadOtherSite", enableLoadOtherSite);
|
||||
enableLoadOtherSite === YES$1 ? this.getBean("OtherSitePlugin").loadOtherSite().then() : $("#otherSiteBox").remove();
|
||||
}));
|
||||
$("#enableLoadScreenShot").prop("checked", !settingObj.enableLoadScreenShot || settingObj.enableLoadScreenShot === YES$1);
|
||||
$("#enableLoadScreenShot").on("change", (async (event) => {
|
||||
const enableLoadScreenShot = $("#enableLoadScreenShot").is(":checked") ? YES$1 : NO;
|
||||
const enableLoadScreenShot = $("#enableLoadScreenShot").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("enableLoadScreenShot", enableLoadScreenShot);
|
||||
enableLoadScreenShot === YES$1 ? this.getBean("ScreenShotPlugin").loadScreenShot().then() : $(".screen-container").remove();
|
||||
}));
|
||||
$("#enableLoadPreviewVideo").prop("checked", !settingObj.enableLoadPreviewVideo || settingObj.enableLoadPreviewVideo === YES$1);
|
||||
$("#enableLoadPreviewVideo").on("change", (async (event) => {
|
||||
const enableLoadPreviewVideo = $("#enableLoadPreviewVideo").is(":checked") ? YES$1 : NO;
|
||||
const enableLoadPreviewVideo = $("#enableLoadPreviewVideo").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("enableLoadPreviewVideo", enableLoadPreviewVideo);
|
||||
}));
|
||||
$("#enable115AutoRename").prop("checked", !!settingObj.enable115AutoRename && settingObj.enable115AutoRename === YES$1);
|
||||
$("#autoRenameScope").val(settingObj.autoRenameScope || "vr_only");
|
||||
$("#autoRenameScopeRow").toggle(!!settingObj.enable115AutoRename && settingObj.enable115AutoRename === YES$1);
|
||||
$("#enable115AutoRename").on("change", (async (event) => {
|
||||
const enable115AutoRename = $("#enable115AutoRename").is(":checked") ? YES$1 : NO;
|
||||
const enable115AutoRename = $("#enable115AutoRename").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("enable115AutoRename", enable115AutoRename);
|
||||
$("#autoRenameScopeRow").toggle(enable115AutoRename === YES$1);
|
||||
}));
|
||||
@@ -5156,14 +5190,14 @@ ${value}\r
|
||||
}));
|
||||
$("#enable115Match").prop("checked", !!settingObj.enable115Match && settingObj.enable115Match === YES$1);
|
||||
$("#enable115Match").on("change", (async (event) => {
|
||||
const enable115Match = $("#enable115Match").is(":checked") ? YES$1 : NO;
|
||||
const enable115Match = $("#enable115Match").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("enable115Match", enable115Match);
|
||||
let movieList = $(this.getSelector().itemSelector).toArray();
|
||||
await this.getBean("WangPan115MatchPlugin").matchMovieList(movieList);
|
||||
}));
|
||||
$("#enableVerticalModel").prop("checked", !!settingObj.enableVerticalModel && settingObj.enableVerticalModel === YES$1);
|
||||
$("#enableVerticalModel").on("change", (async (event) => {
|
||||
const enableVerticalModel = $("#enableVerticalModel").is(":checked") ? YES$1 : NO;
|
||||
const enableVerticalModel = $("#enableVerticalModel").is(":checked") ? YES$1 : NO$1;
|
||||
await storageManager.saveSettingItem("enableVerticalModel", enableVerticalModel);
|
||||
this.applyImageMode();
|
||||
}));
|
||||
@@ -5272,7 +5306,7 @@ ${value}\r
|
||||
}
|
||||
async applyImageMode() {
|
||||
$("#verticalImgStyle").remove();
|
||||
if (await storageManager.getSetting("enableVerticalModel", NO) === YES$1) {
|
||||
if (await storageManager.getSetting("enableVerticalModel", NO$1) === YES$1) {
|
||||
let imgPosition = "100% 50% !important";
|
||||
window.location.href.includes("/advanced_search?type=100") && (imgPosition = "50% 50% !important");
|
||||
const verticalStyle = `
|
||||
@@ -5443,11 +5477,11 @@ ${value}\r
|
||||
settingObj.refresh_token = $("#refresh_token").val();
|
||||
settingObj.highlightedTagNumber = $("#highlightedTagNumber").val();
|
||||
settingObj.highlightedTagColor = $("#highlightedTagColor").val();
|
||||
settingObj.showWaitCheckBtn = $("#showWaitCheckBtn").is(":checked") ? YES$1 : NO;
|
||||
settingObj.showWaitCheckBtn = $("#showWaitCheckBtn").is(":checked") ? YES$1 : NO$1;
|
||||
settingObj.showWaitCheckBtn === YES$1 ? $("#waitCheckBtn").show() : $("#waitCheckBtn").hide();
|
||||
settingObj.showWaitDownBtn = $("#showWaitDownBtn").is(":checked") ? YES$1 : NO;
|
||||
settingObj.showWaitDownBtn = $("#showWaitDownBtn").is(":checked") ? YES$1 : NO$1;
|
||||
settingObj.showWaitDownBtn === YES$1 ? $("#waitDownBtn").show() : $("#waitDownBtn").hide();
|
||||
settingObj.randomOpenWaitDown = $("#randomOpenWaitDown").is(":checked") ? YES$1 : NO;
|
||||
settingObj.randomOpenWaitDown = $("#randomOpenWaitDown").is(":checked") ? YES$1 : NO$1;
|
||||
settingObj.checkConcurrencyCount = $("#checkConcurrencyCount").val();
|
||||
settingObj.checkRequestSleep = $("#checkRequestSleep").val();
|
||||
settingObj.enableCheckBlacklist = $("#enableCheckBlacklist").val();
|
||||
@@ -5473,18 +5507,20 @@ ${value}\r
|
||||
settingObj.javDbUrl = $("#javDbUrl").val().replace(/\/$/, "");
|
||||
settingObj.javBusUrl = $("#javBusUrl").val().replace(/\/$/, "");
|
||||
settingObj.supJavUrl = $("#supJavUrl").val().replace(/\/$/, "");
|
||||
settingObj.enableTitleSelectFilter = $("#enableTitleSelectFilter").is(":checked") ? YES$1 : NO;
|
||||
settingObj.enableFavoriteActresses = $("#enableFavoriteActresses").is(":checked") ? YES$1 : NO;
|
||||
settingObj.enableSaveActressCarInfo = $("#enableSaveActressCarInfo").is(":checked") ? YES$1 : NO;
|
||||
settingObj.enableScreenSvg = $("#enableScreenSvg").is(":checked") ? YES$1 : NO;
|
||||
settingObj.enableVideoSvg = $("#enableVideoSvg").is(":checked") ? YES$1 : NO;
|
||||
settingObj.enableHandleSvg = $("#enableHandleSvg").is(":checked") ? YES$1 : NO;
|
||||
settingObj.enableSiteSvg = $("#enableSiteSvg").is(":checked") ? YES$1 : NO;
|
||||
settingObj.enableCopySvg = $("#enableCopySvg").is(":checked") ? YES$1 : NO;
|
||||
settingObj.enableTitleSelectFilter = $("#enableTitleSelectFilter").is(":checked") ? YES$1 : NO$1;
|
||||
settingObj.enableFavoriteActresses = $("#enableFavoriteActresses").is(":checked") ? YES$1 : NO$1;
|
||||
settingObj.enableSaveActressCarInfo = $("#enableSaveActressCarInfo").is(":checked") ? YES$1 : NO$1;
|
||||
settingObj.enableScreenSvg = $("#enableScreenSvg").is(":checked") ? YES$1 : NO$1;
|
||||
settingObj.enableVideoSvg = $("#enableVideoSvg").is(":checked") ? YES$1 : NO$1;
|
||||
settingObj.enableHandleSvg = $("#enableHandleSvg").is(":checked") ? YES$1 : NO$1;
|
||||
settingObj.enableSiteSvg = $("#enableSiteSvg").is(":checked") ? YES$1 : NO$1;
|
||||
settingObj.enableCopySvg = $("#enableCopySvg").is(":checked") ? YES$1 : NO$1;
|
||||
$("#hotkey-panel [id]").map(((i, el) => el.id)).get().forEach(((containerId) => {
|
||||
settingObj[containerId] = $(`#${containerId}`).val();
|
||||
}));
|
||||
settingObj.enableImageHotKey = $("#enableImageHotKey").is(":checked") ? YES$1 : NO;
|
||||
settingObj.enableImageHotKey = $("#enableImageHotKey").is(":checked") ? YES$1 : NO$1;
|
||||
settingObj.enable115OfflineFormat = $("#enable115OfflineFormat").is(":checked") ? YES$1 : NO$1;
|
||||
settingObj.offlineFolderFormat = $("#offlineFolderFormat").val();
|
||||
await storageManager.saveSetting(settingObj);
|
||||
let reviewKeywordList = [];
|
||||
$("#reviewKeywordContainer .keyword-label").toArray().forEach(((item) => {
|
||||
@@ -7439,7 +7475,7 @@ ${value}\r
|
||||
}
|
||||
}
|
||||
async handleVideo() {
|
||||
if (await storageManager.getSetting("enableLoadPreviewVideo", YES$1) === NO) return;
|
||||
if (await storageManager.getSetting("enableLoadPreviewVideo", YES$1) === NO$1) return;
|
||||
const $videoEl = $("#preview-video");
|
||||
if (!$videoEl.length) return;
|
||||
const $videoContainer = $videoEl.parent();
|
||||
@@ -9282,7 +9318,7 @@ ${value}\r
|
||||
$foldCategoryBtn.on("click", (async (event) => {
|
||||
event.preventDefault();
|
||||
isFolded = !isFolded;
|
||||
localStorage.setItem("jhs_foldCategory", isFolded ? YES$1 : NO);
|
||||
localStorage.setItem("jhs_foldCategory", isFolded ? YES$1 : NO$1);
|
||||
const [newText2, newIcon2] = isFolded ? ["展开", "icon-angle-double-down"] : ["折叠", "icon-angle-double-up"];
|
||||
$foldCategoryBtn.find("span").text(newText2).end().find("i").attr("class", newIcon2);
|
||||
$subTags[isFolded ? "hide" : "show"]();
|
||||
@@ -10779,7 +10815,7 @@ ${err.stack}` : "");
|
||||
return "RelatedPlugin";
|
||||
}
|
||||
async showRelated($eleBox, movieId) {
|
||||
const enableLoadRelated = await storageManager.getSetting("enableLoadRelated", NO), $magnets = $eleBox;
|
||||
const enableLoadRelated = await storageManager.getSetting("enableLoadRelated", NO$1), $magnets = $eleBox;
|
||||
if (movieId) {
|
||||
$magnets.append(`
|
||||
<div style="display: flex; align-items: center; margin: 16px 0; color: #666; font-size: 14px;">
|
||||
@@ -10810,7 +10846,7 @@ ${err.stack}` : "");
|
||||
} else {
|
||||
$("#relatedContainer").hide();
|
||||
$("#relatedFooter").hide();
|
||||
storageManager.saveSettingItem("enableLoadRelated", NO);
|
||||
storageManager.saveSettingItem("enableLoadRelated", NO$1);
|
||||
}
|
||||
}));
|
||||
$magnets.append('<div id="relatedContainer"></div>');
|
||||
@@ -12578,7 +12614,103 @@ ${err.stack}` : "");
|
||||
$headerRow.append($("<td>").text("操作"));
|
||||
}
|
||||
}
|
||||
|
||||
static sanitizeDirName(str) {
|
||||
if (!str) return "";
|
||||
return str.replace(/[\\/:*?"<>|]/g, "").replace(/\s+/g, " ").trim();
|
||||
}
|
||||
|
||||
static parseOfflineDirTemplate(str, params) {
|
||||
if (!str || !params) return str;
|
||||
return str.replace(/\$\{(\w+)\}/g, (match, key) => {
|
||||
if (!params.hasOwnProperty(key)) return match;
|
||||
const value = params[key] || "";
|
||||
return WangPan115TaskPlugin.sanitizeDirName(String(value));
|
||||
});
|
||||
}
|
||||
|
||||
static async ensureDir(dirName, pid = 0) {
|
||||
const result = await gmHttp.postFileFormData("https://webapi.115.com/files/add", {
|
||||
pid,
|
||||
cname: dirName
|
||||
});
|
||||
if (result && result.file_id) return result.file_id;
|
||||
const searchRes = await searchFiles(dirName, 0, 1, {fc: 1});
|
||||
if (searchRes && searchRes.data && searchRes.data.length > 0) {
|
||||
const match = searchRes.data.find((d) => d.pid === pid || d.pid === String(pid));
|
||||
if (match) return match.fid || match.file_id;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
static async registerDirAsDownPath(fileId, dirName) {
|
||||
await gmHttp.postFileFormData("https://webapi.115.com/offine/downpath", {
|
||||
file_id: fileId
|
||||
});
|
||||
const list = await getDownPathList();
|
||||
const created = list ? list.find((d) => d.file_id === fileId || String(d.file_id) === String(fileId)) : null;
|
||||
return created ? created.id : null;
|
||||
}
|
||||
|
||||
static async createMultiLevelDownPath(templatePath) {
|
||||
const segments = templatePath.split("/").filter((s) => s.trim());
|
||||
if (segments.length === 0) return null;
|
||||
let pid = 0;
|
||||
let fileId = null;
|
||||
for (const seg of segments) {
|
||||
fileId = await WangPan115TaskPlugin.ensureDir(seg.trim(), pid);
|
||||
if (!fileId) {
|
||||
console.error("[115离线] 创建目录失败:", seg);
|
||||
return null;
|
||||
}
|
||||
pid = fileId;
|
||||
}
|
||||
const lastDirName = segments[segments.length - 1].trim();
|
||||
const downPathId = await WangPan115TaskPlugin.registerDirAsDownPath(fileId, lastDirName);
|
||||
console.log("[115离线] 多级目录创建完成:", templatePath, "→ downPathId=" + downPathId);
|
||||
return downPathId;
|
||||
}
|
||||
|
||||
getPageInfoForOffline() {
|
||||
const baseInfo = this.getPageInfo();
|
||||
const carNum2 = baseInfo.carNum || "";
|
||||
let title = "", maker = "", actor = "";
|
||||
if (isJavBus$1) {
|
||||
title = $("h3").first().text().trim();
|
||||
maker = $('span.header:contains("製作商:")').parent("p").text().replace("製作商:", "").trim() || $('span.header:contains("制作商:")').parent("p").text().replace("制作商:", "").trim();
|
||||
const actorEl = $('span.genre a[href*="/star/"]').first();
|
||||
actor = actorEl.length ? actorEl.text().trim() : "";
|
||||
} else {
|
||||
title = $(".current-title").first().text().trim() || $("h2.title.is-4 .current-title").first().text().trim() || $(".movie-title").first().text().trim();
|
||||
maker = $('strong:contains("片商:")').parent().find(".value").text().trim() || $('strong:contains("片商:")').parent().find(".value").text().trim();
|
||||
actor = $(".actor-female").first().text().trim() || $('strong:contains("演員:"), strong:contains("演员:")').parent().find(".value a").first().text().trim() || "";
|
||||
}
|
||||
const now = /* @__PURE__ */ new Date();
|
||||
if (carNum2 && title) {
|
||||
const upperTitle = title.toUpperCase();
|
||||
const upperCode = carNum2.toUpperCase();
|
||||
if (upperTitle.startsWith(upperCode)) {
|
||||
title = title.substring(carNum2.length).replace(/^[\s\-_]+/, "").trim();
|
||||
}
|
||||
}
|
||||
console.log("[115离线] 页面信息提取:", {code: carNum2, title, maker, actor});
|
||||
return {
|
||||
code: carNum2,
|
||||
title,
|
||||
maker,
|
||||
actor,
|
||||
date: utils.formatDate(now).split(" ")[0]
|
||||
};
|
||||
}
|
||||
async getSavePathId(nyName) {
|
||||
const enableCustom = await storageManager.getSetting("enable115OfflineFormat", NO);
|
||||
if (enableCustom === YES) {
|
||||
const template = await storageManager.getSetting("offlineFolderFormat", "");
|
||||
if (template && template.includes("${")) {
|
||||
const pageInfo = this.getPageInfoForOffline();
|
||||
return WangPan115TaskPlugin.parseOfflineDirTemplate(template, pageInfo);
|
||||
}
|
||||
}
|
||||
let savePath115 = await storageManager.getSetting("savePath115", "云下载");
|
||||
nyName && (savePath115 = savePath115.replaceAll("{ny}", nyName));
|
||||
savePath115 = savePath115.replaceAll("{date}", utils.formatDate(/* @__PURE__ */ new Date()));
|
||||
@@ -12599,17 +12731,42 @@ ${err.stack}` : "");
|
||||
});
|
||||
return;
|
||||
}
|
||||
const sign = singInfo.sign, time = singInfo.time, userId = this.getUserId(),
|
||||
result = await (async (magnet, wp_path_id = "", uid, sign2, time2) => {
|
||||
const sign = singInfo.sign, time = singInfo.time, userId = this.getUserId();
|
||||
let wp_path_id = savePath || "";
|
||||
if (!wp_path_id) {
|
||||
const fullPath = await this.getSavePathId();
|
||||
console.log("[115离线] 目录模板解析结果:", fullPath);
|
||||
if (fullPath) {
|
||||
if (fullPath.includes("/")) {
|
||||
console.log("[115离线] 检测到多级目录,逐级创建:", fullPath);
|
||||
const newId = await WangPan115TaskPlugin.createMultiLevelDownPath(fullPath);
|
||||
if (newId) wp_path_id = newId;
|
||||
} else {
|
||||
const downPathList = await getDownPathList();
|
||||
if (downPathList && downPathList.length > 0) {
|
||||
const matched = downPathList.find(((d) => d.name === fullPath));
|
||||
if (matched) {
|
||||
wp_path_id = matched.id;
|
||||
console.log('[115离线] 目录匹配结果: 匹配到 "' + matched.name + '" -> id=' + matched.id);
|
||||
} else {
|
||||
console.log('[115离线] 目录匹配结果: 未匹配到 "' + fullPath + '",自动创建并注册');
|
||||
const newId = await WangPan115TaskPlugin.createMultiLevelDownPath(fullPath);
|
||||
if (newId) wp_path_id = newId;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
const result = await (async (magnet, wp_path_id2 = "", uid, sign2, time2) => {
|
||||
const data = {
|
||||
url: encodeURIComponent(magnet),
|
||||
wp_path_id,
|
||||
wp_path_id: wp_path_id2,
|
||||
uid,
|
||||
sign: sign2,
|
||||
time: time2
|
||||
};
|
||||
return await gmHttp.postForm("https://115.com/web/lixian/?ct=lixian&ac=add_task_url", data);
|
||||
})(magnetLink, savePath || "", userId, sign, time);
|
||||
})(magnetLink, wp_path_id, userId, sign, time);
|
||||
console.log("离线下载返回值:", result);
|
||||
let infoHash = result.info_hash, fileId = await this.getFileId(userId, sign, time, infoHash),
|
||||
openUrl = "https://115.com/?tab=offline&mode=wangpan";
|
||||
@@ -13026,7 +13183,7 @@ ${err.stack}` : "");
|
||||
}
|
||||
async matchDetailPage(matchList) {
|
||||
if (!window.isDetailPage) return;
|
||||
if (await storageManager.getSetting("enable115Match", NO) === NO) return;
|
||||
if (await storageManager.getSetting("enable115Match", NO$1) === NO$1) return;
|
||||
const $detail = $('\n <div class="jhs-match-detail jhs-115-match-detail" id="115-match-table">\n <table>\n <thead>\n <tr style="text-align: center">\n <th colspan="4">115匹配</th>\n </tr>\n <tr>\n <th>名称</th>\n <th>大小</th>\n <th>时间</th>\n <th>播放</th>\n </tr>\n </thead>\n <tbody>\n </tbody>\n </table>\n </div>\n '),
|
||||
$tbody = $detail.find("tbody");
|
||||
try {
|
||||
@@ -13083,7 +13240,7 @@ ${err.stack}` : "");
|
||||
else $("#mag-submit-show").before($detail);
|
||||
}
|
||||
async matchMovieList(movieListElement) {
|
||||
if (await storageManager.getSetting("enable115Match", NO) !== NO) {
|
||||
if (await storageManager.getSetting("enable115Match", NO$1) !== NO$1) {
|
||||
await this.checkLoginStatus();
|
||||
await this.processMovieElements(movieListElement);
|
||||
} else $(".video-title [class^='jhs-match-']").remove();
|
||||
@@ -13468,7 +13625,7 @@ ${err.stack}` : "");
|
||||
}
|
||||
async autoRenameFiles(carNum2, matchList) {
|
||||
try {
|
||||
const enableAutoRename = await storageManager.getSetting("enable115AutoRename", NO);
|
||||
const enableAutoRename = await storageManager.getSetting("enable115AutoRename", NO$1);
|
||||
if (enableAutoRename !== YES) return;
|
||||
const scope = await storageManager.getSetting("autoRenameScope", "vr_only");
|
||||
if (scope === "vr_only" && !carNum2.toUpperCase().includes("VR")) return;
|
||||
@@ -13710,7 +13867,7 @@ ${err.stack}` : "");
|
||||
return itemList;
|
||||
}
|
||||
async logImageHeightsByRow() {
|
||||
if (await storageManager.getSetting("enableVerticalModel", NO) === YES$1) return;
|
||||
if (await storageManager.getSetting("enableVerticalModel", NO$1) === YES$1) return;
|
||||
const itemSelector = this.getSelector().itemSelector,
|
||||
containerColumns = await storageManager.getSetting("containerColumns", 5),
|
||||
itemList = await this.getVisibleImageItems(itemSelector, "img");
|
||||
@@ -13781,8 +13938,8 @@ ${err.stack}` : "");
|
||||
sortText = "当前排序方式: " + ("rateCount" === jhs_sortMethod ? "评价人数" : "date" === jhs_sortMethod ? "时间" : "默认");
|
||||
$el.append(`
|
||||
<div style="display: flex;align-items: center; ${otherCss} ">
|
||||
<a id="waitCheckBtn" class="menu-btn main-tab-btn" data-tip="打开未鉴定的列表项, 并自动播放视频" style="background-color:#56c938 !important; ${showWaitCheckBtn === NO ? "display: none" : ""}"><span>打开待鉴定</span></a>
|
||||
<a id="waitDownBtn" class="menu-btn main-tab-btn" style="background-color:#2caac0 !important; ${showWaitDownBtn === NO ? "display: none" : ""}"><span>打开已收藏</span></a>
|
||||
<a id="waitCheckBtn" class="menu-btn main-tab-btn" data-tip="打开未鉴定的列表项, 并自动播放视频" style="background-color:#56c938 !important; ${showWaitCheckBtn === NO$1 ? "display: none" : ""}"><span>打开待鉴定</span></a>
|
||||
<a id="waitDownBtn" class="menu-btn main-tab-btn" style="background-color:#2caac0 !important; ${showWaitDownBtn === NO$1 ? "display: none" : ""}"><span>打开已收藏</span></a>
|
||||
${isStarPage ? `
|
||||
<a id="addBlacklistBtn" class="menu-btn main-tab-btn" style="background-color:${addBlacklistBtnColor} !important;" data-tip="将演员加入黑名单, 后续有作品更新也会纳入屏蔽中"><span>${addBlacklistBtnText}</span></a>
|
||||
<a id="filterAllVideo" class="menu-btn main-tab-btn" style="background-color:#e8ab39 !important;margin-right: 30px!important;" data-tip="一键屏蔽已选分类的视频列表至鉴定记录中"><span>一键屏蔽所有作品</span></a>
|
||||
@@ -13811,8 +13968,8 @@ ${err.stack}` : "");
|
||||
}
|
||||
$(".masonry").parent().prepend(`
|
||||
<div style="margin: 10px; display: flex;">
|
||||
<a id="waitCheckBtn" class="menu-btn main-tab-btn" style="background-color:#56c938 !important; ${showWaitCheckBtn === NO ? "display: none" : ""}"><span>打开待鉴定</span></a>
|
||||
<a id="waitDownBtn" class="menu-btn main-tab-btn" style="background-color:#2caac0 !important; ${showWaitDownBtn === NO ? "display: none" : ""}"><span>打开已收藏</span></a>
|
||||
<a id="waitCheckBtn" class="menu-btn main-tab-btn" style="background-color:#56c938 !important; ${showWaitCheckBtn === NO$1 ? "display: none" : ""}"><span>打开待鉴定</span></a>
|
||||
<a id="waitDownBtn" class="menu-btn main-tab-btn" style="background-color:#2caac0 !important; ${showWaitDownBtn === NO$1 ? "display: none" : ""}"><span>打开已收藏</span></a>
|
||||
|
||||
${isStarPage ? `
|
||||
<a id="addBlacklistBtn" class="menu-btn main-tab-btn" style="background-color:${addBlacklistBtnColor} !important;" data-tip="将演员加入黑名单, 后续有作品更新也会纳入屏蔽中"><span>${addBlacklistBtnText}</span></a>
|
||||
@@ -14019,7 +14176,7 @@ ${err.stack}` : "");
|
||||
}
|
||||
async openFavorite() {
|
||||
let favoriteList, openCount = await storageManager.getSetting("waitCheckCount", 5),
|
||||
randomOpenWaitDown = await storageManager.getSetting("randomOpenWaitDown", NO),
|
||||
randomOpenWaitDown = await storageManager.getSetting("randomOpenWaitDown", NO$1),
|
||||
dataList = await storageManager.getCarList();
|
||||
favoriteList = randomOpenWaitDown === YES$1 ? dataList.filter(((item) => item.status === Status_FAVORITE$1)).sort((() => Math.random() - 0.5)) : dataList.filter(((item) => item.status === Status_FAVORITE$1)).sort(((a, b) => b.createDate - a.createDate));
|
||||
for (let i = 0; i < openCount; i++) {
|
||||
@@ -14483,7 +14640,7 @@ ${err.stack}` : "");
|
||||
} else {
|
||||
$("#reviewsContainer").hide();
|
||||
$("#reviewsFooter").hide();
|
||||
storageManager.saveSettingItem("enableLoadReview", NO);
|
||||
storageManager.saveSettingItem("enableLoadReview", NO$1);
|
||||
}
|
||||
}));
|
||||
$magnets.append('<div id="reviewsContainer"></div>');
|
||||
@@ -15573,7 +15730,7 @@ ${err.stack}` : "");
|
||||
});
|
||||
}));
|
||||
const highlightMagnetPlugin = this.getBean("HighlightMagnetPlugin"),
|
||||
enableMagnetsFilter = await storageManager.getSetting("enableMagnetsFilter", NO);
|
||||
enableMagnetsFilter = await storageManager.getSetting("enableMagnetsFilter", NO$1);
|
||||
if (enableMagnetsFilter === YES$1) {
|
||||
const savedSettings = await storageManager.getSetting("magnetSortAndFilter", "{}");
|
||||
let settings;
|
||||
@@ -15606,7 +15763,7 @@ ${err.stack}` : "");
|
||||
if ("取消磁力过滤" === $span.text()) {
|
||||
highlightMagnetPlugin.showAll();
|
||||
$span.text("排序与过滤");
|
||||
storageManager.saveSettingItem("enableMagnetsFilter", NO);
|
||||
storageManager.saveSettingItem("enableMagnetsFilter", NO$1);
|
||||
} else {
|
||||
this.openMagnetSortFilterPanel(highlightMagnetPlugin);
|
||||
}
|
||||
@@ -15845,7 +16002,7 @@ ${err.stack}` : "");
|
||||
} else {
|
||||
highlightMagnetPlugin.showAll();
|
||||
$("#magnets-span").text("排序与过滤");
|
||||
await storageManager.saveSettingItem("enableMagnetsFilter", NO);
|
||||
await storageManager.saveSettingItem("enableMagnetsFilter", NO$1);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error("[磁力排序] 应用失败:", e);
|
||||
@@ -16895,13 +17052,13 @@ ${err.stack}` : "");
|
||||
actorCarNumToNameMap: /* @__PURE__ */ new Map(),
|
||||
actressCarNumToNameMap: /* @__PURE__ */ new Map()
|
||||
}), t2 = utils.time("组装数据耗时"), settings = {
|
||||
showFilterItem: (null == settingObj ? void 0 : settingObj.showFilterItem) ?? NO,
|
||||
showFilterActorItem: (null == settingObj ? void 0 : settingObj.showFilterActorItem) ?? NO,
|
||||
showFilterKeywordItem: (null == settingObj ? void 0 : settingObj.showFilterKeywordItem) ?? NO,
|
||||
showFilterItem: (null == settingObj ? void 0 : settingObj.showFilterItem) ?? NO$1,
|
||||
showFilterActorItem: (null == settingObj ? void 0 : settingObj.showFilterActorItem) ?? NO$1,
|
||||
showFilterKeywordItem: (null == settingObj ? void 0 : settingObj.showFilterKeywordItem) ?? NO$1,
|
||||
showFavoriteItem: (null == settingObj ? void 0 : settingObj.showFavoriteItem) ?? YES$1,
|
||||
showHasDownItem: (null == settingObj ? void 0 : settingObj.showHasDownItem) ?? YES$1,
|
||||
showHasWatchItem: (null == settingObj ? void 0 : settingObj.showHasWatchItem) ?? YES$1,
|
||||
showAllItem: (null == settingObj ? void 0 : settingObj.showAllItem) ?? NO,
|
||||
showAllItem: (null == settingObj ? void 0 : settingObj.showAllItem) ?? NO$1,
|
||||
tagPosition: (null == settingObj ? void 0 : settingObj.tagPosition) || "rightTop",
|
||||
movieShowType: (null == settingObj ? void 0 : settingObj.movieShowType) || "hide"
|
||||
};
|
||||
@@ -16930,7 +17087,7 @@ ${err.stack}` : "");
|
||||
foundKeyword = filterKeywordList.find(((kw) => title.includes(kw) || carNum2.startsWith(kw))),
|
||||
isFilterKeyword = !!foundKeyword;
|
||||
if (!isSearchPage) {
|
||||
let shouldHide = settings.showFavoriteItem === NO && isFavorite || settings.showHasDownItem === NO && isHasDown || settings.showHasWatchItem === NO && isHasWatch || settings.showFilterItem === NO && isFiltered && !(isFavorite || isHasDown || isHasWatch) || settings.showFilterActorItem === NO && isFilterActor || settings.showFilterKeywordItem === NO && isFilterKeyword;
|
||||
let shouldHide = settings.showFavoriteItem === NO$1 && isFavorite || settings.showHasDownItem === NO$1 && isHasDown || settings.showHasWatchItem === NO$1 && isHasWatch || settings.showFilterItem === NO$1 && isFiltered && !(isFavorite || isHasDown || isHasWatch) || settings.showFilterActorItem === NO$1 && isFilterActor || settings.showFilterKeywordItem === NO$1 && isFilterKeyword;
|
||||
if ($box2.attr("data-movieShowType") !== settings.movieShowType) {
|
||||
$box2.css("border", "");
|
||||
$box2.children().css("visibility", "");
|
||||
@@ -17109,7 +17266,7 @@ ${err.stack}` : "");
|
||||
}
|
||||
async parseActressName(url) {
|
||||
let actorName = null;
|
||||
if (await storageManager.getSetting("enableSaveActressCarInfo", NO) === YES$1) {
|
||||
if (await storageManager.getSetting("enableSaveActressCarInfo", NO$1) === YES$1) {
|
||||
clog.debug("鉴定补录演员信息-已启用, 开始解析详情页");
|
||||
clog.debug("开始解析演员详情页", url);
|
||||
const html = await gmHttp.get(url), $dom = utils.htmlTo$dom(html);
|
||||
@@ -17130,7 +17287,7 @@ ${err.stack}` : "");
|
||||
this.favoriteHotKey = settingObj.favoriteHotKey;
|
||||
this.hasDownHotKey = settingObj.hasDownHotKey;
|
||||
this.hasWatchHotKey = settingObj.hasWatchHotKey;
|
||||
this.enableImageHotKey = settingObj.enableImageHotKey || NO;
|
||||
this.enableImageHotKey = settingObj.enableImageHotKey || NO$1;
|
||||
this.clogHotKey = settingObj.clogHotKey;
|
||||
this.foldCategoryHotKey = settingObj.foldCategoryHotKey;
|
||||
this.showFilterItemHotKey = settingObj.showFilterItemHotKey;
|
||||
@@ -17151,7 +17308,7 @@ ${err.stack}` : "");
|
||||
}, registerToggleHotkey = (hotkeyName, settingKey) => {
|
||||
const hotkeyString = this[hotkeyName];
|
||||
hotkeyString && HotkeyManager.registerHotkey(hotkeyString, (async (event) => {
|
||||
const newVal = await storageManager.getSetting(settingKey) === YES$1 ? NO : YES$1;
|
||||
const newVal = await storageManager.getSetting(settingKey) === YES$1 ? NO$1 : YES$1;
|
||||
await storageManager.saveSettingItem(settingKey, newVal);
|
||||
window.refresh();
|
||||
}));
|
||||
@@ -17159,7 +17316,7 @@ ${err.stack}` : "");
|
||||
for (const hotkeyName in HOTKEY_REGISTRY) if (HOTKEY_REGISTRY.hasOwnProperty(hotkeyName)) {
|
||||
registerToggleHotkey(hotkeyName, HOTKEY_REGISTRY[hotkeyName]);
|
||||
}
|
||||
if (this.enableImageHotKey === NO) return;
|
||||
if (this.enableImageHotKey === NO$1) return;
|
||||
const handleAction = async (boxInfo, status) => {
|
||||
setTimeout((async () => {
|
||||
let actorName = await this.parseActressName(boxInfo.url);
|
||||
@@ -17235,7 +17392,7 @@ ${err.stack}` : "");
|
||||
replaceWithHdForDMM(img);
|
||||
}));
|
||||
}
|
||||
storageManager.getSetting("hoverBigImg", NO).then(((hoverBigImg) => {
|
||||
storageManager.getSetting("hoverBigImg", NO$1).then(((hoverBigImg) => {
|
||||
hoverBigImg === YES$1 && (window.imageHoverPreviewObj ? window.imageHoverPreviewObj.bindEvents() : window.imageHoverPreviewObj = new ImageHoverPreview({
|
||||
selector: this.getSelector().coverImgSelector
|
||||
}));
|
||||
|
||||
+993
@@ -0,0 +1,993 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - JavBus</title>
|
||||
<meta name="keywords" content="NIMA-086,肉漫,潮吹,中出,高畫質,原作コラボ,巨乳,アクメ・オーガズム,單體作品,DMM獨家">
|
||||
<meta name="description"
|
||||
content="【發行日期】2026-09-25,【長度】120分鐘,(NIMA-086)実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒">
|
||||
<link rel="alternate" href="https://www.javbus.com/en/NIMA-086" hreflang="en"/>
|
||||
<link rel="alternate" href="https://www.javbus.com/ja/NIMA-086" hreflang="ja"/>
|
||||
<link rel="alternate" href="https://www.javbus.com/ko/NIMA-086" hreflang="ko"/>
|
||||
<link rel="alternate" href="https://www.javbus.com/NIMA-086" hreflang="zh"/>
|
||||
<link rel="alternate" href="https://www.javbus.com/NIMA-086" hreflang="x-default"/>
|
||||
<link rel="canonical" href="https://www.javbus.com/NIMA-086"/>
|
||||
<link rel="preconnect" href="https://poweredby.jads.co" crossorigin>
|
||||
<link rel="dns-prefetch" href="https://poweredby.jads.co">
|
||||
<link rel="stylesheet" href="https://www.javbus.com/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="https://www.javbus.com/css/bootstrap-theme.min.css">
|
||||
<link rel="stylesheet" href="https://www.javbus.com/css/css-slider.css?v=9.3">
|
||||
<link rel="stylesheet" href="https://www.javbus.com/css/nav.overlay.css?v=3.9.8">
|
||||
<link rel="stylesheet" href="https://www.javbus.com/css/magnific-popup.css">
|
||||
<link rel="stylesheet" href="https://www.javbus.com/css/base.css?v=7.15">
|
||||
<script src="https://www.javbus.com/js/jquery.min.js"></script>
|
||||
<script src="https://www.javbus.com/js/jquery.magnific-popup.min.js"></script>
|
||||
<script src="https://www.javbus.com/js/bootstrap.min.js" defer></script>
|
||||
<script src="https://www.javbus.com/js/jquery.cookie.min.js" defer></script>
|
||||
<script src="https://www.javbus.com/js/base.js" defer></script>
|
||||
<script src="https://www.javbus.com/js/bootstrap-hover-dropdown.js" defer></script>
|
||||
<script src="https://www.javbus.com/js/nav.overlay.js?v=10.30.3" defer></script>
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://www.javbus.com/js/html5shiv.min.js"></script>
|
||||
<script src="https://www.javbus.com/js/respond.min.js"></script><![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<script language="JavaScript">
|
||||
var mod = 0;
|
||||
var lang = 'zh';
|
||||
var info = '搜尋 識別碼, 影片, 演員';
|
||||
|
||||
function searchs(obj) {
|
||||
var searchinput = $("#" + obj);
|
||||
if (searchinput.val() == '') {
|
||||
$('#magnet-url-post').trigger("click");
|
||||
return false;
|
||||
} else {
|
||||
//$('#search-loading').show();str.replace(/ /g, "-")
|
||||
window.open("https://www.javbus.com/search/" + encodeURIComponent($.trim(searchinput.val()).replace(/ /g, "+")) + "&type=&parent=ce");
|
||||
}
|
||||
}
|
||||
|
||||
$(function () {
|
||||
|
||||
var url = 'https://www.javbus.com/ajax/search-modal.php?floor=' + Math.floor(Math.random() * 1000 + 1) + '&lang=' + lang;
|
||||
$.ajax({
|
||||
url: url, type: 'GET', success: function (msg) {
|
||||
$("#searchModal").append(msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<div id="search-loading">
|
||||
<table class="search-loading-box" border="0" cellpadding="0" cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table height="80" width="100%" border="0" cellpadding="0" cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td height="40" align="center">
|
||||
<div class="search-loading-text">搜尋中...</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="40" align="center">
|
||||
<img src="https://www.javbus.com/images/search_loading.gif" border="0">
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- Modal Search -->
|
||||
<div id="searchModal" class="modal fade" tabindex="-1" role="dialog"></div>
|
||||
|
||||
<nav class="navbar navbar-default navbar-fixed-top top-bar" style="z-index:900">
|
||||
<div class="container-fluid">
|
||||
<div class="navbar-header mh50">
|
||||
<a href="https://www.javbus.com/">
|
||||
<img class="hidden-xs" height="50" alt="JavBus" src="https://www.javbus.com/images/logo.png"
|
||||
style="height:40px; margin-top:5px;">
|
||||
<img class="visible-xs-inline" height="50" alt="JavBus" src="https://www.javbus.com/images/logo.png">
|
||||
</a>
|
||||
|
||||
<div class="btn-group pull-right visible-xs-inline" role="group" style="margin:8px 8px 0 0;"
|
||||
onclick="window.location.href= '/forum/member.php?mod=logging&action=login&referer=%2F%2Fwww.javbus.com%2FNIMA-086'">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"
|
||||
aria-expanded="false">
|
||||
<img class="avatar" style="width:22px; height:22px;"
|
||||
src="https://uc.javbus22.com/uc/avatar.php?uid=0&size=small"></button>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="btn-group pull-right visible-xs-inline" role="group" style="margin:8px 8px 0 0;">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"
|
||||
aria-expanded="false">
|
||||
<span class="glyphicon glyphicon-globe"></span> <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="https://www.javbus.com/en/NIMA-086">English</a></li>
|
||||
<li><a href="https://www.javbus.com/ja/NIMA-086">日本语</a></li>
|
||||
<li><a href="https://www.javbus.com/ko/NIMA-086">한국의</a></li>
|
||||
<li><a href="https://www.javbus.com/NIMA-086">中文</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div id="navbar" class="collapse navbar-collapse">
|
||||
<div class="navbar-form navbar-left fullsearch-form">
|
||||
<div class="input-group">
|
||||
<input id="search-input" type="text" class="form-control" placeholder="搜尋 識別碼, 影片, 演員">
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-default" type="submit" onClick="searchs('search-input')">搜尋</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="active"><a href="https://www.javbus.com/">有碼</a></li>
|
||||
<li><a href="https://www.javbus.com/uncensored">無碼</a></li>
|
||||
<li class="hidden-md hidden-sm"><!-- <div class="icon-new"></div> --><a href="https://www.javbus.hair/">歐美</a>
|
||||
</li>
|
||||
<li class="hidden-sm"><a href="https://www.javbus.com/forum/">論壇</a></li>
|
||||
<li class="dropdown hidden-sm ">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" role="button"
|
||||
aria-expanded="false">類別 <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="https://www.javbus.com/genre">有碼類別</a></li>
|
||||
<li><a href="https://www.javbus.com/uncensored/genre">無碼類別</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown hidden-sm ">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" role="button"
|
||||
aria-expanded="false">女優 <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="https://www.javbus.com/actresses">有碼女優</a></li>
|
||||
<li><a href="https://www.javbus.com/uncensored/actresses">無碼女優</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown"><a href="https://www.javbus.com/" class="dropdown-toggle" data-toggle="dropdown"
|
||||
data-hover="dropdown" role="button" aria-expanded="false"><span
|
||||
class="glyphicon glyphicon-menu-hamburger"></span></a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li class="visible-md-block visible-sm-block"><a href="https://www.javbus.hair/">歐美</a></li>
|
||||
<li class="visible-sm-block"><a href="https://www.javbus.com/forum/">論壇</a></li>
|
||||
<li class="visible-sm-block"><a href="https://www.javbus.com/genre">有碼類別</a></li>
|
||||
<li class="visible-sm-block"><a href="https://www.javbus.com/uncensored/genre">無碼類別</a></li>
|
||||
<li class="visible-sm-block"><a href="https://www.javbus.com/actresses">有碼女優</a></li>
|
||||
<li class="visible-sm-block"><a href="https://www.javbus.com/uncensored/actresses">無碼女優</a>
|
||||
</li>
|
||||
<li><a href="https://www.javbus.com/genre/hd">高清</a></li>
|
||||
<li><a href="https://www.javbus.com/genre/sub">字幕</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul class="nav navbar-nav navbar-right"
|
||||
onclick="window.location.href= '/forum/member.php?mod=logging&action=login&referer=%2F%2Fwww.javbus.com%2FNIMA-086'">
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" role="button"
|
||||
aria-expanded="false"><img class="avatar"
|
||||
src="https://uc.javbus22.com/uc/avatar.php?uid=0&size=small"><span
|
||||
class="hidden-md hidden-sm ml5">登入</span> </a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" role="button"
|
||||
aria-expanded="false"><span class="glyphicon glyphicon-globe" style="font-size:12px;"></span>
|
||||
<span class="hidden-md hidden-sm">English</span> <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="https://www.javbus.com/en/NIMA-086">English</a></li>
|
||||
<li><a href="https://www.javbus.com/ja/NIMA-086">日本语</a></li>
|
||||
<li><a href="https://www.javbus.com/ko/NIMA-086">한국의</a></li>
|
||||
<li><a href="https://www.javbus.com/NIMA-086">中文</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<!--/.nav-collapse -->
|
||||
</div>
|
||||
</nav>
|
||||
<div class="row visible-xs-inline footer-bar">
|
||||
<div class="col-xs-3 text-center">
|
||||
<a id="menu" class="btn btn-default trigger-overlay"><span class="glyphicon glyphicon-align-justify"></span></a>
|
||||
</div>
|
||||
<div class="col-xs-3 text-center">
|
||||
</div>
|
||||
<div class="col-xs-3 text-center">
|
||||
</div>
|
||||
<div class="col-xs-3 text-center">
|
||||
<a id="back" class="btn btn-default" href="javascript:window.history.back()"><span
|
||||
class="glyphicon glyphicon-share-alt flipx"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
<script src='https://www.javbus.com/js/focus.js?v=8.7'></script>
|
||||
<link rel='stylesheet' type='text/css' href='https://www.javbus.com/css/movie.css?v=2.8'>
|
||||
<link rel='stylesheet' type='text/css' href='https://www.javbus.com/css/movie-box.css'>
|
||||
<script>
|
||||
var gid = 70147716068;
|
||||
var uc = 0;
|
||||
var img = '/pics/cover/ckd7_b.jpg';
|
||||
</script>
|
||||
|
||||
<div class="ad-box all-top">
|
||||
<div class="ad-item">
|
||||
<div class="ad-juicy">
|
||||
<script type="text/javascript" data-cfasync="false" async
|
||||
src="https://poweredby.jads.co/js/jads.js"></script>
|
||||
<ins id="1024549" data-width="728" data-height="90"></ins>
|
||||
<script type="text/javascript" data-cfasync="false"
|
||||
async>(adsbyjuicy = window.adsbyjuicy || []).push({"adzone": 1024549});</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ad-item">
|
||||
<div class="ad-juicy">
|
||||
<script type="text/javascript" data-cfasync="false" async
|
||||
src="https://poweredby.jads.co/js/jads.js"></script>
|
||||
<ins id="1024550" data-width="728" data-height="90"></ins>
|
||||
<script type="text/javascript" data-cfasync="false"
|
||||
async>(adsbyjuicy = window.adsbyjuicy || []).push({"adzone": 1024550});</script>
|
||||
</div>
|
||||
</div>
|
||||
<div id="ky" class="ad-item">
|
||||
<div class='csslider1 autoplay'>
|
||||
<input name="cs_anchor1" id='cs_play1' type="radio" class='cs_anchor' checked>
|
||||
<ul>
|
||||
<li class="cs_skeleton"><img src="/forum/data/attachment/forum/ads/ky_20260923_3.jpg"
|
||||
style="width: 100%;"></li>
|
||||
<li class="num0 img slide"><a href="https://www.3jnbdg.vip:9553/?i_code=14698475" target="_blank"><img
|
||||
src="/forum/data/attachment/forum/ads/ky_20260923_3.jpg"/></a></li>
|
||||
<li class="num1 img slide"><a href="https://www.3jnbdg.vip:9553/?i_code=14698475" target="_blank"><img
|
||||
src="/forum/data/attachment/forum/ads/ky_20260923_5.jpg"/></a></li>
|
||||
<li class="num2 img slide"><a href="https://www.3jnbdg.vip:9553/?i_code=14698475" target="_blank"><img
|
||||
src="/forum/data/attachment/forum/ads/ky_20260923_1.jpg"/></a></li>
|
||||
<li class="num3 img slide"><a href="https://www.3jnbdg.vip:9553/?i_code=14698475" target="_blank"><img
|
||||
src="/forum/data/attachment/forum/ads/ky_20260923_2.jpg"/></a></li>
|
||||
<li class="num4 img slide"><a href="https://www.3jnbdg.vip:9553/?i_code=14698475" target="_blank"><img
|
||||
src="/forum/data/attachment/forum/ads/ky_20260923_4.jpg"/></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="kok" class="ad-item">
|
||||
<div class='csslider1 autoplay'>
|
||||
<input name="cs_anchor2" id='cs_play2' type="radio" class='cs_anchor' checked>
|
||||
<ul>
|
||||
<li class="cs_skeleton"><img src="/forum/data/attachment/forum/ads/zo_20260923_2.jpg"
|
||||
style="width: 100%;"></li>
|
||||
<li class="num0 img slide"><a href="https://120406.zoty2508.com:30501/?i_code=3354655"
|
||||
target="_blank"><img
|
||||
src="/forum/data/attachment/forum/ads/zo_20260923_2.jpg"/></a></li>
|
||||
<li class="num1 img slide"><a href="https://120406.zoty2508.com:30501/?i_code=3354655"
|
||||
target="_blank"><img
|
||||
src="/forum/data/attachment/forum/ads/zo_20260923_1.jpg"/></a></li>
|
||||
<li class="num2 img slide"><a href="https://120406.zoty2508.com:30501/?i_code=3354655"
|
||||
target="_blank"><img
|
||||
src="/forum/data/attachment/forum/ads/zo_20260923_5.jpg"/></a></li>
|
||||
<li class="num3 img slide"><a href="https://120406.zoty2508.com:30501/?i_code=3354655"
|
||||
target="_blank"><img
|
||||
src="/forum/data/attachment/forum/ads/zo_20260923_3.jpg"/></a></li>
|
||||
<li class="num4 img slide"><a href="https://120406.zoty2508.com:30501/?i_code=3354655"
|
||||
target="_blank"><img
|
||||
src="/forum/data/attachment/forum/ads/zo_20260923_4.jpg"/></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input id="token" type="hidden" name="token"
|
||||
value="c738pomVJo1m19OjPoW3yyugBlnubpVPF1MM7fQqG5T34oAOtWShxw11DbmlgOiBYN4XPjFHM+hZU4ePIlpK3osjclQs/ULQEZbJ">
|
||||
<div class="container">
|
||||
<h3>NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒</h3>
|
||||
<div class="row movie">
|
||||
<div class="col-md-9 screencap">
|
||||
<a class="bigImage" href="/pics/cover/ckd7_b.jpg"><img src="/pics/cover/ckd7_b.jpg"
|
||||
title="実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒"></a>
|
||||
</div>
|
||||
<div class="col-md-3 info">
|
||||
<p><span class="header">識別碼:</span> <span style="color:#CC0000;">NIMA-086</span>
|
||||
</p>
|
||||
<p><span class="header">發行日期:</span> 2026-09-25</p>
|
||||
<p><span class="header">長度:</span> 120分鐘</p>
|
||||
<p><span class="header">導演:</span> <a href="https://www.javbus.com/director/a3">ドラゴン西川</a></p>
|
||||
<p><span class="header">製作商:</span> <a href="https://www.javbus.com/studio/dk">Fitch</a>
|
||||
</p>
|
||||
<p><span class="header">發行商:</span> <a href="https://www.javbus.com/label/1oe">肉漫</a>
|
||||
</p>
|
||||
<p class="header">類別:<span id="genre-toggle" class="glyphicon glyphicon-plus"
|
||||
style="cursor: pointer;"></span></p>
|
||||
<p><span class="genre"><label><input type="checkbox" name="gr_sel" value="1z"><a
|
||||
href="https://www.javbus.com/genre/1z">潮吹</a></label></span>
|
||||
<span class="genre"><label><input type="checkbox" name="gr_sel" value="4"><a
|
||||
href="https://www.javbus.com/genre/4">中出</a></label></span>
|
||||
<span class="genre"><label><input type="checkbox" name="gr_sel" value="4o"><a
|
||||
href="https://www.javbus.com/genre/4o">高畫質</a></label></span>
|
||||
<span class="genre"><label><input type="checkbox" name="gr_sel" value="6l"><a
|
||||
href="https://www.javbus.com/genre/6l">原作コラボ</a></label></span>
|
||||
<span class="genre"><label><input type="checkbox" name="gr_sel" value="e"><a
|
||||
href="https://www.javbus.com/genre/e">巨乳</a></label></span>
|
||||
<span class="genre"><label><input type="checkbox" name="gr_sel" value="e3"><a
|
||||
href="https://www.javbus.com/genre/e3">アクメ・オーガズム</a></label></span>
|
||||
<span class="genre"><label><input type="checkbox" name="gr_sel" value="f"><a
|
||||
href="https://www.javbus.com/genre/f">單體作品</a></label></span>
|
||||
<span class="genre"><label><input type="checkbox" name="gr_sel" value="g"><a
|
||||
href="https://www.javbus.com/genre/g">DMM獨家</a></label></span>
|
||||
<span class="genre"><button id="gr_btn" type="button" class="btn">多選提交</button></span>
|
||||
</p>
|
||||
<p class="star-show"><span class="header" style="cursor: pointer;">演員</span>:<span id="star-toggle"
|
||||
class="glyphicon glyphicon-minus"
|
||||
style="cursor: pointer;"></span>
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<div id="star_11wm" class="star-box star-box-common star-box-up idol-box">
|
||||
<li>
|
||||
<a href="https://www.javbus.com/star/11wm"><img src="/pics/actress/11wm_a.jpg" title="彩月七緒"></a>
|
||||
<div class="star-name"><a href="https://www.javbus.com/star/11wm" title="彩月七緒">彩月七緒</a>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
<span class="genre" onmouseover="hoverdiv(event,'star_11wm')"
|
||||
onmouseout="hoverdiv(event,'star_11wm')">
|
||||
<a href="https://www.javbus.com/star/11wm">彩月七緒</a>
|
||||
</span>
|
||||
</p>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="star-div">
|
||||
<h4 id="star-hide" style="cursor: pointer;">演員 <span class="glyphicon glyphicon-minus"></span></h4>
|
||||
<div id="avatar-waterfall">
|
||||
<a class="avatar-box" href="https://www.javbus.com/star/11wm">
|
||||
<div class="photo-frame">
|
||||
<img src="/pics/actress/11wm_a.jpg" title="彩月七緒">
|
||||
</div>
|
||||
<span>彩月七緒</span>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<h4 id="mag-submit-show" style="cursor: pointer;">磁力連結投稿 <span id="mag-submit-toggle"
|
||||
class="glyphicon glyphicon-plus"></span></h4>
|
||||
<div id="mag-submit" class="movie" style="padding:30px 20px 30px 5px;">
|
||||
<div id="mag-submit-hide" class="close" style="margin:-25px -13px 0 0;">×</div>
|
||||
<div class="col-md-11 col-xs-10">
|
||||
<div class="input-group">
|
||||
<div class="input-group-addon">magnet地址:</div>
|
||||
<input type="text" class="form-control" id="appendedInputButton">
|
||||
</div>
|
||||
</div>
|
||||
<button type="button" class="btn btn-default col-md-1 col-xs-2" onClick="checktxt()" data-toggle="modal"
|
||||
data-target="#magneturlpost">分享
|
||||
</button>
|
||||
</div>
|
||||
<!-- Magnet Verify Modal -->
|
||||
<div id="magneturlpost" class="modal fade" tabindex="-1" role="dialog"></div>
|
||||
<div class="movie" style="padding:12px; margin-top:15px">
|
||||
<table id="magnet-table" class="table table-condensed table-striped table-hover" style="margin-bottom:0;">
|
||||
<tr style="font-weight:bold;">
|
||||
<td>磁力名稱 <span class="glyphicon glyphicon-magnet"></span></td>
|
||||
<td style="text-align:center;white-space:nowrap">檔案大小</td>
|
||||
<td style="text-align:center;white-space:nowrap">分享日期</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="movie-loading">
|
||||
<table width="120" border="0" cellpadding="5" cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center">
|
||||
<font class="ajax-text"><img src="https://www.javbus.com/images/movie_loading.gif"
|
||||
border="0"></font>
|
||||
</td>
|
||||
<td align="center">
|
||||
<font class="ajax-text">讀取中...</font>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<h4>樣品圖像</h4>
|
||||
<div id="sample-waterfall">
|
||||
<a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-1.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_1.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 1">
|
||||
</div>
|
||||
</a> <a class="sample-box"
|
||||
href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-2.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_2.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 2">
|
||||
</div>
|
||||
</a> <a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-3.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_3.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 3">
|
||||
</div>
|
||||
</a> <a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-4.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_4.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 4">
|
||||
</div>
|
||||
</a> <a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-5.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_5.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 5">
|
||||
</div>
|
||||
</a> <a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-6.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_6.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 6">
|
||||
</div>
|
||||
</a> <a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-7.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_7.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 7">
|
||||
</div>
|
||||
</a> <a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-8.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_8.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 8">
|
||||
</div>
|
||||
</a> <a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-9.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_9.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 9">
|
||||
</div>
|
||||
</a> <a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-10.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_10.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 10">
|
||||
</div>
|
||||
</a> <a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-11.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_11.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 11">
|
||||
</div>
|
||||
</a> <a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-12.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_12.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 12">
|
||||
</div>
|
||||
</a> <a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-13.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_13.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 13">
|
||||
</div>
|
||||
</a> <a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-14.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_14.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 14">
|
||||
</div>
|
||||
</a> <a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-15.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_15.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 15">
|
||||
</div>
|
||||
</a> <a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-16.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_16.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 16">
|
||||
</div>
|
||||
</a> <a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-17.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_17.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 17">
|
||||
</div>
|
||||
</a> <a class="sample-box" href="https://awsimgsrc.dmm.co.jp/pics_dig/digital/video/nima00086/nima00086jp-18.jpg">
|
||||
<div class="photo-frame"><img src="/pics/sample/ckd7_18.jpg"
|
||||
title="NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒 - 樣品圖像 - 18">
|
||||
</div>
|
||||
</a></div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
<h4 style="position:relative">推薦 <a href="javascript:bootstr(1);"><span id="urad2"
|
||||
class="label label-default"><span
|
||||
class="left-urad2">投放廣告</span><span class="glyphicon glyphicon-envelope"></span></span></a></h4>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-4 text-center ptb10">
|
||||
<script type="text/javascript" data-cfasync="false" async
|
||||
src="https://poweredby.jads.co/js/jads.js"></script>
|
||||
<ins id="1024556" data-width="300" data-height="250"></ins>
|
||||
<script type="text/javascript" data-cfasync="false"
|
||||
async>(adsbyjuicy = window.adsbyjuicy || []).push({"adzone": 1024556});</script>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-4 text-center ptb10">
|
||||
<script type="text/javascript" data-cfasync="false" async
|
||||
src="https://poweredby.jads.co/js/jads.js"></script>
|
||||
<ins id="1024558" data-width="300" data-height="250"></ins>
|
||||
<script type="text/javascript" data-cfasync="false"
|
||||
async>(adsbyjuicy = window.adsbyjuicy || []).push({"adzone": 1024558});</script>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-4 text-center ptb10">
|
||||
<script type="text/javascript" data-cfasync="false" async
|
||||
src="https://poweredby.jads.co/js/jads.js"></script>
|
||||
<ins id="1024557" data-width="300" data-height="250"></ins>
|
||||
<script type="text/javascript" data-cfasync="false"
|
||||
async>(adsbyjuicy = window.adsbyjuicy || []).push({"adzone": 1024557});</script>
|
||||
</div>
|
||||
</div>
|
||||
<h4>同類影片</h4>
|
||||
<div id="related-waterfall" class="mb20">
|
||||
<a title="FANZA同人ランキング1位シリーズ累計10万部突破 実写版 パパ活セーブデータ タイムリープ能力で塩対応女子をデレさせイキ壊れるまで無限攻略! 北岡果林"
|
||||
class="movie-box" href="https://www.javbus.com/MIMK-291" style="display:inline-block; margin:5px;">
|
||||
<div class="photo-frame">
|
||||
<img src="/pics/thumb/cj4u.jpg">
|
||||
</div>
|
||||
<div class="photo-info" style="height:36px; overflow:hidden; text-align:center;">
|
||||
<span>FANZA同人ランキング1位シリーズ累計10万部突破 実写版 パパ活セーブデータ タイムリープ能力で塩対応女子をデレさせイキ壊れるまで無限攻略! 北岡果林</span>
|
||||
</div>
|
||||
</a>
|
||||
<a title="スペンス乳腺開発クリニックSpecial あんづ杏" class="movie-box" href="https://www.javbus.com/PPPE-442"
|
||||
style="display:inline-block; margin:5px;">
|
||||
<div class="photo-frame">
|
||||
<img src="/pics/thumb/cj74.jpg">
|
||||
</div>
|
||||
<div class="photo-info" style="height:36px; overflow:hidden; text-align:center;">
|
||||
<span>スペンス乳腺開発クリニックSpecial あんづ杏</span>
|
||||
</div>
|
||||
</a>
|
||||
<a title="ドコでも即ハメおねだり中出しOKレンタル彼女~恋人代行なのに利用時間が過ぎても帰してくれない性欲ビースト24時~ 美園和花"
|
||||
class="movie-box" href="https://www.javbus.com/MNGS-076" style="display:inline-block; margin:5px;">
|
||||
<div class="photo-frame">
|
||||
<img src="/pics/thumb/cgx2.jpg">
|
||||
</div>
|
||||
<div class="photo-info" style="height:36px; overflow:hidden; text-align:center;">
|
||||
<span>ドコでも即ハメおねだり中出しOKレンタル彼女~恋人代行なのに利用時間が過ぎても帰してくれない性欲ビースト24時~ 美園和花</span>
|
||||
</div>
|
||||
</a>
|
||||
<a title="12時間ノンストップ性感開発モニタリング痙攣・潮吹き・エビ反り失神アクメフルコース 楪カレン"
|
||||
class="movie-box" href="https://www.javbus.com/PPPE-433" style="display:inline-block; margin:5px;">
|
||||
<div class="photo-frame">
|
||||
<img src="/pics/thumb/cgxy.jpg">
|
||||
</div>
|
||||
<div class="photo-info" style="height:36px; overflow:hidden; text-align:center;">
|
||||
<span>12時間ノンストップ性感開発モニタリング痙攣・潮吹き・エビ反り失神アクメフルコース 楪カレン</span>
|
||||
</div>
|
||||
</a>
|
||||
<a title="新・世界一媚薬でキマる変態女のトランス失禁キメセク大絶頂FUCK!! 響蓮" class="movie-box"
|
||||
href="https://www.javbus.com/RKI-747" style="display:inline-block; margin:5px;">
|
||||
<div class="photo-frame">
|
||||
<img src="/pics/thumb/c8dw.jpg">
|
||||
</div>
|
||||
<div class="photo-info" style="height:36px; overflow:hidden; text-align:center;">
|
||||
<span>新・世界一媚薬でキマる変態女のトランス失禁キメセク大絶頂FUCK!! 響蓮</span>
|
||||
</div>
|
||||
</a>
|
||||
<a title="勝手に住みついてる陰キャ幽霊のカラダを好き勝手する話1・2 幽霊だからいくら中出ししたって妊娠しない! それなら毎日、生ハメ・中出しヤリまくり! いいことしかないグラマラス幽霊さんとの同居生活! さつき芽衣"
|
||||
class="movie-box" href="https://www.javbus.com/RKI-736" style="display:inline-block; margin:5px;">
|
||||
<div class="photo-frame">
|
||||
<img src="/pics/thumb/c8dy.jpg">
|
||||
</div>
|
||||
<div class="photo-info" style="height:36px; overflow:hidden; text-align:center;">
|
||||
<span>勝手に住みついてる陰キャ幽霊のカラダを好き勝手する話1・2 幽霊だからいくら中出ししたって妊娠しない! それなら毎日、生ハメ・中出しヤリまくり! いいことしかないグラマラス幽霊さんとの同居生活! さつき芽衣</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<script language="JavaScript">
|
||||
(function ($) {
|
||||
$('img.img').each(function () {
|
||||
var image = new Image();
|
||||
image.src = this.src;
|
||||
if (image.complete) {
|
||||
cutImgz(this);
|
||||
} else {
|
||||
this.onload = function () {
|
||||
cutImgz(this);
|
||||
}
|
||||
}
|
||||
});
|
||||
})(jQuery);
|
||||
|
||||
function cutImgz(obj) {
|
||||
var image = new Image();
|
||||
image.src = obj.src;
|
||||
$this = $(obj);
|
||||
var w = image.width;
|
||||
var h = image.height;
|
||||
var p = w / h;
|
||||
if (p > 1.38 && p < 1.40) {
|
||||
$this.addClass("m1000giri");
|
||||
}
|
||||
if (p > 0.99 && p < 1.01) {
|
||||
$this.addClass("mpacopacomama");
|
||||
}
|
||||
if (p > 1.11 && p < 1.13) {
|
||||
$this.addClass("mcaribbeancom");
|
||||
}
|
||||
if (p > 1.77 && p < 1.78) {
|
||||
$this.addClass("mcaribbeancom2");
|
||||
}
|
||||
if (p > 0.59 && p < 0.61) {
|
||||
$this.addClass("m1pondo");
|
||||
}
|
||||
if (p > 0.65 && p < 0.67) {
|
||||
$this.addClass("mtokyohot");
|
||||
}
|
||||
if (p > 1.78 && p < 1.79) {
|
||||
$this.addClass("mheyzo");
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<h4>論壇熱帖</h4>
|
||||
<div id="related-waterfall" class="mb20">
|
||||
<a title="极品骚浪人妻张燕不雅视频被曝超美孕妇骚劲" class="movie-box"
|
||||
href="https://www.javbus.com/forum/forum.php?mod=viewthread&tid=176676"
|
||||
style="display:inline-block; margin:5px;">
|
||||
<div class="photo-frame bforum">
|
||||
<img class="mforum" src="https://www.javbus.com/forum/data/attachment/forum/202609/XFHWAI9.jpeg">
|
||||
</div>
|
||||
<div class="photo-info" style="height:36px; overflow:hidden; text-align:center;">
|
||||
<span>极品骚浪人妻张燕不雅视频被曝超美孕妇骚劲</span>
|
||||
</div>
|
||||
</a>
|
||||
<a title="好东西不分享给大家我的良心会痛 四" class="movie-box"
|
||||
href="https://www.javbus.com/forum/forum.php?mod=viewthread&tid=176691"
|
||||
style="display:inline-block; margin:5px;">
|
||||
<div class="photo-frame bforum">
|
||||
<img class="mforum" src="https://www.javbus.com/forum/data/attachment/forum/202609/NuKOXOl.jpeg">
|
||||
</div>
|
||||
<div class="photo-info" style="height:36px; overflow:hidden; text-align:center;">
|
||||
<span>好东西不分享给大家我的良心会痛 四</span>
|
||||
</div>
|
||||
</a>
|
||||
<a title="求一欧美片,必须实用,曾经我的珍藏,丢失" class="movie-box"
|
||||
href="https://www.javbus.com/forum/forum.php?mod=viewthread&tid=176678"
|
||||
style="display:inline-block; margin:5px;">
|
||||
<div class="photo-frame bforum">
|
||||
<img class="mforum" src="https://www.javbus.com/forum/data/attachment/forum/202609/MI4O4K8.jpg">
|
||||
</div>
|
||||
<div class="photo-info" style="height:36px; overflow:hidden; text-align:center;">
|
||||
<span>求一欧美片,必须实用,曾经我的珍藏,丢失</span>
|
||||
</div>
|
||||
</a>
|
||||
<a title="看到一张图想知道名字" class="movie-box"
|
||||
href="https://www.javbus.com/forum/forum.php?mod=viewthread&tid=176686"
|
||||
style="display:inline-block; margin:5px;">
|
||||
<div class="photo-frame bforum">
|
||||
<img class="mforum" src="https://www.javbus.com/forum/data/attachment/forum/202609/wvxEc6L.png">
|
||||
</div>
|
||||
<div class="photo-info" style="height:36px; overflow:hidden; text-align:center;">
|
||||
<span>看到一张图想知道名字</span>
|
||||
</div>
|
||||
</a>
|
||||
<a title="广佛中秋国庆双节出击出击第二弹 长腿御姐" class="movie-box"
|
||||
href="https://www.javbus.com/forum/forum.php?mod=viewthread&tid=176692"
|
||||
style="display:inline-block; margin:5px;">
|
||||
<div class="photo-frame bforum">
|
||||
<img class="mforum" src="https://www.javbus.com/forum/data/attachment/forum/202609/AX1wxZU.jpeg">
|
||||
</div>
|
||||
<div class="photo-info" style="height:36px; overflow:hidden; text-align:center;">
|
||||
<span>广佛中秋国庆双节出击出击第二弹 长腿御姐</span>
|
||||
</div>
|
||||
</a>
|
||||
<a title="求这完整的套图" class="movie-box"
|
||||
href="https://www.javbus.com/forum/forum.php?mod=viewthread&tid=176647"
|
||||
style="display:inline-block; margin:5px;">
|
||||
<div class="photo-frame bforum">
|
||||
<img class="mforum" src="https://www.javbus.com/forum/data/attachment/forum/202609/eblYOrO.jpeg">
|
||||
</div>
|
||||
<div class="photo-info" style="height:36px; overflow:hidden; text-align:center;">
|
||||
<span>求这完整的套图</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function ($) {
|
||||
$('.bigImage').magnificPopup({
|
||||
type: 'image',
|
||||
closeOnContentClick: true,
|
||||
closeBtnInside: false,
|
||||
fixedContentPos: true,
|
||||
mainClass: 'mfp-no-margins mfp-with-zoom',
|
||||
image: {
|
||||
verticalFit: true,
|
||||
titleSrc: function (item) {
|
||||
return "NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒";
|
||||
}
|
||||
},
|
||||
zoom: {
|
||||
enabled: true,
|
||||
duration: 300
|
||||
}
|
||||
});
|
||||
|
||||
$('#sample-waterfall').magnificPopup({
|
||||
delegate: 'a',
|
||||
type: 'image',
|
||||
closeOnContentClick: false,
|
||||
closeBtnInside: false,
|
||||
mainClass: 'mfp-with-zoom mfp-img-mobile',
|
||||
image: {
|
||||
verticalFit: true,
|
||||
titleSrc: function (item) {
|
||||
return "NIMA-086 実写版!ムラムラしたので通勤中にお持ち帰りされてみた 彩月七緒";
|
||||
}
|
||||
},
|
||||
gallery: {
|
||||
enabled: true
|
||||
},
|
||||
zoom: {
|
||||
enabled: true,
|
||||
duration: 300,
|
||||
opener: function (element) {
|
||||
return element.find('img');
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
})(jQuery);
|
||||
|
||||
$("#gr_btn").click(function () {
|
||||
var t = "";
|
||||
$("input[name='gr_sel']:checkbox").each(function () {
|
||||
$(this).is(":checked") && (t += $(this).val() + "-")
|
||||
}), "" != t && (t = t.substring(0, t.length - 1), window.location.href = "genre/" + t)
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="ad-box">
|
||||
<div class="ad-item">
|
||||
<div class="ad-juicy">
|
||||
<script type="text/javascript" data-cfasync="false" async
|
||||
src="https://poweredby.jads.co/js/jads.js"></script>
|
||||
<ins id="1024551" data-width="728" data-height="90"></ins>
|
||||
<script type="text/javascript" data-cfasync="false"
|
||||
async>(adsbyjuicy = window.adsbyjuicy || []).push({"adzone": 1024551});</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ad-item"><a href="https://hgdj.rezluatfbfvgwjhzfhrkovblo.com/chan/ak0072/acXm7" target="_blank"
|
||||
rel="nofollow"><img src="/ads/hjll_728x90_39.gif" width="728" height="90"></a></div>
|
||||
<div class="ad-item"><a href="https://xn--fwza.168good.cc/#/?ai=157284" target="_blank" rel="nofollow"><img
|
||||
src="/ads/51fl_728x90_2.jpg" width="728" height="90"></a></div>
|
||||
<div class="ad-item"><a href="https://91p.khgnhlzvcisaddwfehlvtnhel.com/chan/GS4670/aBhGW" target="_blank"
|
||||
rel="nofollow"><img src="/ads/hjll_728x90_18.gif" width="728" height="90"></a></div>
|
||||
</div>
|
||||
|
||||
|
||||
<script src='https://www.javbus.com/js/gallery.js?v=2.9'></script>
|
||||
<footer class="footer hidden-xs">
|
||||
<div class="container-fluid">
|
||||
<p><a href="https://www.javbus.com/doc/terms">Terms</a> / <a
|
||||
href="https://www.javbus.com/doc/privacy">Privacy</a> / <a
|
||||
href="https://www.javbus.com/doc/usc">2257</a> / <a href="http://www.rtalabel.org/" target="_blank"
|
||||
rel="external nofollow">RTA</a> / <a
|
||||
href="javascript:bootstr(1);" r>廣告投放</a> / <a href="javascript:bootstr(2);">聯絡我們</a><br/><a
|
||||
href="#formModal" id="adscontact" data-toggle="modal"></a>
|
||||
Copyright © 2013 JavBus. All Rights Reserved. All other trademarks and copyrights are the property of their
|
||||
respective holders. The reviews and comments expressed at or through this website are the opinions of the
|
||||
individual author and do not reflect the opinions or views of JavBus. JavBus is not responsible for the
|
||||
accuracy of any of the information supplied here.</p>
|
||||
</div>
|
||||
</footer>
|
||||
<div class="visible-xs-block footer-bar-placeholder"></div>
|
||||
|
||||
<script language=javascript>
|
||||
function bootstr(type) {
|
||||
ads = "廣告投放";
|
||||
contact = "聯絡我們";
|
||||
translate = "翻譯";
|
||||
$("#adstype").val(type);
|
||||
if (type == 1) {
|
||||
$("#contactModalLab").html(ads);
|
||||
$("#qqskype").show();
|
||||
$("#transinfo").hide();
|
||||
$("#translanguage").hide();
|
||||
$("#mailcontent").show();
|
||||
} else if (type == 2) {
|
||||
$("#contactModalLab").html(contact);
|
||||
$("#qqskype").show();
|
||||
$("#transinfo").hide();
|
||||
$("#translanguage").hide();
|
||||
$("#mailcontent").show();
|
||||
} else if (type == 3) {
|
||||
$("#contactModalLab").html(translate);
|
||||
$("#qqskype").hide();
|
||||
$("#transinfo").show();
|
||||
$("#translanguage").show();
|
||||
$("#mailcontent").hide();
|
||||
}
|
||||
$("#adscontact").trigger("click");
|
||||
getverifycode();
|
||||
};
|
||||
|
||||
function getverifycode() {
|
||||
$('#verify').attr("src", "/post/verify?" + Math.random() * 10000);
|
||||
};
|
||||
|
||||
function IsMail(mail) {
|
||||
var remail = /^([a-zA-Z0-9_-])+(\.)?([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
|
||||
return (remail.test(mail));
|
||||
};
|
||||
|
||||
function checkform() {
|
||||
var post = true;
|
||||
if ($("#verifycode").val().length != 5) {
|
||||
alert("驗證碼輸入錯誤!")
|
||||
$("#verifycode").focus();
|
||||
post = false;
|
||||
}
|
||||
if ($("#contact").val().length > 255) {
|
||||
alert("聯繫方式字數過多!")
|
||||
$("#contact").focus();
|
||||
post = false;
|
||||
}
|
||||
|
||||
if (!IsMail($("#mail").val())) {
|
||||
alert("請輸入正確的電郵地址!")
|
||||
$("#mail").focus();
|
||||
post = false;
|
||||
}
|
||||
|
||||
if ($("#intention").val().length > 25500) {
|
||||
alert("投放意向字數過多!")
|
||||
$("#intention").focus();
|
||||
post = false;
|
||||
}
|
||||
|
||||
if ($("#trans").val().length > 255) {
|
||||
alert("Too many words in your language textbox!")
|
||||
$("#intention").focus();
|
||||
post = false;
|
||||
}
|
||||
if (post == true) {
|
||||
$("#modalclose").trigger("click");
|
||||
$("#postform").attr("action", "/post/contact");
|
||||
$("#postform").submit();
|
||||
}
|
||||
return post;
|
||||
};
|
||||
</script>
|
||||
|
||||
<script>
|
||||
$("#showmag,#cellshowmag,#resultshowmag").click(function () {
|
||||
$.cookie("existmag", "mag", {expires: 365, path: '/'});
|
||||
location.reload()
|
||||
});
|
||||
|
||||
$("#showall,#cellshowall,#resultshowall").click(function () {
|
||||
$.cookie("existmag", "all", {expires: 365, path: '/'});
|
||||
location.reload()
|
||||
});
|
||||
$("#showonline").click(function () {
|
||||
$.cookie("existmag", "online", {expires: 365, path: '/'});
|
||||
location.reload()
|
||||
});
|
||||
$(".info .mypointer").click(function () {
|
||||
var obj = $(this);
|
||||
var code = obj.attr('value');
|
||||
var token = $("#token").val();
|
||||
var e = "../ajax/addfavorite.php?code=" + encodeURIComponent(code) + "&token=" + encodeURIComponent(token) + "&floor=" + Math.floor(Math.random() * 1e3 + 1);
|
||||
$.ajax({
|
||||
url: e,
|
||||
type: "POST",
|
||||
//dataType: "json",
|
||||
cache: false,
|
||||
success: function (json) {
|
||||
//obj.html(json);
|
||||
ajaxobj = eval("(" + json + ")");
|
||||
if (ajaxobj.act == 'err') {
|
||||
alert('收藏次數達上限,請稍候再試');
|
||||
} else {
|
||||
obj.html(ajaxobj.act);
|
||||
obj.attr('value', ajaxobj.code);
|
||||
obj.attr('title', ajaxobj.title);
|
||||
$("#token").val(ajaxobj.token);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(".glyphicon-heart-empty").hover(function () {
|
||||
$(this).removeClass('glyphicon-heart-empty');
|
||||
$(this).addClass('glyphicon-heart');
|
||||
}, function () {
|
||||
$(this).removeClass('glyphicon-heart');
|
||||
$(this).addClass('glyphicon-heart-empty');
|
||||
});
|
||||
$(".glyphicon-heart").hover(function () {
|
||||
$(this).removeClass('glyphicon-heart');
|
||||
$(this).addClass('glyphicon-heart-empty');
|
||||
}, function () {
|
||||
$(this).removeClass('glyphicon-heart-empty');
|
||||
$(this).addClass('glyphicon-heart');
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- Modal Forms -->
|
||||
<div id="formModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="formModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button id="modalclose" type="button" class="close" data-dismiss="modal" aria-label="Close"><span
|
||||
aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title" id="contactModalLab">聯絡我們</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" name="postform" method="post" id="postform" enctype="multipart/form-data">
|
||||
<fieldset>
|
||||
<div class="form-group" id="qqskype">
|
||||
<label class="col-sm-4 control-label" for="contact">Telegram / 電報</label>
|
||||
<div class="col-sm-6">
|
||||
<input id="contact" name="contact" type="text" placeholder="" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label" for="mail">Email</label>
|
||||
<div class="col-sm-6">
|
||||
<input id="mail" name="mail" type="text" placeholder="" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" id="translanguage">
|
||||
<label class="col-sm-4 control-label" for="trans">Your Language</label>
|
||||
<div class="col-sm-6">
|
||||
<input id="trans" name="trans" type="text" placeholder="" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" id="mailcontent">
|
||||
<label class="col-sm-4 control-label" for="intention" id="inten-trans">內容</label>
|
||||
<div class="col-sm-6">
|
||||
<textarea id="intention" name="intention" rows="9" class="form-control"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label" for="verify">驗證碼</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" id="verifycode" name="verifycode" style="width:50px"/>
|
||||
<img id="verify" src="" style="cursor: pointer; vertical-align:middle;"
|
||||
onclick="getverifycode()"/>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" id="adstype" name="adstype" value="1"/>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" button class="btn btn-primary" onclick="checkform()">送出</button>
|
||||
<button type="button" button class="btn btn-default" data-dismiss="modal">關閉</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- ////////////////////////////////////////////////// -->
|
||||
<div class="overlay overlay-contentscale">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 text-center ptb20">
|
||||
<div class="input-group col-xs-offset-2 col-xs-8">
|
||||
<input id="search-input-mobile" type="text" class="form-control" placeholder="搜尋 識別碼, 影片, 演員">
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-default" type="submit"
|
||||
onClick="searchs('search-input-mobile')">搜尋</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6 text-center"><a href="https://www.javbus.com/">有碼</a></div>
|
||||
<div class="col-xs-6 text-center"><a href="https://www.javbus.com/uncensored">無碼</a></div>
|
||||
<div class="col-xs-6 text-center"><a href="https://www.javbus.com/genre">有碼類別</a></div>
|
||||
<div class="col-xs-6 text-center"><a href="https://www.javbus.com/uncensored/genre">無碼類別</a></div>
|
||||
<div class="col-xs-6 text-center"><a href="https://www.javbus.com/actresses">有碼女優</a></div>
|
||||
<div class="col-xs-6 text-center"><a href="https://www.javbus.com/uncensored/actresses">無碼女優</a></div>
|
||||
<div class="col-xs-6 text-center"><a href="https://www.javbus.hair/">歐美</a></div>
|
||||
<div class="col-xs-6 text-center"><a href="https://www.javbus.com/forum/">論壇</a></div>
|
||||
|
||||
<div class="col-xs-12 text-center overlay-close">
|
||||
<i class="glyphicon glyphicon-remove"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
+1248
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jhs-enhance",
|
||||
"version": "3.3.15",
|
||||
"version": "3.3.16",
|
||||
"description": "Jav-鉴黄师 油猴脚本 - 工程化版本",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
|
||||
+12
-2
File diff suppressed because one or more lines are too long
@@ -80,7 +80,105 @@ class WangPan115TaskPlugin extends BasePlugin {
|
||||
$headerRow.append($("<td>").text("操作"));
|
||||
}
|
||||
}
|
||||
|
||||
static sanitizeDirName(str) {
|
||||
if (!str) return "";
|
||||
return str.replace(/[\\/:*?"<>|]/g, "").replace(/\s+/g, " ").trim();
|
||||
}
|
||||
|
||||
static parseOfflineDirTemplate(str, params) {
|
||||
if (!str || !params) return str;
|
||||
return str.replace(/\$\{(\w+)\}/g, (match, key) => {
|
||||
if (!params.hasOwnProperty(key)) return match;
|
||||
const value = params[key] || "";
|
||||
return WangPan115TaskPlugin.sanitizeDirName(String(value));
|
||||
});
|
||||
}
|
||||
|
||||
static async ensureDir(dirName, pid = 0) {
|
||||
const result = await gmHttp.postFileFormData("https://webapi.115.com/files/add", {
|
||||
pid: pid,
|
||||
cname: dirName
|
||||
});
|
||||
if (result && result.file_id) return result.file_id;
|
||||
const searchRes = await searchFiles(dirName, 0, 1, {fc: 1});
|
||||
if (searchRes && searchRes.data && searchRes.data.length > 0) {
|
||||
const match = searchRes.data.find(d => d.pid === pid || d.pid === String(pid));
|
||||
if (match) return match.fid || match.file_id;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
static async registerDirAsDownPath(fileId, dirName) {
|
||||
await gmHttp.postFileFormData("https://webapi.115.com/offine/downpath", {
|
||||
file_id: fileId
|
||||
});
|
||||
const list = await getDownPathList();
|
||||
const created = list ? list.find(d => d.file_id === fileId || String(d.file_id) === String(fileId)) : null;
|
||||
return created ? created.id : null;
|
||||
}
|
||||
|
||||
static async createMultiLevelDownPath(templatePath) {
|
||||
const segments = templatePath.split("/").filter(s => s.trim());
|
||||
if (segments.length === 0) return null;
|
||||
let pid = 0;
|
||||
let fileId = null;
|
||||
for (const seg of segments) {
|
||||
fileId = await WangPan115TaskPlugin.ensureDir(seg.trim(), pid);
|
||||
if (!fileId) {
|
||||
console.error("[115离线] 创建目录失败:", seg);
|
||||
return null;
|
||||
}
|
||||
pid = fileId;
|
||||
}
|
||||
const lastDirName = segments[segments.length - 1].trim();
|
||||
const downPathId = await WangPan115TaskPlugin.registerDirAsDownPath(fileId, lastDirName);
|
||||
console.log("[115离线] 多级目录创建完成:", templatePath, "→ downPathId=" + downPathId);
|
||||
return downPathId;
|
||||
}
|
||||
|
||||
getPageInfoForOffline() {
|
||||
const baseInfo = this.getPageInfo();
|
||||
const carNum = baseInfo.carNum || "";
|
||||
let title = "", maker = "", actor = "";
|
||||
if (isJavBus) {
|
||||
title = $("h3").first().text().trim();
|
||||
maker = $('span.header:contains("製作商:")').parent("p").text().replace("製作商:", "").trim() ||
|
||||
$('span.header:contains("制作商:")').parent("p").text().replace("制作商:", "").trim();
|
||||
const actorEl = $('span.genre a[href*="/star/"]').first();
|
||||
actor = actorEl.length ? actorEl.text().trim() : "";
|
||||
} else {
|
||||
title = $(".current-title").first().text().trim() || $("h2.title.is-4 .current-title").first().text().trim() || $(".movie-title").first().text().trim();
|
||||
maker = $('strong:contains("片商:")').parent().find(".value").text().trim() ||
|
||||
$('strong:contains("片商:")').parent().find(".value").text().trim();
|
||||
actor = $('.actor-female').first().text().trim() || $('strong:contains("演員:"), strong:contains("演员:")').parent().find('.value a').first().text().trim() || "";
|
||||
}
|
||||
const now = new Date();
|
||||
if (carNum && title) {
|
||||
const upperTitle = title.toUpperCase();
|
||||
const upperCode = carNum.toUpperCase();
|
||||
if (upperTitle.startsWith(upperCode)) {
|
||||
title = title.substring(carNum.length).replace(/^[\s\-_]+/, "").trim();
|
||||
}
|
||||
}
|
||||
console.log("[115离线] 页面信息提取:", {code: carNum, title, maker, actor});
|
||||
return {
|
||||
code: carNum,
|
||||
title: title,
|
||||
maker: maker,
|
||||
actor: actor,
|
||||
date: utils.formatDate(now).split(" ")[0]
|
||||
};
|
||||
}
|
||||
async getSavePathId(nyName) {
|
||||
const enableCustom = await storageManager.getSetting("enable115OfflineFormat", NO);
|
||||
if (enableCustom === YES) {
|
||||
const template = await storageManager.getSetting("offlineFolderFormat", "");
|
||||
if (template && template.includes("${")) {
|
||||
const pageInfo = this.getPageInfoForOffline();
|
||||
return WangPan115TaskPlugin.parseOfflineDirTemplate(template, pageInfo);
|
||||
}
|
||||
}
|
||||
let savePath115 = await storageManager.getSetting("savePath115", "云下载");
|
||||
nyName && (savePath115 = savePath115.replaceAll("{ny}", nyName));
|
||||
savePath115 = savePath115.replaceAll("{date}", utils.formatDate(new Date));
|
||||
@@ -101,7 +199,35 @@ class WangPan115TaskPlugin extends BasePlugin {
|
||||
});
|
||||
return;
|
||||
}
|
||||
const sign = singInfo.sign, time = singInfo.time, userId = this.getUserId(), result = await (async (magnet, wp_path_id = "", uid, sign, time) => {
|
||||
const sign = singInfo.sign, time = singInfo.time, userId = this.getUserId();
|
||||
|
||||
let wp_path_id = savePath || "";
|
||||
if (!wp_path_id) {
|
||||
const fullPath = await this.getSavePathId();
|
||||
console.log("[115离线] 目录模板解析结果:", fullPath);
|
||||
if (fullPath) {
|
||||
if (fullPath.includes("/")) {
|
||||
console.log("[115离线] 检测到多级目录,逐级创建:", fullPath);
|
||||
const newId = await WangPan115TaskPlugin.createMultiLevelDownPath(fullPath);
|
||||
if (newId) wp_path_id = newId;
|
||||
} else {
|
||||
const downPathList = await getDownPathList();
|
||||
if (downPathList && downPathList.length > 0) {
|
||||
const matched = downPathList.find((d => d.name === fullPath));
|
||||
if (matched) {
|
||||
wp_path_id = matched.id;
|
||||
console.log("[115离线] 目录匹配结果: 匹配到 \"" + matched.name + "\" -> id=" + matched.id);
|
||||
} else {
|
||||
console.log("[115离线] 目录匹配结果: 未匹配到 \"" + fullPath + "\",自动创建并注册");
|
||||
const newId = await WangPan115TaskPlugin.createMultiLevelDownPath(fullPath);
|
||||
if (newId) wp_path_id = newId;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const result = await (async (magnet, wp_path_id = "", uid, sign, time) => {
|
||||
const data = {
|
||||
url: encodeURIComponent(magnet),
|
||||
wp_path_id: wp_path_id,
|
||||
@@ -110,7 +236,7 @@ class WangPan115TaskPlugin extends BasePlugin {
|
||||
time: time
|
||||
};
|
||||
return await gmHttp.postForm("https://115.com/web/lixian/?ct=lixian&ac=add_task_url", data);
|
||||
})(magnetLink, savePath || "", userId, sign, time);
|
||||
})(magnetLink, wp_path_id, userId, sign, time);
|
||||
console.log("离线下载返回值:", result);
|
||||
let infoHash = result.info_hash, fileId = await this.getFileId(userId, sign, time, infoHash), openUrl = "https://115.com/?tab=offline&mode=wangpan";
|
||||
fileId && (openUrl = `https://115.com/?cid=${fileId}&offset=0&mode=wangpan`);
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ export default defineConfig({
|
||||
userscript: {
|
||||
name: 'JHS-enhance',
|
||||
namespace: 'JHS-enhance',
|
||||
version: '3.3.15',
|
||||
version: '3.3.16',
|
||||
author: 'xiebro,fireinrain',
|
||||
description: 'Jav-鉴黄师 增强脚本。列表页:作品状态标签、一键筛选、新作品检测、演员黑名单过滤;详情页:磁力链接高亮、DMM 多画质预览视频、标题翻译、整合字幕搜索(迅雷+SubTitleCat)并支持 115 直传、多源预览图(javfree/projectjav/javstore)含来源切换;数据:115 网盘目录匹配与多目录选择、云盘备份/恢复、跨 Tab 同步;其他:自动翻页、分类折叠、Top250、以图识图、热门榜单、评论查看、相关清单。支持 JavDB / JavBus / JavSee / SeeJav / FC2 / JavTrailers',
|
||||
license: 'MIT',
|
||||
|
||||
Reference in New Issue
Block a user