// ==UserScript==
// @name 10图漫
// @namespace http://tampermonkey2.net/
// @version 2.0.7
// @description 任意网页提供部分漫画网站搜索;漫画分章节下载(可直接下载/压缩下载/拼接下载),可用于动漫之家、极速漫画、腾讯漫画、哔哩哔哩等35多个网站;对个别漫画网站修改阅读样式;可按需编写定义规则JSON导入以支持其他漫画网站
// @author journey3510
// @run-at document-end
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_deleteValue
// @grant GM_setClipboard
// @grant GM_info
// @grant GM_xmlhttpRequest
// @grant GM_addStyle
// @grant GM_getResourceText
// @grant GM_download
// @grant GM_registerMenuCommand
// @grant unsafeWindow
// @resource vantcss https://unpkg.com/vant@2.12/lib/index.css
// @require https://unpkg.com/vue@2.6.12/dist/vue.min.js
// @require https://unpkg.com/vant@2.12/lib/vant.min.js
// @require https://unpkg.com/jszip@3.7.1/dist/jszip.min.js
//
// @license GPLv3
// @include *
// @connect *
// ==/UserScript==
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ 205:
/***/ ((module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(645);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".van-cell__title {\n text-align: left;\n}\n.van-cell-group__title--inset {\n text-align: left;\n}\n.van-button--default {\n color: #000000;\n background-color: #66ccff96 !important;\n border: 1px solid #ffffff6e;\n}\n.van-button--disabled {\n opacity: 1 !important;\n}\n.van-tag--default {\n background-color: #66ccff;\n}\n.van-checkbox__icon--checked .van-icon {\n color: #ee0000 !important;\n background-color: #66ccff55 !important;\n border-color: #66ccff88 !important;\n}\n.van-popover--light {\n font-size: 14px !important;\n color: #8d8de7 !important;\n}\n.van-popover--light .van-popover__arrow {\n color: #d9d9d9 !important;\n}\n.van-popover__content {\n border: 1px solid !important;\n padding: 2px 9px !important;\n margin-top: 3px !important;\n}\n.van-cell__title {\n text-align: left;\n}\n.van-cell-group__title--inset {\n text-align: left;\n}\n.van-button--default {\n color: #000000;\n background-color: #66ccff96 !important;\n border: 1px solid #ffffff6e;\n}\n.van-button--disabled {\n opacity: 1 !important;\n}\n.van-tag--default {\n background-color: #66ccff;\n}\n.van-checkbox__icon--checked .van-icon {\n color: #ee0000 !important;\n background-color: #66ccff55 !important;\n border-color: #66ccff88 !important;\n}\n.van-popover--light {\n font-size: 14px !important;\n color: #8d8de7 !important;\n}\n.van-popover--light .van-popover__arrow {\n color: #d9d9d9 !important;\n}\n.van-popover__content {\n border: 1px solid !important;\n padding: 2px 9px !important;\n margin-top: 3px !important;\n}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
/***/ }),
/***/ 452:
/***/ ((module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(645);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".yi-ling-app *{font-size:14px}.yi-ling-app .app-container{background-color:#f8f8f8;padding:10px}.yi-ling-app ::-webkit-scrollbar{width:4px;height:5px;border-radius:15px;-webkit-border-radius:15px}.yi-ling-app ::-webkit-scrollbar-track-piece{border-radius:15px;-webkit-border-radius:15px}.yi-ling-app ::-webkit-scrollbar-thumb:vertical{height:5px;background-color:rgba(102,204,255,0.533333);border-radius:15px;-webkit-border-radius:15px}.yi-ling-app ::-webkit-scrollbar-thumb:horizontal{width:4px;background-color:rgba(144,147,153,0.5);border-radius:15px;-webkit-border-radius:15px}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
/***/ }),
/***/ 658:
/***/ ((module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(645);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".yi-ling-app[data-v-5ef48958] {\n position: fixed;\n z-index: 100000;\n}\n.yi-ling-app #app-right[data-v-5ef48958] {\n height: 800px;\n width: 420px;\n position: fixed;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n transform-origin: right top;\n z-index: 999999 !important;\n}\n.card[data-v-5ef48958] {\n background-color: #f8f8f8;\n border: solid 1px #66ccffee;\n border-radius: 25px ;\n transition: all 0.5s;\n box-shadow: 2px 3px 3px 2px #66ccff55;\n}\n.card #border-top-set[data-v-5ef48958] {\n border-top-left-radius: 25px;\n border-top-right-radius: 25px;\n overflow: hidden;\n}\n.card #border-bottom-set[data-v-5ef48958] {\n border-bottom-left-radius: 25px;\n border-bottom-right-radius: 25px;\n overflow: hidden;\n}\n.card .swipeitem[data-v-5ef48958] {\n height: 697px;\n padding-bottom: 5px;\n}\n.card__btn[data-v-5ef48958] {\n transition: all 0.5s;\n border-radius: 30px 0 0 30px;\n width: 30px;\n height: 60px;\n background-color: #66ccff96;\n cursor: pointer;\n position: absolute;\n right: 100%;\n top: 50%;\n text-align: center;\n}\n.card__btn svg[data-v-5ef48958] {\n height: 20px;\n width: 20px;\n position: absolute;\n right: 5px;\n top: 20px;\n transition: all 0.5s;\n color: #ee000088;\n}\n.card--hide[data-v-5ef48958] {\n transform: translate(100%, -50%) !important;\n}\n.card--hide .card__btn svg[data-v-5ef48958] {\n transform: rotate(180deg);\n}\n.test[data-v-5ef48958] {\n position: absolute;\n position: relative;\n cursor: default;\n height: 600px;\n}\n.van-cell__title[data-v-5ef48958] {\n text-align: left;\n}\n.van-cell-group__title--inset[data-v-5ef48958] {\n text-align: left;\n}\n.van-button--default[data-v-5ef48958] {\n color: #000000;\n background-color: #66ccff96 !important;\n border: 1px solid #ffffff6e;\n}\n.van-button--disabled[data-v-5ef48958] {\n opacity: 1 !important;\n}\n.van-tag--default[data-v-5ef48958] {\n background-color: #66ccff;\n}\n.van-checkbox__icon--checked .van-icon[data-v-5ef48958] {\n color: #ee0000 !important;\n background-color: #66ccff55 !important;\n border-color: #66ccff88 !important;\n}\n.van-popover--light[data-v-5ef48958] {\n font-size: 14px !important;\n color: #8d8de7 !important;\n}\n.van-popover--light .van-popover__arrow[data-v-5ef48958] {\n color: #d9d9d9 !important;\n}\n.van-popover__content[data-v-5ef48958] {\n border: 1px solid !important;\n padding: 2px 9px !important;\n margin-top: 3px !important;\n}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
/***/ }),
/***/ 159:
/***/ ((module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(645);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".import-page[data-v-3e5333e4] {\n display: flex;\n flex-direction: column;\n margin-top: 5px;\n height: 620px;\n max-height: 620px;\n justify-content: space-between;\n}\n.import-page #codeTextarea[data-v-3e5333e4] {\n border-color: #66ccff88;\n border-radius: 8px;\n padding: 2px;\n}\n.van-cell__title[data-v-3e5333e4] {\n text-align: left;\n}\n.van-cell-group__title--inset[data-v-3e5333e4] {\n text-align: left;\n}\n.van-button--default[data-v-3e5333e4] {\n color: #000000;\n background-color: #66ccff96 !important;\n border: 1px solid #ffffff6e;\n}\n.van-button--disabled[data-v-3e5333e4] {\n opacity: 1 !important;\n}\n.van-tag--default[data-v-3e5333e4] {\n background-color: #66ccff;\n}\n.van-checkbox__icon--checked .van-icon[data-v-3e5333e4] {\n color: #ee0000 !important;\n background-color: #66ccff55 !important;\n border-color: #66ccff88 !important;\n}\n.van-popover--light[data-v-3e5333e4] {\n font-size: 14px !important;\n color: #8d8de7 !important;\n}\n.van-popover--light .van-popover__arrow[data-v-3e5333e4] {\n color: #d9d9d9 !important;\n}\n.van-popover__content[data-v-3e5333e4] {\n border: 1px solid !important;\n padding: 2px 9px !important;\n margin-top: 3px !important;\n}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
/***/ }),
/***/ 627:
/***/ ((module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(645);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, "#search-page[data-v-4ad41bb8] {\n width: 1100px;\n height: 600px;\n max-height: 600px;\n overflow: hidden;\n position: fixed;\n top: 50%;\n left: 40%;\n transform: translate(-50%, -50%);\n border: 1px solid #ee000066;\n border-radius: 15px;\n box-shadow: 2px 4px 4px 2px #ee000022;\n background-color: #fff;\n z-index: 9999999;\n}\n#search-page #search-page-top[data-v-4ad41bb8] {\n display: flex;\n justify-content: space-between;\n margin-bottom: 5px;\n border-bottom: 1px solid #66ccff88;\n}\n#search-page #search-page-top .search-input-btn[data-v-4ad41bb8] {\n margin-left: 400px;\n margin-top: 10px;\n width: 320px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n#search-page #search-page-top .search-input-btn input[data-v-4ad41bb8] {\n border: 1px solid #66ccff88;\n height: 20px;\n width: 200px;\n border-radius: 5px;\n background: #fff;\n font-size: 15px;\n line-height: 20px;\n padding-left: 15px;\n}\n#search-page #search-page-top .search-input-btn[data-v-4ad41bb8] .van-button--small {\n height: 25px;\n}\n#search-page #search-page-top #close-search-btn[data-v-4ad41bb8] {\n color: #66ccff88;\n display: flex;\n margin-top: 2px;\n font-size: 40px;\n height: 40px;\n background-color: #fff;\n border-radius: 20px;\n margin-top: 5px;\n margin-right: 5px;\n}\n#search-page #search-page-top #close-search-btn[data-v-4ad41bb8]:hover {\n color: red;\n transform: rotate(180deg);\n transition: all 1s;\n}\n#search-page #search-page-bottom[data-v-4ad41bb8] {\n height: 530px;\n max-height: 530px;\n overflow-y: scroll;\n}\n#search-page #search-page-bottom .origin-image-list[data-v-4ad41bb8] {\n display: flex;\n width: 120px;\n flex-direction: row;\n display: inline-block;\n text-align: center;\n cursor: pointer;\n margin: 2px;\n padding: 1px;\n}\n#search-page #search-page-bottom .origin-image-list p[data-v-4ad41bb8] {\n overflow: hidden;\n white-space: nowrap;\n}\n#search-page #search-page-bottom .origin-image-list[data-v-4ad41bb8]:hover {\n border: 2px solid #66ccff88;\n}\n.van-cell__title[data-v-4ad41bb8] {\n text-align: left;\n}\n.van-cell-group__title--inset[data-v-4ad41bb8] {\n text-align: left;\n}\n.van-button--default[data-v-4ad41bb8] {\n color: #000000;\n background-color: #66ccff96 !important;\n border: 1px solid #ffffff6e;\n}\n.van-button--disabled[data-v-4ad41bb8] {\n opacity: 1 !important;\n}\n.van-tag--default[data-v-4ad41bb8] {\n background-color: #66ccff;\n}\n.van-checkbox__icon--checked .van-icon[data-v-4ad41bb8] {\n color: #ee0000 !important;\n background-color: #66ccff55 !important;\n border-color: #66ccff88 !important;\n}\n.van-popover--light[data-v-4ad41bb8] {\n font-size: 14px !important;\n color: #8d8de7 !important;\n}\n.van-popover--light .van-popover__arrow[data-v-4ad41bb8] {\n color: #d9d9d9 !important;\n}\n.van-popover__content[data-v-4ad41bb8] {\n border: 1px solid !important;\n padding: 2px 9px !important;\n margin-top: 3px !important;\n}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
/***/ }),
/***/ 961:
/***/ ((module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(645);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, "#downcontext[data-v-1e855a88] {\n margin: 15px 15px;\n max-height: 680px;\n border-radius: 15px;\n overflow: auto;\n}\n.comicnametag1[data-v-1e855a88] {\n margin-left: 10px ;\n height: 15px;\n margin-top: 4px;\n display: inline-block;\n max-width: 200px;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n background-color: #ee000088 !important;\n}\n#downlist[data-v-1e855a88] {\n margin: 10px 5px;\n padding: 5px 0px;\n border-radius: 15px;\n width: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n max-height: 500px;\n}\n#downlist .downitem[data-v-1e855a88] {\n display: flex;\n flex-direction: column;\n width: 98%;\n}\n#downlist .downitem .itemname[data-v-1e855a88] {\n display: flex;\n justify-content: space-between;\n margin: 2px 5px;\n}\n#downlist .downitem .itemname .comicnametag[data-v-1e855a88] {\n display: inline-block;\n width: 60px;\n max-width: 60px;\n text-align: center;\n height: 18px;\n line-height: 18px;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n cursor: pointer;\n}\n#downlist .downitem .itemname .chapterspan[data-v-1e855a88] {\n display: inline-block;\n margin-left: 10px;\n max-width: 200px;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n#downlist .downitem .itemname .hasError[data-v-1e855a88] {\n color: red;\n}\n.van-cell__title[data-v-1e855a88] {\n text-align: left;\n}\n.van-cell-group__title--inset[data-v-1e855a88] {\n text-align: left;\n}\n.van-button--default[data-v-1e855a88] {\n color: #000000;\n background-color: #66ccff96 !important;\n border: 1px solid #ffffff6e;\n}\n.van-button--disabled[data-v-1e855a88] {\n opacity: 1 !important;\n}\n.van-tag--default[data-v-1e855a88] {\n background-color: #66ccff;\n}\n.van-checkbox__icon--checked .van-icon[data-v-1e855a88] {\n color: #ee0000 !important;\n background-color: #66ccff55 !important;\n border-color: #66ccff88 !important;\n}\n.van-popover--light[data-v-1e855a88] {\n font-size: 14px !important;\n color: #8d8de7 !important;\n}\n.van-popover--light .van-popover__arrow[data-v-1e855a88] {\n color: #d9d9d9 !important;\n}\n.van-popover__content[data-v-1e855a88] {\n border: 1px solid !important;\n padding: 2px 9px !important;\n margin-top: 3px !important;\n}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
/***/ }),
/***/ 782:
/***/ ((module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(645);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".homeindex[data-v-7eb2bc79] {\n margin-top: 12px;\n overflow-y: auto;\n max-height: 675px;\n min-height: 600px;\n}\n.homeindex #selectId[data-v-7eb2bc79] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.homeindex #selectId[data-v-7eb2bc79] .van-collapse-item__wrapper {\n position: absolute;\n width: 100%;\n}\n.homeindex #selectId[data-v-7eb2bc79] .van-collapse-item__wrapper .van-collapse-item__content {\n background-color: #eeeeee !important;\n border-bottom-left-radius: 15px;\n border-bottom-right-radius: 15px;\n}\n.homeindex #selectId[data-v-7eb2bc79] .van-collapse-item__wrapper .van-collapse-item__content div:hover {\n color: red;\n}\n.homeindex #selectId #search-ico[data-v-7eb2bc79] {\n cursor: pointer;\n color: #ee000088;\n margin-right: 15px;\n}\n.van-cell__title[data-v-7eb2bc79] {\n text-align: left;\n}\n.van-cell-group__title--inset[data-v-7eb2bc79] {\n text-align: left;\n}\n.van-button--default[data-v-7eb2bc79] {\n color: #000000;\n background-color: #66ccff96 !important;\n border: 1px solid #ffffff6e;\n}\n.van-button--disabled[data-v-7eb2bc79] {\n opacity: 1 !important;\n}\n.van-tag--default[data-v-7eb2bc79] {\n background-color: #66ccff;\n}\n.van-checkbox__icon--checked .van-icon[data-v-7eb2bc79] {\n color: #ee0000 !important;\n background-color: #66ccff55 !important;\n border-color: #66ccff88 !important;\n}\n.van-popover--light[data-v-7eb2bc79] {\n font-size: 14px !important;\n color: #8d8de7 !important;\n}\n.van-popover--light .van-popover__arrow[data-v-7eb2bc79] {\n color: #d9d9d9 !important;\n}\n.van-popover__content[data-v-7eb2bc79] {\n border: 1px solid !important;\n padding: 2px 9px !important;\n margin-top: 3px !important;\n}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
/***/ }),
/***/ 55:
/***/ ((module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(645);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".setindex .swipeitem[data-v-234d1526] {\n display: flex;\n flex-direction: column;\n margin: 20px 18px 15px 18px;\n flex: 1;\n height: 680px;\n max-height: 680px;\n justify-content: space-between;\n}\n.setindex .swipeitem #setup-return[data-v-234d1526] {\n flex: 1;\n margin-bottom: 15px;\n cursor: pointer;\n font-size: 17px;\n}\n.setindex .swipeitem #setup-return[data-v-234d1526]:hover {\n color: #ee000088;\n}\n.setindex #setpart[data-v-234d1526] {\n border-radius: 15px;\n background-color: #ffffff;\n overflow: auto;\n width: 100%;\n}\n.setindex #setpart .van-cell-group__title[data-v-234d1526] {\n color: #78a5ff;\n font-size: 15px;\n}\n.setindex #setpart .van-cell[data-v-234d1526] {\n width: 100%;\n padding: 10px 1px;\n overflow: visible !important;\n}\n.setindex #setpart .van-cell .van-cell__value[data-v-234d1526] {\n overflow: visible !important;\n}\n.setindex #setpart .van-cell .cellleftvalue[data-v-234d1526] {\n flex: 1;\n}\n.setindex #setpart .van-cell .cellrightvalue[data-v-234d1526] {\n flex: 0.5 !important;\n}\n.setindex #setpart .van-cell .cellrightvalue .dropbtn[data-v-234d1526] {\n width: 90px;\n background-color: #aadafb;\n color: white;\n padding: 2px 5px;\n font-size: 16px;\n border: none;\n cursor: pointer;\n}\n.setindex #setpart .van-cell .cellrightvalue .dropbtn[data-v-234d1526]:hover,\n.setindex #setpart .van-cell .cellrightvalue .dropbtn[data-v-234d1526]:focus {\n background-color: #47b1f7;\n}\n.setindex #setpart .van-cell .cellrightvalue .dropdown[data-v-234d1526] {\n position: relative;\n}\n.setindex #setpart .van-cell .cellrightvalue .dropdown-content[data-v-234d1526] {\n position: absolute;\n right: 0;\n background-color: #fff;\n min-width: 90px;\n overflow: auto;\n box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);\n z-index: 1;\n}\n.setindex #setpart .van-cell .cellrightvalue .dropdown-content a[data-v-234d1526] {\n color: black;\n padding: 0px 2px;\n text-decoration: none;\n text-align: center;\n display: block;\n}\n.setindex #setpart .van-cell .cellrightvalue .dropdown a[data-v-234d1526]:hover {\n background-color: #ddd;\n}\n.setindex #setpart .van-cell .cellrightvalue .show[data-v-234d1526] {\n display: block;\n}\n.setindex #setpart .van-cell .rightbutton[data-v-234d1526] {\n flex-direction: row-reverse;\n}\n.setindex #setpart .van-cell .custom-title[data-v-234d1526] {\n text-align: left;\n}\n.setindex #setpart .van-cell .img-down-range-input[data-v-234d1526] {\n width: 40px;\n height: 18px;\n margin-right: 2px;\n border: 1px #66ccff solid;\n border-radius: 10px;\n text-align: center;\n background: #fff;\n}\n.setindex #setpart .van-cell #max-splicing-height-input[data-v-234d1526] {\n width: 80px;\n height: 18px;\n margin-right: 2px;\n border: 1px #66ccff solid;\n border-radius: 10px;\n text-align: center;\n background: #fff;\n}\n.setindex #setpart .van-cell #max-splicing-height-input[data-v-234d1526]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n}\n.setindex #setpart .van-cell #max-splicing-height-input[data-v-234d1526]::-webkit-outer-spin-button {\n -webkit-appearance: none;\n}\n.setindex #setpart .van-cell #hot-key-input[data-v-234d1526] {\n width: 35px;\n height: 18px;\n margin-right: 2px;\n border: 1px #66ccff solid;\n border-radius: 10px;\n text-align: center;\n background: #fff;\n}\n.setindex #setpart .van-cell .rightslider[data-v-234d1526] {\n margin: 10px 15px;\n width: 120px;\n}\n.setindex #setpart .van-cell .rightslider .custom-button[data-v-234d1526] {\n width: 20px;\n color: #fff;\n font-size: 14px;\n line-height: 15px;\n text-align: center;\n background-color: #ee0a24;\n border-radius: 100px;\n}\n.setindex #set-bottom[data-v-234d1526] {\n display: flex;\n justify-content: center;\n margin-top: 7px;\n margin-bottom: 5px;\n}\n.van-cell__title[data-v-234d1526] {\n text-align: left;\n}\n.van-cell-group__title--inset[data-v-234d1526] {\n text-align: left;\n}\n.van-button--default[data-v-234d1526] {\n color: #000000;\n background-color: #66ccff96 !important;\n border: 1px solid #ffffff6e;\n}\n.van-button--disabled[data-v-234d1526] {\n opacity: 1 !important;\n}\n.van-tag--default[data-v-234d1526] {\n background-color: #66ccff;\n}\n.van-checkbox__icon--checked .van-icon[data-v-234d1526] {\n color: #ee0000 !important;\n background-color: #66ccff55 !important;\n border-color: #66ccff88 !important;\n}\n.van-popover--light[data-v-234d1526] {\n font-size: 14px !important;\n color: #8d8de7 !important;\n}\n.van-popover--light .van-popover__arrow[data-v-234d1526] {\n color: #d9d9d9 !important;\n}\n.van-popover__content[data-v-234d1526] {\n border: 1px solid !important;\n padding: 2px 9px !important;\n margin-top: 3px !important;\n}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
/***/ }),
/***/ 737:
/***/ ((module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(645);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".comiclist[data-v-657d4b24] {\n margin-top: 10px;\n position: relative;\n height: 690px;\n font-size: 14px !important;\n}\n#overlayDom[data-v-657d4b24] {\n background-color: #eeeeeece;\n}\n#select-list[data-v-657d4b24] {\n margin: 0 15px;\n}\n#select-list #select-list-top[data-v-657d4b24] {\n display: flex;\n flex-direction: column;\n background-color: #fff;\n padding: 0 10px 0 10px;\n min-height: 30px;\n border-bottom: 1px solid #ccc5;\n border-radius: 10px;\n}\n#select-list #select-list-top #select-list-info[data-v-657d4b24] {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n flex: 1;\n min-height: 30px;\n}\n#select-list #select-list-top #select-list-info #select-list-info-left[data-v-657d4b24] {\n display: flex;\n width: 95px;\n justify-content: space-between;\n align-items: center;\n}\n#select-list #select-list-top #select-list-info #select-list-info-left span.span-circle[data-v-657d4b24] {\n width: 14px;\n height: 14px;\n display: flex;\n border-radius: 7px;\n cursor: pointer;\n}\n#select-list #select-list-top #select-list-info #select-show-edit[data-v-657d4b24] {\n margin: 10px;\n}\n#select-list #select-list-2[data-v-657d4b24] {\n margin-top: 5px;\n overflow: hidden;\n}\n#select-list #select-list-2 #select-list-2-1[data-v-657d4b24] {\n max-height: 585px;\n overflow-y: auto;\n}\n#select-list #select-list-2 #select-list-2-1[data-v-657d4b24] ::-webkit-scrollbar-track-piece {\n background-color: #fff !important;\n}\n#select-list #select-list-2 #select-list-2-1 .input-chaptername[data-v-657d4b24] {\n border: 1px solid #66ccff88;\n flex: 1;\n border-radius: 5px;\n background: #fff;\n line-height: 20px;\n padding-left: 15px;\n padding-top: 1px;\n}\n#select-list .van-cell-group--inset[data-v-657d4b24] {\n margin: 0 0 !important;\n overflow: hidden;\n border-radius: 8px;\n}\n#editItem[data-v-657d4b24] {\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n margin: 3px 20px !important;\n color: #ee000088;\n flex-wrap: wrap;\n}\n#editItem .editItem-center[data-v-657d4b24] {\n font-size: 18px;\n}\n#comicinfo[data-v-657d4b24] {\n width: 280px;\n margin: 20px auto;\n}\n#comicinfo .van-cell__title[data-v-657d4b24] {\n max-width: 80px !important;\n}\ninput[data-v-657d4b24] {\n margin-left: 5px;\n margin-right: 5px;\n width: 50px;\n}\n.van-cell__title[data-v-657d4b24] {\n text-align: left;\n}\n.van-cell-group__title--inset[data-v-657d4b24] {\n text-align: left;\n}\n.van-button--default[data-v-657d4b24] {\n color: #000000;\n background-color: #66ccff96 !important;\n border: 1px solid #ffffff6e;\n}\n.van-button--disabled[data-v-657d4b24] {\n opacity: 1 !important;\n}\n.van-tag--default[data-v-657d4b24] {\n background-color: #66ccff;\n}\n.van-checkbox__icon--checked .van-icon[data-v-657d4b24] {\n color: #ee0000 !important;\n background-color: #66ccff55 !important;\n border-color: #66ccff88 !important;\n}\n.van-popover--light[data-v-657d4b24] {\n font-size: 14px !important;\n color: #8d8de7 !important;\n}\n.van-popover--light .van-popover__arrow[data-v-657d4b24] {\n color: #d9d9d9 !important;\n}\n.van-popover__content[data-v-657d4b24] {\n border: 1px solid !important;\n padding: 2px 9px !important;\n margin-top: 3px !important;\n}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
/***/ }),
/***/ 857:
/***/ ((module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(645);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, "*[data-v-5ef48958]{margin:0;padding:0}.custom-indicator[data-v-5ef48958]{position:absolute;height:700px;right:5px;bottom:5px;padding:2px 5px;font-size:14px;background:rgba(0,0,0,0.1)}#thebtn[data-v-5ef48958]{position:fixed;top:150px;right:600px;z-index:999999 !important}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
/***/ }),
/***/ 645:
/***/ ((module) => {
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
// css base code, injected by the css-loader
// eslint-disable-next-line func-names
module.exports = function (cssWithMappingToString) {
var list = []; // return the list of modules as css string
list.toString = function toString() {
return this.map(function (item) {
var content = cssWithMappingToString(item);
if (item[2]) {
return "@media ".concat(item[2], " {").concat(content, "}");
}
return content;
}).join("");
}; // import a list of modules into the list
// eslint-disable-next-line func-names
list.i = function (modules, mediaQuery, dedupe) {
if (typeof modules === "string") {
// eslint-disable-next-line no-param-reassign
modules = [[null, modules, ""]];
}
var alreadyImportedModules = {};
if (dedupe) {
for (var i = 0; i < this.length; i++) {
// eslint-disable-next-line prefer-destructuring
var id = this[i][0];
if (id != null) {
alreadyImportedModules[id] = true;
}
}
}
for (var _i = 0; _i < modules.length; _i++) {
var item = [].concat(modules[_i]);
if (dedupe && alreadyImportedModules[item[0]]) {
// eslint-disable-next-line no-continue
continue;
}
if (mediaQuery) {
if (!item[2]) {
item[2] = mediaQuery;
} else {
item[2] = "".concat(mediaQuery, " and ").concat(item[2]);
}
}
list.push(item);
}
};
return list;
};
/***/ }),
/***/ 379:
/***/ ((module) => {
var stylesInDOM = [];
function getIndexByIdentifier(identifier) {
var result = -1;
for (var i = 0; i < stylesInDOM.length; i++) {
if (stylesInDOM[i].identifier === identifier) {
result = i;
break;
}
}
return result;
}
function modulesToDom(list, options) {
var idCountMap = {};
var identifiers = [];
for (var i = 0; i < list.length; i++) {
var item = list[i];
var id = options.base ? item[0] + options.base : item[0];
var count = idCountMap[id] || 0;
var identifier = "".concat(id, " ").concat(count);
idCountMap[id] = count + 1;
var indexByIdentifier = getIndexByIdentifier(identifier);
var obj = {
css: item[1],
media: item[2],
sourceMap: item[3],
supports: item[4],
layer: item[5]
};
if (indexByIdentifier !== -1) {
stylesInDOM[indexByIdentifier].references++;
stylesInDOM[indexByIdentifier].updater(obj);
} else {
var updater = addElementStyle(obj, options);
options.byIndex = i;
stylesInDOM.splice(i, 0, {
identifier: identifier,
updater: updater,
references: 1
});
}
identifiers.push(identifier);
}
return identifiers;
}
function addElementStyle(obj, options) {
var api = options.domAPI(options);
api.update(obj);
var updater = function updater(newObj) {
if (newObj) {
if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {
return;
}
api.update(obj = newObj);
} else {
api.remove();
}
};
return updater;
}
module.exports = function (list, options) {
options = options || {};
list = list || [];
var lastIdentifiers = modulesToDom(list, options);
return function update(newList) {
newList = newList || [];
for (var i = 0; i < lastIdentifiers.length; i++) {
var identifier = lastIdentifiers[i];
var index = getIndexByIdentifier(identifier);
stylesInDOM[index].references--;
}
var newLastIdentifiers = modulesToDom(newList, options);
for (var _i = 0; _i < lastIdentifiers.length; _i++) {
var _identifier = lastIdentifiers[_i];
var _index = getIndexByIdentifier(_identifier);
if (stylesInDOM[_index].references === 0) {
stylesInDOM[_index].updater();
stylesInDOM.splice(_index, 1);
}
}
lastIdentifiers = newLastIdentifiers;
};
};
/***/ }),
/***/ 569:
/***/ ((module) => {
var memo = {};
/* istanbul ignore next */
function getTarget(target) {
if (typeof memo[target] === "undefined") {
var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself
if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
try {
// This will throw an exception if access to iframe is blocked
// due to cross-origin restrictions
styleTarget = styleTarget.contentDocument.head;
} catch (e) {
// istanbul ignore next
styleTarget = null;
}
}
memo[target] = styleTarget;
}
return memo[target];
}
/* istanbul ignore next */
function insertBySelector(insert, style) {
var target = getTarget(insert);
if (!target) {
throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
}
target.appendChild(style);
}
module.exports = insertBySelector;
/***/ }),
/***/ 216:
/***/ ((module) => {
/* istanbul ignore next */
function insertStyleElement(options) {
var element = document.createElement("style");
options.setAttributes(element, options.attributes);
options.insert(element, options.options);
return element;
}
module.exports = insertStyleElement;
/***/ }),
/***/ 565:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/* istanbul ignore next */
function setAttributesWithoutAttributes(styleElement) {
var nonce = true ? __webpack_require__.nc : 0;
if (nonce) {
styleElement.setAttribute("nonce", nonce);
}
}
module.exports = setAttributesWithoutAttributes;
/***/ }),
/***/ 795:
/***/ ((module) => {
/* istanbul ignore next */
function apply(styleElement, options, obj) {
var css = "";
if (obj.supports) {
css += "@supports (".concat(obj.supports, ") {");
}
if (obj.media) {
css += "@media ".concat(obj.media, " {");
}
var needLayer = typeof obj.layer !== "undefined";
if (needLayer) {
css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");
}
css += obj.css;
if (needLayer) {
css += "}";
}
if (obj.media) {
css += "}";
}
if (obj.supports) {
css += "}";
}
var sourceMap = obj.sourceMap;
if (sourceMap && typeof btoa !== "undefined") {
css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
} // For old IE
/* istanbul ignore if */
options.styleTagTransform(css, styleElement, options.options);
}
function removeStyleElement(styleElement) {
// istanbul ignore if
if (styleElement.parentNode === null) {
return false;
}
styleElement.parentNode.removeChild(styleElement);
}
/* istanbul ignore next */
function domAPI(options) {
var styleElement = options.insertStyleElement(options);
return {
update: function update(obj) {
apply(styleElement, options, obj);
},
remove: function remove() {
removeStyleElement(styleElement);
}
};
}
module.exports = domAPI;
/***/ }),
/***/ 589:
/***/ ((module) => {
/* istanbul ignore next */
function styleTagTransform(css, styleElement) {
if (styleElement.styleSheet) {
styleElement.styleSheet.cssText = css;
} else {
while (styleElement.firstChild) {
styleElement.removeChild(styleElement.firstChild);
}
styleElement.appendChild(document.createTextNode(css));
}
}
module.exports = styleTagTransform;
/***/ }),
/***/ 555:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _config_setup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(393);
/* harmony import */ var vant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(871);
/* harmony import */ var vant__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vant__WEBPACK_IMPORTED_MODULE_1__);
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
name: 'Importpage',
data() {
return {
codeText: ''
}
},
methods: {
getCode() {
try {
// eslint-disable-next-line no-eval
const code = eval(this.codeText)
const userWebInfo = (0,_config_setup__WEBPACK_IMPORTED_MODULE_0__/* .getStorage */ .cF)('userWebInfo')
if (code.length > 0) {
code.forEach(element => {
userWebInfo.unshift(element)
})
}
(0,_config_setup__WEBPACK_IMPORTED_MODULE_0__/* .setStorage */ .po)('userWebInfo', userWebInfo)
this.$bus.$emit('getWeb')
;(0,vant__WEBPACK_IMPORTED_MODULE_1__.Toast)({
message: '已导入',
getContainer: '.card',
position: 'bottom'
})
setTimeout(() => {
this.$bus.$emit('changeSetupFirstPage')
}, 1000)
} catch (error) {
(0,vant__WEBPACK_IMPORTED_MODULE_1__.Toast)({
message: '请粘贴正确JSON文字',
getContainer: '.card',
position: 'bottom'
})
}
}
}
});
/***/ }),
/***/ 758:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "bF": () => (/* binding */ AppVersion),
/* harmony export */ "r8": () => (/* binding */ isDev)
/* harmony export */ });
/* unused harmony exports AppName, AppEnv */
/* eslint-disable no-undef */
const AppName = (/* unused pure expression or super */ null && ("10图漫"))
const AppVersion = "2.0.7"
const AppEnv = "production"
const isDev = AppEnv === 'development'
/***/ }),
/***/ 393:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "Iq": () => (/* binding */ appLoadinit),
/* harmony export */ "cF": () => (/* binding */ getStorage),
/* harmony export */ "po": () => (/* binding */ setStorage),
/* harmony export */ "zU": () => (/* binding */ setinit)
/* harmony export */ });
/* harmony import */ var _config_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(758);
/* eslint-disable no-unused-vars */
/* eslint-disable no-eval */
/* eslint-disable no-undef */
// 脚本存储信息
const configDefault = {
version: _config_index__WEBPACK_IMPORTED_MODULE_0__/* .AppVersion */ .bF,
appLoadDefault: {
isShowUI: false,
loadHotKey: 'V', // alt + loadHotKey
rightSize: 100,
centerSize: 100
},
maxChapterNum: 2,
maxPictureNum: 3,
downType: 0,
maxSplicingHeight: 20000,
imgIndexBitNum: 3,
imgSplicingFlag: true,
imgDownRange: [1, -1], // 章节图片下载范围 第1张至最后1张
// downHistory: '[]', // 废弃
userWebInfo: [],
rootDir: '10Comic'
}
// 网页 localStorage 存储信息
const localStorageDefault = {
ylComicDownHistory: '[]'
}
// 油猴脚本存储 废弃变量
const abandonDefault = ['downHistory']
const appLoadinit = () => {
if (_config_index__WEBPACK_IMPORTED_MODULE_0__/* .isDev */ .r8) {
return
}
for (const key in localStorageDefault) {
if (localStorage.getItem(key) == null) {
localStorage.setItem(key, localStorageDefault[key])
}
}
// 如条件全为false, 则更新设置
if (GM_getValue('version') !== undefined && GM_getValue('version') === _config_index__WEBPACK_IMPORTED_MODULE_0__/* .AppVersion */ .bF) {
console.log('不需要更新数据')
return
}
for (const key in configDefault) {
// 不存在,添加
if (GM_getValue(key) === undefined) {
GM_setValue(key, configDefault[key])
}
}
// 油猴存储 去除废弃变量存储数量
abandonDefault.forEach(word => {
if (GM_getValue(word) !== undefined) {
GM_deleteValue(word)
}
})
GM_setValue('version', _config_index__WEBPACK_IMPORTED_MODULE_0__/* .AppVersion */ .bF)
GM_setValue('maxChapterNum', 2)
return true
}
const setinit = async() => {
return new Promise((resolve, reject) => {
if (_config_index__WEBPACK_IMPORTED_MODULE_0__/* .isDev */ .r8) {
resolve(false)
}
for (const key in configDefault) {
GM_setValue(key, configDefault[key])
}
resolve(true)
})
}
const setStorage = (key, value, key2 = null) => {
// console.log('value: ', value)
if (key2) {
const obj = GM_getValue(key)
obj[key2] = value
value = obj
}
GM_setValue(key, value)
return true
}
const getStorage = (key) => {
return GM_getValue(key)
}
/***/ }),
/***/ 872:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "HL": () => (/* binding */ matchWeb),
/* harmony export */ "Ni": () => (/* binding */ searchFunTemplate_1),
/* harmony export */ "Os": () => (/* binding */ comicsWebInfo),
/* harmony export */ "Po": () => (/* binding */ currentComics),
/* harmony export */ "eT": () => (/* binding */ getWebList)
/* harmony export */ });
/* harmony import */ var _utils_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(624);
/* harmony import */ var _config_setup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(393);
/* eslint-disable no-undef */
/* eslint-disable no-empty */
/* eslint-disable no-eval */
// eslint-disable-next-line no-unused-vars
const searchFunTemplate_1 = async(data, keyword) => {
// eslint-disable-next-line prefer-const
let { search_add_url, search_pre, alllist_dom_css, minlist_dom_css, namelink_index, img_src, use_background, img_reg, match_reg_num } = data.searchTemplate_1
namelink_index ? namelink_index-- : namelink_index = 0
let searchUrl = ''
if (search_pre) {
searchUrl = search_pre + search_add_url + keyword
} else {
searchUrl = data.homepage + search_add_url + keyword
}
let headers = ''
data.headers ? headers = data.headers : ''
// 调试使用
// data.webName === '' ? console.log('') : ''
const { responseText } = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)({ method: 'get', url: searchUrl, data: '', headers })
const dom = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .parseToDOM */ .U3)(responseText).querySelector(alllist_dom_css)
const domList = dom.querySelectorAll(minlist_dom_css)
const searchList = []
domList.forEach(element => {
const obj = {}
try {
obj.name = element.querySelector('a').title
const pathname = element.querySelector('a').pathname
obj.url = data.homepage + pathname.slice(1, pathname.length)
// 获取封面图片地址
if (!use_background) {
if (!img_reg) {
const reg2 = eval('/' + img_src + `=('|")(.*?)('|")` + '/')
obj.imageUrl = element.innerHTML.match(reg2)[2]
} else {
obj.imageUrl = element.innerHTML.match(img_reg)[match_reg_num]
}
// obj.imageUrl = element.querySelector('img').getAttribute(img_src)
} else {
obj.imageUrl = element.innerHTML.match(/background.*?(url)\('?(.*?)'?\)/)[2]
}
// 名称修正?
if (obj.name === '') {
let titleArr = element.innerHTML.match(/title=('|")(.*?)('|")/);
(titleArr && titleArr.length >= 2) ? (obj.name = titleArr[2])
: (titleArr = element.innerHTML.match(/alt=('|")(.*?)('|")/),
(titleArr && titleArr.length >= 2) ? obj.name = titleArr[2] : '')
// 文本 name innerText
obj.name === '' ? obj.name = element.querySelectorAll('a')[namelink_index].innerText : ''
}
} catch (error) {
console.log('error: ', data.webName, error)
}
searchList.push(obj)
})
return new Promise((resolve, reject) => {
resolve(searchList)
})
}
const comicsWebInfo = [
{
domain: 'manhua.idmzj.com',
homepage: 'https://manhua.idmzj.com/',
webName: '动漫之家',
comicNameCss: 'h1',
chapterCss: '.cartoon_online_border',
chapterCss_2: '.cartoon_online_border_other',
webDesc: '需要登录',
readtype: 1,
useFrame: true,
getComicInfo: async function(comic_name) {
const domain = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .getdomain */ .m1)()
let text = ''
if (domain === 'm.idmzj.com') {
text = document.body.outerHTML
} else {
// 判断登录后是否有章节信息
const chapterList = unsafeWindow.__NUXT__?.data?.getCationDeatils?.comicInfo?.chapterList
if (chapterList) {
return false
}
const arr = window.location.href.split('/')
let name = arr[arr.length - 1] ? arr[arr.length - 1] : arr[arr.length - 2]
name = name.split('.')[0]
const comicUrl = `https://m.idmzj.com/info/${name}.html`
const htmldata = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)('get', comicUrl)
text = htmldata.responseText
}
const str2 = text.match(/initIntroData\((.*)\)/)[1]
const comic_list = JSON.parse(str2)[0].data
let comic_list_2 = []
if (JSON.parse(str2)[1]) {
comic_list_2 = JSON.parse(str2)[1].data
}
const allList = []
comic_list.forEach(element => {
const url = `https://m.idmzj.com/view/${element.comic_id}/${element.id}.html/`
const data = {
comicName: comic_name,
chapterName: (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .trimSpecial */ .Sc)(element.chapter_name),
chapterNumStr: '',
url,
readtype: this.readtype,
isPay: false,
isSelect: false,
characterType: 'one'
}
allList.push(data)
})
comic_list_2.forEach(element => {
const url = `https://m.idmzj.com/view/${element.comic_id}/${element.id}.html/`
const data = {
comicName: comic_name,
chapterName: (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .trimSpecial */ .Sc)(element.chapter_name),
chapterNumStr: '',
url,
readtype: this.readtype,
isPay: false,
isSelect: false,
characterType: 'many'
}
allList.push(data)
})
return allList
},
getImgs: async function(context, processData) {
const chapterList = unsafeWindow.__NUXT__?.data?.getCationDeatils?.comicInfo?.chapterList
if (chapterList) {
const iframeWindow = document.getElementById(processData.frameId).contentWindow
await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .doThingsEachSecond */ .w1)(10, () => iframeWindow?.__NUXT__?.data?.getchapters?.data?.chapterInfo?.page_url)
const imageArr = iframeWindow?.__NUXT__?.data?.getchapters?.data?.chapterInfo?.page_url
document.getElementById(processData.frameId).remove()
return imageArr
} else {
// 保留 m.dmzj.com 获取方法
const str = context.match(/mReader.initData\(.*"page_url":(.*?"]).*\)/)[1]
const imgs = JSON.parse(str)
document.getElementById(processData.frameId).remove()
return imgs
}
}
},
{
domain: ['m.dmzj.com', 'm.idmzj.com'],
homepage: 'https://m.idmzj.com/',
webName: '动漫之家(手机)',
comicNameCss: '#comicName',
chapterCss: '#list',
readtype: 1,
getImgs: async function(context) {
const str = context.match(/mReader.initData\(.*"page_url":(.*?"]).*\)/)[1]
const imgs = JSON.parse(str)
console.log('imgs: ', imgs)
return imgs
}
},
{
domain: ['comic.idmzj.com', 'www.idmzj.com'],
homepage: 'https://comic.idmzj.com/',
webName: '动漫之家(访客)',
comicNameCss: 'h1',
chapterCss: '.cartoon_online_border, .list_con_li',
readtype: 1,
getImgs: async function(context, processData) {
const group = processData.url.match(/idmzj.com\/(.*?)\/(\d+)/)
const DATA = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(context, /(function[\s\S]+?return [\s\S]*?}})(\([\s\S]+?\))/g)
const params = DATA.pinia['app-store'].publicParams
let reqUrl = `https://comic.idmzj.com/api/v1/s_comic/chapter/detail?channel=${params.channel}&app_name=${params.app_name}&version=${params.timestamp}×tamp=${params.timestamp}&uid&comic_py=${group[1]}&chapter_id=${group[2]}`
if (unsafeWindow.location.host.includes('www')) {
const comic_id = unsafeWindow.__NUXT__.data.getcationDeatils.comicInfo.id
reqUrl = `https://www.idmzj.com/api/v1/comic1/chapter/detail?channel=${params.channel}&app_name=${params.app_name}&version=1.0.0×tamp=${params.timestamp}&uid&comic_id=${comic_id}&chapter_id=${group[2]}`
}
const { response } = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)('get', reqUrl)
const imgs = JSON.parse(response).data.chapterInfo.page_url
return imgs
}
},
{
domain: ['mangabz.com', 'www.mangabz.com'],
homepage: 'https://mangabz.com/',
webName: 'Mangabz',
comicNameCss: 'p.detail-info-title',
chapterCss: '#chapterlistload',
headers: {
referer: 'https://mangabz.com/'
},
downHeaders: {
referer: 'https://mangabz.com/'
},
readtype: 0,
searchTemplate_1: {
search_add_url: 'search?title=',
alllist_dom_css: '.container .mh-list',
minlist_dom_css: 'li',
img_src: 'src'
},
getImgs: async function(context, processData) {
let group; let page = 1
if (processData.otherData) {
group = processData.otherData.group
} else {
group = context.match(/MANGABZ_MID=(\d+?);.*MANGABZ_CID=(\d+?);.*MANGABZ_IMAGE_COUNT=(\d+?);.*MANGABZ_VIEWSIGN="(.*?)".*MANGABZ_VIEWSIGN_DT="(.*?)"/)
}
if (processData.imgIndex !== undefined) {
page = processData.imgIndex + 1
}
const reqUrl = `https://mangabz.com/m${group[2]}/chapterimage.ashx?cid=${group[2]}&page=${page}&key=&_cid=${group[2]}&_mid=${group[1]}&_dt=${group[5]}&_sign=${group[4]}`
const { responseText } = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)('get', reqUrl)
const codeText = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(responseText, /(function.*return .*?})(\(.*?{}\))/g)
const imgUrlArr = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(codeText, /(function.*return .*?})/g)
const otherData = { group }
return { imgUrlArr, nextPageUrl: null, imgCount: group[3], otherData }
}
},
{
domain: 'manhua.zaimanhua.com',
homepage: 'https://manhua.zaimanhua.com/',
webName: '再漫画',
comicNameCss: '.wrap_intro_l_comic h1 a',
chapterCss: '.tab-content-selected',
readtype: 1,
useFrame: true,
getImgs: async function(context, processData) {
const iframeWindow = document.getElementById(processData.frameId).contentWindow
await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .delay */ .gw)(1.5)
const page_url = iframeWindow.__NUXT__.data.getChapters.data.chapterInfo.page_url
document.getElementById(processData.frameId).remove()
return page_url
}
},
{
domain: 'www.dm5.com',
homepage: 'https://www.dm5.com/',
webName: '动漫屋',
comicNameCss: '.banner_detail_form > .info > p.title',
chapterCss: '#detail-list-select-1',
hasSpend: true,
payKey: '-lock',
readtype: 0,
headers: {
referer: 'https://www.dm5.com/'
},
downHeaders: {
referer: ''
},
searchTemplate_1: {
search_add_url: 'search?title=',
alllist_dom_css: '.mh-list',
minlist_dom_css: 'li',
use_background: true
},
getImgs: async function(context, processData) {
let group; let page = 1
if (processData.otherData) {
group = processData.otherData.group
} else {
group = context.match(/DM5_MID=(\d+?);.*DM5_CID=(\d+?);.*DM5_IMAGE_COUNT=(\d+?);.*DM5_VIEWSIGN="(.*?)".*DM5_VIEWSIGN_DT="(.*?)"/)
}
if (processData.imgIndex !== undefined) {
page = processData.imgIndex + 1
}
const reqUrl = `https://www.dm5.com/ch1-${group[2]}/chapterfun.ashx?cid=${group[2]}&page=${page}&key=&language=1>k=6&_cid=${group[2]}&_mid=${group[1]}&_dt=${group[5].replaceAll(' ', '+').replaceAll(':', '%3A')}&_sign=${group[4]}`
const { responseText } = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)({ method: 'get', url: reqUrl, useCookie: processData.isPay })
const codeText = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(responseText, /(function.*return .*?})(\(.*?{}\))/g)
const imgUrlArr = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(codeText, /(function.*return .*?})/g)
const otherData = { group }
return { imgUrlArr, nextPageUrl: null, imgCount: group[3], otherData }
}
},
{
domain: 'tel.dm5.com',
homepage: 'https://tel.dm5.com/',
webName: '动漫屋2',
comicNameCss: '.banner_detail_form > .info > p.title',
chapterCss: '#detail-list-select-1',
hasSpend: true,
payKey: '-lock',
readtype: 0,
headers: {
referer: 'https://tel.dm5.com/'
},
downHeaders: {
referer: ''
},
getImgs: async function(context, processData) {
let group; let page = 1
if (processData.otherData) {
group = processData.otherData.group
} else {
group = context.match(/DM5_MID=(\d+?);.*DM5_CID=(\d+?);.*DM5_IMAGE_COUNT=(\d+?);.*DM5_VIEWSIGN="(.*?)".*DM5_VIEWSIGN_DT="(.*?)"/)
}
if (processData.imgIndex !== undefined) {
page = processData.imgIndex + 1
}
const reqUrl = `https://tel.dm5.com/ch1-${group[2]}/chapterfun.ashx?cid=${group[2]}&page=${page}&key=&language=1>k=6&_cid=${group[2]}&_mid=${group[1]}&_dt=${group[5].replaceAll(' ', '+').replaceAll(':', '%3A')}&_sign=${group[4]}`
const { responseText } = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)({ method: 'get', url: reqUrl, useCookie: processData.isPay })
const codeText = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(responseText, /(function.*return .*?})(\(.*?{}\))/g)
const imgUrlArr = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(codeText, /(function.*return .*?})/g)
const otherData = { group }
return { imgUrlArr, nextPageUrl: null, imgCount: group[3], otherData }
}
},
{
domain: 'godamh.com',
homepage: 'https://godamh.com/',
webName: 'GoDa',
comicNameCss: '.container nav > ol > li:nth-child(3) a',
chapterCss: '.chapterlists',
chapterNameReg: /data-ct="(.*?)"/,
readtype: 1,
headers: {
referer: 'https://godamh.com/'
},
getImgs: async function(context) {
const ms = context.match(/data-ms="(\d+)".*data-cs="(\d+)"/)[1]
const cs = context.match(/data-ms="(\d+)".*data-cs="(\d+)"/)[2]
const url = `https://api-get-v2.mgsearcher.com/api/chapter/getinfo?m=${ms}&c=${cs}`
const { responseText } = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)('GET', url)
const info = JSON.parse(responseText).data.info
const domain = info.images.line === 2 ? 'https://f40-1-4.g-mh.online' : 'https://t40-1-4.g-mh.online'
const images = info.images.images.map(element => {
return domain + element.url
})
return images
}
},
{
domain: 'www.comemh8.com',
homepage: 'https://www.comemh8.com/',
webName: '来漫画',
comicNameCss: '.title h1',
chapterCss: '#play_0 ul ',
readtype: 1,
useFrame: true,
getImgs: async function(context, processData) {
const iframeWindow = document.getElementById(processData.frameId).contentWindow
const arr = iframeWindow.getUrlpics()
const host = iframeWindow.gethost()
const image = arr.map(element => host + element)
console.log('image: ', image)
document.getElementById(processData.frameId).remove()
return image
}
},
{
domain: 'www.rumanhua.com',
homepage: 'https://www.rumanhua.com/',
webName: 'R如漫画',
comicNameCss: 'h1.name_mh',
chapterCss: '.chapterList .chapterlistload ul',
readtype: 1,
useFrame: true,
getImgs: async function(context, processData) {
const iframeDom = document.getElementById(processData.frameId).contentDocument
await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .delay */ .gw)(1.5)
const image = [...iframeDom.querySelectorAll('.main_img img')].map(img => img.dataset.src ?? img.src)
document.getElementById(processData.frameId).remove()
return image
}
},
{
domain: 'www.dongmanmanhua.cn',
homepage: 'https://www.dongmanmanhua.cn/',
webName: '咚漫',
comicNameCss: 'h1.subj',
chapterCss: '#_listUl',
chapterNameReg: /alt="(.*?)"/,
readtype: 1,
headers: {
referer: 'https://www.dongmanmanhua.cn/'
},
getImgs: async function(context) {
const str = context.match(/class="viewer_lst[\s\S]*?input/)[0]
const imgobj = str.matchAll(/img src[\s\S]*?data-url="(.*?)"/g)
const imgUrlArr = []
for (const item of imgobj) {
imgUrlArr.push(item[1])
}
return imgUrlArr
}
},
{
domain: 'www.gaonaojin.com',
homepage: 'https://www.gaonaojin.com/',
webName: '仙漫网',
comicNameCss: 'h1',
chapterCss: '#detail-list-select-1',
readtype: 1,
getImgs: function(context) {
const imgDomain = context.match(/imgDomain = '(.*?)'/)[1]
let imgStr = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(context, /(function.*?return \S})(\(.*?{}\))/g)
imgStr = imgStr.match(/\[[\s\S]+?\]/)[0]
const imgArray = JSON.parse(imgStr)
const imgarr = []
imgArray.forEach(element => {
imgarr.push(imgDomain + element)
})
return imgarr
}
},
{
domain: 'www.webtoons.com',
homepage: 'https://www.webtoons.com/',
webName: 'webtoons',
comicNameCss: 'h1.subj',
chapterCss: '#_listUl',
chapterNameReg: /alt="(.*?)"/,
readtype: 1,
webDesc: '?需要魔法?',
headers: {
referer: 'https://www.webtoons.com/'
},
getImgs: async function(context) {
const str = context.match(/class="viewer_lst[\s\S]*?class="viewer_ad_area"/)[0]
const imgobj = str.matchAll(/img src[\s\S]*?data-url="(.*?)"/g)
const imgUrlArr = []
for (const item of imgobj) {
imgUrlArr.push(item[1])
}
return imgUrlArr
}
},
{
domain: 'www.manshiduo.net',
homepage: 'https://www.manshiduo.net/',
webName: '漫士多',
comicNameCss: '.comic-title',
chapterCss: 'ul.chapter__list-box',
readtype: 1,
getImgs: async function(context) {
const imgobj = context.matchAll(/data-original="(.*?)"/g)
const imgUrlArr = []
for (const item of imgobj) {
imgUrlArr.push(item[1])
}
return imgUrlArr
}
},
{
domain: 'comic.naver.com',
homepage: 'https://comic.naver.com/',
webName: 'comic.naver',
comicNameCss: '#content > div.EpisodeListInfo__comic_info--yRAu0 > div > h2',
chapterCss: '#content ul',
chapterNameReg: /span.*?>(.*?)<\/span>/,
webDesc: '找到漫画目录页再使用, 新打开页面需“重载列表”',
readtype: 1,
headers: {
referer: 'https://comic.naver.com/'
},
getImgs: async function(context) {
const str = context.match(/class="wt_viewer"[\s\S]*?(<\/div>)/)[0]
const imgobj = str.matchAll(/img src="(.*?)"/g)
const imgUrlArr = []
for (const item of imgobj) {
imgUrlArr.push(item[1])
}
return imgUrlArr
}
},
{
domain: 'ac.qq.com',
homepage: 'https://ac.qq.com/',
webName: '腾讯漫画',
comicNameCss: '.works-intro-title.ui-left strong',
chapterCss: '.chapter-page-all.works-chapter-list',
headers: '',
readtype: 1,
webDesc: '2023.3.2起, 需要APP观看的章节无法完整下载',
hasSpend: true,
payKey: 'ui-icon-pay',
searchTemplate_1: {
search_add_url: 'Comic/searchList?search=',
alllist_dom_css: '.mod_book_list',
minlist_dom_css: 'li',
img_src: 'data-original'
},
getImgs: function(context) {
let nonce = context.match(/<script>\s*window.*?=(.*?)?;/)[1]
nonce = eval(nonce)
const dataStr = context.match(/DATA.*?'(.*)?'/)[1]
const data = dataStr.split('')
nonce = nonce.match(/\d+[a-zA-Z]+/g)
let len = nonce.length
let locate = null
let str = ''
while (len--) {
locate = parseInt(nonce[len]) & 255
str = nonce[len].replace(/\d+/g, '')
data.splice(locate, str.length)
}
const chapterStr = data.join('')
const chapterObj = JSON.parse(window.atob(chapterStr))
const imgarr = []
chapterObj.picture.forEach(element => {
imgarr.push(element.url)
})
return imgarr
}
},
{
domain: 'manga.bilibili.com',
homepage: 'https://manga.bilibili.com/',
webName: '哔哩哔哩',
comicNameCss: '.manga-info h1.manga-title',
chapterCss: '.episode-list .list-header',
headers: {
referer: 'https://manga.bilibili.com/'
},
readtype: 1,
searchFun: async function(keyword) {
const searchUrl = 'https://manga.bilibili.com/twirp/comic.v1.Comic/Search?device=pc&platform=web'
const data = new FormData()
data.append('key_word', keyword)
data.append('page_num', 1)
data.append('page_size', 8)
const { responseText } = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)('post', searchUrl, data, this.headers)
const list = JSON.parse(responseText).data.list
const searchList = []
list.forEach(element => {
const obj = {}
obj.name = element.org_title
obj.url = this.homepage + 'detail/mc' + element.id
obj.imageUrl = element.vertical_cover
searchList.push(obj)
})
return new Promise((resolve, reject) => {
resolve(searchList)
})
},
getComicInfo: async function() {
const comicid = window.location.href.match(/detail\/(\D*)(\d*)/)[2]
const data = new FormData()
data.append('comic_id', parseInt(comicid))
const getUrl = 'https://manga.bilibili.com/twirp/comic.v1.Comic/ComicDetail?device=pc&platform=web'
const { responseText } = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)('post', getUrl, data)
const comic = JSON.parse(responseText)
const comicName = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .trimSpecial */ .Sc)(comic.data.title)
const comic_list = comic.data.ep_list
const allList = []
comic_list.forEach(element => {
const url = `https://manga.bilibili.com/mc${comicid}/${element.id}`
const data = {
comicName: comicName,
chapterName: (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .trimSpecial */ .Sc)(element.short_title + ' ' + element.title),
chapterNumStr: '',
url,
readtype: this.readtype,
isPay: element.is_locked,
isSelect: false
}
allList.push(data)
})
return allList.reverse()
},
getImgs: async function(context, processData) {
const { url, isPay } = processData
const chapter_id = parseInt(url.match(/.com\/(\D*)(\d*)\/(\d*)/)[3])
const data = new FormData()
data.append('ep_id', chapter_id)
const postUrl = 'https://manga.bilibili.com/twirp/comic.v1.Comic/GetImageIndex?device=pc&platform=web'
const { responseText } = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)({ method: 'post', url: postUrl, data, useCookie: isPay })
const imgArray = JSON.parse(responseText).data.images
console.log('imgArray: ', imgArray)
const saveImg = []
const query = []
const imgPostUrl = 'https://manga.bilibili.com/twirp/comic.v1.Comic/ImageToken?device=pc&platform=web'
imgArray.forEach(item => {
query.push(item.path)
})
const img_data = new FormData()
img_data.append('urls', JSON.stringify(query))
const img_data_res = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)('post', imgPostUrl, img_data)
console.log('img_data_res: ', img_data_res)
const imgObjArr = JSON.parse(img_data_res.responseText).data
imgObjArr.forEach(imgObj => {
saveImg.push(`${imgObj.url}?token=${imgObj.token}`)
})
return saveImg
}
},
{
domain: 'www.bilibilicomics.com',
homepage: 'https://www.bilibilicomics.com/',
webName: '哔哩哔哩漫画国际版',
comicNameCss: 'h1.manga-title',
chapterCss: '.episode-list .list-header',
headers: {
referer: 'https://www.bilibilicomics.com/'
},
webDesc: '?需要魔法?',
readtype: 1,
getComicInfo: async function() {
const comicid = window.location.href.match(/detail\/(\D*)(\d*)/)[2]
const data = new FormData()
data.append('comic_id', parseInt(comicid))
const getUrl = 'https://www.bilibilicomics.com/twirp/comic.v1.Comic/ComicDetail?device=pc&platform=web'
const { responseText } = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)('post', getUrl, data)
const comic = JSON.parse(responseText)
const comicName = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .trimSpecial */ .Sc)(comic.data.title)
const comic_list = comic.data.ep_list
const allList = []
comic_list.forEach(element => {
const url = `https://www.bilibilicomics.com/mc${comicid}/${element.id}`
const data = {
comicName: comicName,
chapterName: (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .trimSpecial */ .Sc)(element.short_title + ' ' + element.title),
chapterNumStr: '',
url,
readtype: this.readtype,
isPay: element.is_locked,
isSelect: false
}
allList.push(data)
})
return allList.reverse()
},
getImgs: async function(context, processData) {
const { url, isPay } = processData
const chapter_id = parseInt(url.match(/.com\/(\D*)(\d*)\/(\d*)/)[3])
const data = new FormData()
data.append('ep_id', chapter_id)
const postUrl = 'https://www.bilibilicomics.com/twirp/comic.v1.Comic/GetImageIndex?device=pc&platform=web'
const { responseText } = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)({ method: 'post', url: postUrl, data, useCookie: isPay })
const imgArray = JSON.parse(responseText).data.images
const saveImg = []
const query = []
const imgPostUrl = 'https://www.bilibilicomics.com/twirp/comic.v1.Comic/ImageToken?device=pc&platform=web'
imgArray.forEach(item => {
query.push(item.path)
})
const img_data = new FormData()
img_data.append('urls', JSON.stringify(query))
const img_data_res = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)('post', imgPostUrl, img_data)
const imgObjArr = JSON.parse(img_data_res.responseText).data
imgObjArr.forEach(imgObj => {
saveImg.push(`${imgObj.url}?token=${imgObj.token}`)
})
return saveImg
}
},
{
domain: 'komiic.com',
homepage: 'https://komiic.com/',
webName: 'Komiic漫画',
comicNameCss: '.ComicMain__info .text-h6',
chapterCss: '.v-card-text .v-container .v-row',
chapterNameReg: / class="serial">(.*?)<\/span>/,
webDesc: 'SPA页面, 新页面需“重载列表”重新匹配新名称',
headers: {
referer: 'https://komiic.com/'
},
readtype: 1,
getImgs: async function(context, processData) {
const { url } = processData
const chapter_id = url.match(/chapter\/(\d*)\/images/)[1]
const postUrl = 'https://komiic.com/api/query'
const data = {
'operationName': 'imagesByChapterId',
'variables': {
'chapterId': chapter_id
},
'query': 'query imagesByChapterId($chapterId: ID!) {\n imagesByChapterId(chapterId: $chapterId) {\n id\n kid\n height\n width\n __typename\n }\n}\n'
}
const headers = { 'Content-Type': 'application/json' }
const { responseText } = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)({ method: 'post', url: postUrl, headers, data: JSON.stringify(data) })
const img_data = JSON.parse(responseText).data.imagesByChapterId
const saveImg = []
img_data.forEach(element => {
saveImg.push('https://komiic.com/api/image/' + element.kid)
})
return saveImg
}
},
{
domain: ['www.darpou.com', 'darpou.com'],
homepage: 'https://www.darpou.com/',
webName: '百漫谷',
comicNameCss: '.fed-part-eone.fed-font-xvi a',
chapterCss: '.fed-play-item.fed-drop-item.fed-visible .fed-part-rows:nth-child(2)',
readtype: 1,
getImgs: async function(context) {
const txtUrl = context.match(/http(\S*).txt/gi)[0]
const txtRes = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)('get', txtUrl)
let txtContext = txtRes.responseText
txtContext = txtContext.replace(/img2.manga8.xyz/g, 'img4.manga8.xyz')
txtContext = txtContext.replace(/img.manga8.xyz/g, 'img3.manga8.xyz')
const imgReg = /http(\S*)jpg/g
return txtContext.match(imgReg)
}
},
{
domain: ['qiximh2.com', 'www.qiximh2.com'],
homepage: 'http://www.qiximh2.com/',
webName: '七夕漫画',
comicNameCss: '.cy_title h1',
chapterCss: '.cy_plist ul',
readtype: 1,
useFrame: true,
getImgs: function(context, processData) {
const str = document.getElementById(processData.frameId).contentDocument.body.outerHTML
const imgStr = str.match(/main_img[\s\S]*?class="cy_intro_r/)[0]
const group = imgStr.matchAll(/data-src="(.*?)"/g)
const imgarr = []
for (const item of group) {
imgarr.push(item[1])
}
document.getElementById(processData.frameId).remove()
return imgarr
}
},
{
domain: ['www.copymanga.tv'],
homepage: 'https://www.copymanga.tv/',
webName: '拷贝漫画',
comicNameCss: 'div.container .comicParticulars-title-right h6',
chapterCss: '.tab-content > div.active > ul:nth-child(1)',
readtype: 1,
useFrame: true,
getImgs: async function(context, processData) {
const iframeDom = document.getElementById(processData.frameId).contentDocument
const iframeWindow = document.getElementById(processData.frameId).contentWindow
// 存在加载慢的可能性,10秒内持续检测是否存在数据
await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .doThingsEachSecond */ .w1)(10, () => parseInt(iframeDom.querySelector('.comicCount')?.innerText))
const totalNum = parseInt(iframeDom.querySelector('.comicCount')?.innerText)
console.log('totalNum: ', totalNum)
const contentEle = iframeDom.querySelector('ul.comicContent-list')
// 结束滚动条件
const end_condition_1 = () => {
const curHeight = iframeWindow.innerHeight + iframeWindow.scrollY
return curHeight >= contentEle.offsetHeight
}
const end_condition_2 = () => contentEle.childElementCount === totalNum
// 等待滚动结果
const result = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .startScroll */ .qs)(iframeWindow, [end_condition_1, end_condition_2])
console.log('result: ', result)
clearInterval(result[0])
document.getElementById(processData.frameId).remove()
return [...contentEle.querySelectorAll('img')].map(img => img.dataset.src ?? img.src)
}
},
{
domain: 'www.fengchemh.com',
homepage: 'https://www.fengchemh.com/',
webName: '风车漫画',
comicNameCss: 'h1',
chapterCss: '#ewave-playlist-1',
readtype: 1,
useFrame: true,
getImgs: async function(context, processData) {
const iframeWindow = document.getElementById(processData.frameId).contentWindow
const images = iframeWindow.params.images
document.getElementById(processData.frameId).remove()
return images
}
},
{
domain: ['manhuagui.com'],
homepage: 'https://www.manhuagui.com/',
webName: '漫画柜',
comicNameCss: '.book-title h1',
chapterCss: '.chapter-list',
readtype: 1,
// context 章节请求正文
getImgs: function(context) {
// 获取到 html请求正文 context 的一段js代码字符 并执行这代码获取到 图片地址信息
// window["\x65\x76\x61\x6c"] => eval
// (function[\s\S]+?return \S*?}) 匿名函数部分
// (\([\s\S]+?{}\)) 需要的参数
const dataStr = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(context, /window\["\\x65\\x76\\x61\\x6c"\]\((function[\s\S]+?return \S*?})(\([\s\S]+?{}\))/g)
const matchObj = /"files":(?<files>.*?),"finished".*"path":"(?<path>.*?)".*"e":(?<e>\d*),"m":"(?<m>.*)"}/g.exec(dataStr)
var { files, path, e, m } = matchObj.groups
files = JSON.parse(files)
const image = files.map(ele => {
return 'https://i.hamreus.com' + path + ele + '?e=' + e + '&m=' + m
})
return image
}
},
{
domain: 'www.36manga.com',
homepage: 'https://www.36manga.com/',
webName: '36漫画网',
comicNameCss: '.book-title h1 span',
chapterCss: '#chapter-list-4 li:not(:first-of-type)',
readtype: 1,
webDesc: '?可访问 ?',
getImgs: function(context) {
const group = context.matchAll(/chapterImages = ([\s\S]+?);var chapterPath = "([\s\S]+?)";var chapterPrice/g)
let imgarr = []
let middleStr = ''
for (const item of group) {
imgarr = JSON.parse(item[1])
middleStr = item[2]
}
if (imgarr[0].search('http') === -1) {
imgarr = imgarr.map((item) => {
return 'https://img001.arc-theday.com/' + middleStr + item
})
}
return imgarr
}
},
{
domain: 'www.gufengmh9.com',
homepage: 'https://www.gufengmh9.com/',
webName: '古风漫画网',
comicNameCss: '.book-title h1 span',
chapterCss: '.chapter-body',
readtype: 1,
readCssText: '.img_info {display: none;}.tbCenter img {border: 0px;}',
searchTemplate_1: {
search_add_url: 'search/?keywords=',
alllist_dom_css: '.book-list',
minlist_dom_css: 'li',
img_src: 'src'
},
getImgs: async function(context) {
const group = context.matchAll(/chapterImages = (.*?);var chapterPath = "(.*?)"/g)
const strArr = []
for (const item of group) {
strArr.push(item[1])
strArr.push(item[2])
}
const josnRes = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)('get', this.homepage + 'js/config.js')
const josnContext = josnRes.responseText
const imageDomian = josnContext.match(/"domain":\["(.*?)"]/)[1]
let imgarr = JSON.parse(strArr[0])
imgarr = imgarr.map((item) => {
if (imgarr[0].search('http') === -1) {
return imageDomian + '/' + strArr[1] + item
}
return item
})
return imgarr
}
},
{
domain: 'comic.acgn.cc',
homepage: 'https://comic.acgn.cc/',
webName: '动漫戏说',
comicNameCss: '.list_navbox h3 a',
chapterCss: '#comic_chapter > ul',
readtype: 1,
getImgs: async function(context) {
const group = context.matchAll(/_src="(.*?)"/g)
const imgArray = []
for (const item of group) {
imgArray.push(item[1])
}
return imgArray
}
},
{
domain: 'www.77mh.xyz',
homepage: 'https://www.77mh.xyz/',
webName: '新新漫画',
comicNameCss: '.ar_list_coc h1',
chapterCss: '.ar_list_coc .ar_rlos_bor',
readtype: 1,
downHeaders: {
Accept: 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8'
},
searchTemplate_1: {
search_add_url: 'k.php?k=',
search_pre: 'https://so.77mh.xyz/',
alllist_dom_css: '.ar_list_co ul',
minlist_dom_css: 'dl',
img_src: 'src'
},
getImgs: async function(context, processData) {
const imgStr = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(context, /(function[\s\S]+?return \S})(\([\s\S]+?{}\))/g)
const params = imgStr.match(/var atsvr="(.*?)";var msg='(.*?)'.*img_s=(.*?);.*colist_(.*?).htm/)
let imgArray = params[2].split('|')
const coid = window.location.href.match(/colist_(\d*?).html/)[1]
const reqUrl = `https://css.gdbyhtl.net:5443/img_v1/cnlo_svr.asp?z=${params[1]}&s=${params[3]}&cid=${params[4]}&coid=${coid}`
const { responseText } = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)('get', reqUrl)
const getImgPre = responseText.match(/= "(.*?)"/)[1]
if (imgArray[0].search('http') === -1) {
imgArray = imgArray.map((item) => {
return getImgPre + item
})
}
return imgArray
}
},
{
domain: 'www.mhxqiu4.com',
homepage: 'http://www.mhxqiu4.com/',
webName: '漫画星球',
comicNameCss: '.cy_title h1',
chapterCss: '.cy_plist #mh-chapter-list-ol-0',
readtype: 1,
getImgs: function(context) {
let imgStr = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(context, /(function.*?return \S})(\(.*?{}\))/g)
imgStr = imgStr.match(/\[[\s\S]+?\]/)[0]
const imgArray = JSON.parse(imgStr)
return imgArray
}
},
{
domain: 'www.mhua5.com',
homepage: 'https://www.mhua5.com/',
webName: '漫画屋',
comicNameCss: '.comic-title.j-comic-title',
chapterCss: '.chapter__list-box.clearfix',
readtype: 1,
getImgs: function(context) {
const group = context.matchAll(/data-original="(.*?)"/g)
const imgArray = []
for (const item of group) {
imgArray.push(item[1])
}
return imgArray
}
},
{
domain: 'www.yymanhua.com',
homepage: 'https://www.yymanhua.com/',
webName: 'yymanhua',
comicNameCss: 'p.detail-info-title',
chapterCss: '.detail-list-form-con',
readtype: 1,
headers: {
referer: 'https://www.yymanhua.com/'
},
useFrame: true,
getImgs: async function(context, processData) {
const iframe = document.getElementById(processData.frameId).contentWindow
const cid = iframe.YYMANHUA_CID
let page
const _cid = iframe.YYMANHUA_CID
const _mid = iframe.COMIC_MID
const _dt = iframe.YYMANHUA_VIEWSIGN_DT
const _sign = iframe.YYMANHUA_VIEWSIGN
const imageArray = []
const count = iframe.YYMANHUA_IMAGE_COUNT
let currentCount = 0
while (currentCount < count) {
page = currentCount + 1
console.log('page: ', page)
const url = `https://www.yymanhua.com/m${cid}/chapterimage.ashx?cid=${cid}&page=${page}&key=&_cid=${_cid}&_mid=${_mid}&_dt=${_dt}&_sign=${_sign}`
const { response } = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)({ method: 'get', url })
console.log('response: ', response)
const funStr = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(response, /(function.*?return \S;})(\(.*?{}\))/g)
const newImgs = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(funStr, /(function.*?return .*?})()/g)
imageArray.push(...newImgs)
currentCount = imageArray.length
await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .delay */ .gw)(0.5)
}
document.getElementById(processData.frameId).remove()
return imageArray
}
},
{
domain: ['www.xmanhua.com', 'xmanhua.com'],
homepage: 'https://xmanhua.com/',
webName: 'xmanhua',
comicNameCss: 'p.detail-info-title',
chapterCss: '.detail-list-form-con',
readtype: 1,
headers: {
referer: 'https://xmanhua.com/'
},
useFrame: true,
getImgs: async function(context, processData) {
const iframe = document.getElementById(processData.frameId).contentWindow
const cid = iframe.XMANHUA_CID
let page
const _cid = iframe.XMANHUA_CID
const _mid = iframe.COMIC_MID
const _dt = iframe.XMANHUA_VIEWSIGN_DT
const _sign = iframe.XMANHUA_VIEWSIGN
const imageArray = []
const count = iframe.XMANHUA_IMAGE_COUNT
let currentCount = 0
while (currentCount < count) {
page = currentCount + 1
console.log('page: ', page)
const url = `https://xmanhua.com/m${cid}/chapterimage.ashx?cid=${cid}&page=${page}&key=&_cid=${_cid}&_mid=${_mid}&_dt=${_dt}&_sign=${_sign}`
const { response } = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)({ method: 'get', url })
const funStr = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(response, /(function.*?return \S;})(\(.*?{}\))/g)
const newImgs = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(funStr, /(function.*?return .*?})()/g)
imageArray.push(...newImgs)
currentCount = imageArray.length
await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .delay */ .gw)(0.5)
}
document.getElementById(processData.frameId).remove()
return imageArray
}
},
{
domain: 'www.cartoonmad.com',
homepage: 'https://www.cartoonmad.com/',
webName: '动漫狂',
comicNameCss: 'table > tbody > tr:nth-child(3) > td:nth-child(2) > a:nth-child(6)',
chapterCss: '#info',
readtype: 1,
downHeaders: {
referer: 'https://www.cartoonmad.com/'
},
getImgs: function(context) {
const preImgUrl = 'https:' + context.match(/<img src="(.*?)001.*?"/)[1]
const suffix = context.match(/<img src="(.*?)001\.(.*?)"/)[2]
const pageTotalNum = context.match(/<\/option>.*html">.*?(\d+).*?<\/select>/)[1]
const imgArray = []
for (let i = 0; i < pageTotalNum; i++) {
const imgUrl = preImgUrl + (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .addZeroForNum */ .xo)(i + 1, 3) + '.' + suffix
imgArray.push(imgUrl)
}
return imgArray
}
},
{
domain: 'www.zuimh.com',
homepage: 'https://www.zuimh.com/',
webName: '最漫画',
comicNameCss: '.book-detail .book-title h1 span',
chapterCss: '.chapter-body.clearfix #chapter-list-1',
readtype: 1,
readCssText: '.img_info {display: none;}.tbCenter img {border: 0px;}',
getImgs: async function(context) {
const imgStr = context.match(/var chapterImages = ([[\s\S]+?])[\s\S]+?var chapterPath/)[1]
const imgs = eval(imgStr)
return imgs
}
},
{
domain: 'www.6mh1.com',
homepage: 'http://www.6mh1.com/',
webName: '六漫画',
comicNameCss: 'h1.name_mh',
chapterCss: '#chapter-list1',
readtype: 1,
useFrame: true,
getImgs: async function(context, processData) {
const iframe = document.getElementById(processData.frameId).contentWindow
const newImgs = JSON.parse(JSON.stringify(iframe.newImgs))
document.getElementById(processData.frameId).remove()
return newImgs
}
},
{
domain: 'www.mhxin.com',
homepage: 'https://www.mhxin.com/',
webName: '漫画芯',
comicNameCss: '.wrap_intro_l_comic .comic_deCon h1',
chapterCss: '.zj_list_con #chapter-list-1',
readtype: 1,
readCssText: '.img_info {display: none;}.comic_wraCon img {border: 0px;margin-top:0px;}',
getImgs: async function(context) {
const group = context.matchAll(/chapterImages = (.*?);var chapterPath = "(.*?)"/g)
const strArr = []
for (const item of group) {
strArr.push(item[1])
strArr.push(item[2])
}
let imgarr = JSON.parse(strArr[0])
const josnRes = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)('get', this.homepage + 'js/config.js')
const josnContext = josnRes.responseText
const imageDomian = josnContext.match(/"domain":\["(.*?)"]/)[1]
imgarr = imgarr.map((item) => {
if (imgarr[0].search('http') === -1) {
return imageDomian + '/' + strArr[1] + item
}
return item
})
return imgarr
}
},
{
domain: ['cn.baozimh.com', 'WWW.baozimh.com'],
homepage: 'https://cn.baozimh.com/',
webName: '包子漫画',
comicNameCss: 'h1.comics-detail__title',
chapterCss: '.comics-detail > .l-content:nth-of-type(3) #chapter-items',
chapterCss_2: '.comics-detail > .l-content:nth-of-type(3) .pure-g',
readtype: 1,
searchTemplate_1: {
search_add_url: 'search/?keyword=',
alllist_dom_css: '.pure-g.classify-items',
minlist_dom_css: 'div.comics-card',
img_reg: /src=('|")(.*?)\?/,
match_reg_num: 2
},
getImgs: async function(context, processData) {
const imgArray = []
const nextReg = /next_chapter"><a href="(.*)?"[\s\S]{1,10}点击进入下一页/
let hasNext = false
let nextHtml = ''
do {
const group = context.matchAll(/<img.*src="(.*?)"/g)
for (const item of group) {
if (!imgArray.includes(item[1])) {
imgArray.push(item[1])
}
}
hasNext = nextReg.test(context)
if (hasNext) {
nextHtml = context.match(nextReg)[1]
const { responseText } = await (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY)('get', nextHtml)
context = responseText
}
} while (hasNext)
return imgArray
}
},
{
domain: 'www.guoman.net',
homepage: 'https://www.guoman.net/',
webName: '爱国漫',
comicNameCss: '.detail-info > .detail-info-title',
chapterCss: '#chapterlistload',
readtype: 1,
getImgs: async function(context) {
const group = context.matchAll(/<img.*src="(.*?)"/g)
const imgArray = []
for (const item of group) {
imgArray.push(item[1])
}
return imgArray
}
},
{
domain: ['zcymh.com', 'www.zcymh.com'],
homepage: 'https://zcymh.com/',
webName: '最次元',
comicNameCss: 'h1',
chapterCss: '#detail-chapter .bd',
readtype: 1,
getImgs: async function(context) {
const group = context.matchAll(/chapter-pid="[\s\S]*?<img src="(.*?)"/g)
const imgArray = []
for (const item of group) {
imgArray.push(item[1])
}
return imgArray
}
},
{
domain: 'www.kanman.com',
homepage: 'https://www.kanman.com/',
webName: '看漫画',
comicNameCss: 'h1.title',
chapterCss: '#j_chapter_list',
readtype: 1,
getImgs: async function(context) {
const imgStr = context.match(/chapter_img_list:(\[.*?\])/)[1]
let imgArray = eval(imgStr)
imgArray = imgArray.map(element => {
element = element.replace('hw-chapter2', 'hw-chapter3')
return element
})
return imgArray
}
},
{
domain: 'www.kuaikanmanhua.com',
homepage: 'https://www.kuaikanmanhua.com/',
webName: '快看漫画',
comicNameCss: 'h3.title',
chapterCss: '.episode-title',
readtype: 1,
hasSpend: true,
useFrame: true,
getComicInfo: async function() {
const list = unsafeWindow.__NUXT__.data[0].comics
const comicName = unsafeWindow.__NUXT__.data[0].topicInfo.title
const newList = []
list.forEach(element => {
const url = `https://www.kuaikanmanhua.com/web/comic/${element.id}/`
const data = {
comicName: comicName,
chapterName: element.title,
chapterNumStr: '',
url,
readtype: this.readtype,
isPay: element.locked,
isSelect: false
}
newList.push(data)
})
return newList
},
getImgs: async function(context, processData) {
const str = document.getElementById(processData.frameId).contentDocument.body.outerHTML
const data = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(str, /(function.*}})(\(.*)\);<\/script>/g)
let comicImages = data.data[0].comicInfo.comicImages
const imgarr = []
if (!comicImages) {
comicImages = data.data[0].imgList
}
comicImages.forEach(element => {
imgarr.push(element.url)
})
document.getElementById(processData.frameId).remove()
return imgarr
}
},
{
domain: 'm.kuaikanmanhua.com',
homepage: 'https://m.kuaikanmanhua.com/',
webName: '快看漫画m',
comicNameCss: '.mask p.title',
chapterCss: '',
readtype: 1,
hasSpend: true,
showInList: false,
useFrame: true,
getComicInfo: async function() {
const code = document.body.outerHTML.match(/\(function\(a,b,c.*?(\)\))/g)[0]
const data = eval(code)
const list = data.data[0].comicList
const comicName = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .trimSpecial */ .Sc)(data.data[0].topicInfo.title)
const newlist = list.map((item) => {
return {
comicName: comicName,
chapterName: (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .trimSpecial */ .Sc)(item.title),
chapterNumStr: '',
url: 'https://m.kuaikanmanhua.com/mobile/comics/' + item.id,
readtype: 1,
isPay: !item.is_free,
isSelect: false
}
})
return newlist
},
getImgs: async function(context, processData) {
const str = document.getElementById(processData.frameId).contentDocument.body.outerHTML
const data = (0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData */ .D)(str, /(function.*}})(\(.*)\);<\/script>/g)
let comicImages = data.data[0].comicInfo.comicImages
const imgarr = []
if (!comicImages) {
comicImages = data.data[0].imgList
}
comicImages.forEach(element => {
imgarr.push(element.url)
})
document.getElementById(processData.frameId).remove()
return imgarr
}
},
{
domain: 'www.manhua88888.com',
homepage: 'https://www.manhua88888.com/',
webName: '好漫8',
comicNameCss: '.content .title',
chapterCss: '#j_chapter_list',
readtype: 1,
getImgs: function(context) {
const group = context.matchAll(/data-echo="(.*?)"/g)
const imgArray = []
for (const item of group) {
imgArray.push(item[1])
}
return imgArray
}
}
]
const getWebList = () => {
const userWebInfo = eval((0,_config_setup__WEBPACK_IMPORTED_MODULE_1__/* .getStorage */ .cF)('userWebInfo') || [])
const originalInfo = comicsWebInfo
return { originalInfo, userWebInfo }
}
let currentComics = null
// 网站匹配
const matchWeb = (url) => {
let hname = ''
var domain = url.split('/')
if (domain[2]) {
hname = domain[2]
} else {
hname = ''
}
// 原漫画列表匹配
for (let i = 0; i < comicsWebInfo.length; i++) {
if (hname.includes(comicsWebInfo[i].domain)) {
currentComics = comicsWebInfo[i]
break
}
if ((0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .getType */ .oL)(comicsWebInfo[i].domain) === 'Array') {
if (comicsWebInfo[i].domain.includes(hname)) {
currentComics = comicsWebInfo[i]
break
}
}
}
// 导入规则列表匹配
if (currentComics === null) {
const userWebInfo = eval((0,_config_setup__WEBPACK_IMPORTED_MODULE_1__/* .getStorage */ .cF)('userWebInfo') || [])
for (let a = 0; a < userWebInfo.length; a++) {
if (hname.includes(userWebInfo[a].domain)) {
currentComics = userWebInfo[a]
break
}
if ((0,_utils_index__WEBPACK_IMPORTED_MODULE_0__/* .getType */ .oL)(comicsWebInfo[i].domain) === 'Array') {
if (comicsWebInfo[i].domain.includes(hname)) {
currentComics = comicsWebInfo[i]
break
}
}
}
if (currentComics !== null && typeof currentComics.getImgs === 'string') {
window.request = _utils_index__WEBPACK_IMPORTED_MODULE_0__/* .request */ .WY
currentComics.getImgs = funSplicing(currentComics.getImgs)
}
}
}
function funSplicing(funStr) {
const getImgsGroup = funStr.match(/((async )?function\(.*{)([\s\S]*)/)
const funHead = getImgsGroup[1]
const funTail = getImgsGroup[3]
let insertCode = ''
if (funStr.includes('funstrToData')) {
insertCode = insertCode + _utils_index__WEBPACK_IMPORTED_MODULE_0__/* .funstrToData.toString */ .D.toString() + '\n'
}
if (funStr.includes('request')) {
insertCode = insertCode + 'const request = window.request' + '\n'
}
const code = `
(function(){
return ${funHead}
// 注入开始
${insertCode}
// 注入结束
${funTail}
})()`
const fun = eval(code)
// console.log('fun: ', fun.toString())
return fun
}
/***/ }),
/***/ 624:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "D": () => (/* binding */ funstrToData),
/* harmony export */ "HM": () => (/* binding */ loadStyle2),
/* harmony export */ "Sc": () => (/* binding */ trimSpecial),
/* harmony export */ "U3": () => (/* binding */ parseToDOM),
/* harmony export */ "WY": () => (/* binding */ request),
/* harmony export */ "Xr": () => (/* binding */ loadStyle),
/* harmony export */ "gJ": () => (/* binding */ getImage),
/* harmony export */ "gw": () => (/* binding */ delay),
/* harmony export */ "m1": () => (/* binding */ getdomain),
/* harmony export */ "oL": () => (/* binding */ getType),
/* harmony export */ "qs": () => (/* binding */ startScroll),
/* harmony export */ "w1": () => (/* binding */ doThingsEachSecond),
/* harmony export */ "xo": () => (/* binding */ addZeroForNum),
/* harmony export */ "zd": () => (/* binding */ downFile)
/* harmony export */ });
/* unused harmony export getCookie */
/* harmony import */ var _utils_comics__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(872);
/* harmony import */ var _config_setup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(393);
const loadStyle = (url, name, text) => {
const head = document.getElementsByTagName('head')[0]
const style = document.createElement('style')
style.name = name
style.id = name
style.innerText = text
head.appendChild(style)
}
const loadStyle2 = (url) => {
return new Promise((resolve, reject) => {
const head = document.getElementsByTagName('head')[0]
const link = document.createElement('link')
link.rel = 'stylesheet'
link.type = 'text/css'
link.href = url
link.media = 'all'
head.appendChild(link)
setTimeout(() => {
resolve(true)
}, 1200)
})
}
function trimSpecial(string) {
if (string !== '') {
const pattern = /[`~!@#$^\&*|{}'<>?:;~']/g
string = string.replace(pattern, '')
string = string.replace(/\n|\r/g, '').trim()
}
return string
}
const getType = (obj) => {
const type = typeof obj
if (type !== 'object') {
return type
}
return Object.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1')
}
const getFrameContent = async(id, url) => {
const iframePromise = new Promise((resolve, reject) => {
const iframe = document.createElement('iframe')
iframe.id = id
iframe.height = 150
iframe.class = '10comicframe'
iframe.style.visibility = 'hidden'
iframe.src = url
document.body.appendChild(iframe)
if (iframe.attachEvent) {
iframe.attachEvent('onload', function() {
resolve(iframe.contentDocument.body.outerHTML)
})
} else {
iframe.onload = function() {
resolve(iframe.contentDocument.body.outerHTML)
}
}
})
return new Promise((resolve, reject) => {
iframePromise.then(
(success) => {
resolve(success)
},
error => {
console.log(error)
reject('')
}
)
})
}
const getImage = async(processData) => {
try {
const url = processData.url
let response = ''
// 获取网页内容
if (!_utils_comics__WEBPACK_IMPORTED_MODULE_0__/* .currentComics.useFrame */ .Po.useFrame) {
const data = await request({ method: 'get', url, useCookie: processData.isPay })
response = data.response
} else {
const arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'g', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
const random1 = Math.round(Math.random() * 25) + 0
const random2 = Math.round(Math.random() * 25) + 0
const id = 'ifr' + new Date().getTime() + arr[random1] + arr[random2]
response = await getFrameContent(id, url)
processData.frameId = id
}
const imgs = await _utils_comics__WEBPACK_IMPORTED_MODULE_0__/* .currentComics.getImgs */ .Po.getImgs(response, processData)
return new Promise((resolve, reject) => {
resolve(imgs)
})
} catch (error) {
console.log('getImageError: ', error)
return new Promise((resolve, reject) => {
reject([])
})
}
}
const request = async function request(...details) {
let method, url, data, headers, responseType, timeout, useCookie, cookie, onload, onerror, ontimeout, tail
// 只有一个参数
if (details.length === 1) {
({ method, url, data, headers, responseType, timeout, useCookie, onload, onerror, ontimeout } = details[0])
useCookie ? cookie = document.cookie : ''
} else { // 含多个参数时 [*method, *url, data, headers]
[method, url, ...tail] = details
if (tail) {
tail.length > 0 ? (data = tail[0]) : ''
tail.length > 1 ? (headers = tail[1]) : ''
}
}
// 设置currentComics中的 headers
if (!headers && _utils_comics__WEBPACK_IMPORTED_MODULE_0__/* .currentComics */ .Po !== null) {
headers = _utils_comics__WEBPACK_IMPORTED_MODULE_0__/* .currentComics.headers */ .Po.headers
}
// 无效地址
if (url === null || url === '') {
return new Promise((resolve, reject) => {
resolve('')
})
}
return new Promise((resolve, reject) => {
// eslint-disable-next-line no-undef
GM_xmlhttpRequest({
method,
url,
headers: (headers || ''),
data: (data || null),
responseType,
timeout: (timeout || 30 * 1000),
cookie: (cookie || ''),
onload: (onload || function(res) {
resolve(res)
}),
onerror: (onerror || function(e) {
console.log('request-e: ', e)
resolve('onerror')
}),
ontimeout: (ontimeout || function() {
console.log('ontimeout: ', ontimeout)
resolve('timeout')
})
})
})
}
let rootDir = '10Comic'
try {
rootDir = (0,_config_setup__WEBPACK_IMPORTED_MODULE_1__/* .getStorage */ .cF)('rootDir')
} catch (error) {
//
}
const downFile = async(...detail) => {
let url, name, headers, onload, onerror, ontimeout
if (detail.length === 1) {
({ url, name, headers, onload, onerror, ontimeout } = detail[0])
} else {
url = detail[0]
name = detail[1]
}
name = name.replace(/\s+/ig, ' ')
return new Promise((resolve, reject) => {
// eslint-disable-next-line no-undef
GM_download({
url,
name: rootDir + '\\' + name,
headers: headers,
onload: (onload || function(res) {
resolve(true)
}),
onerror: (onerror || function(e) {
console.log('downFile-e: ', e)
resolve(false)
}),
ontimeout: (ontimeout || function() {
resolve(false)
})
})
})
}
const addZeroForNum = (num, bitNum) => {
let newNum = num + ''
if (newNum.length < bitNum) {
const zeroStr = new Array(bitNum + 1).join('0')
newNum = zeroStr + newNum
newNum = newNum.slice(-bitNum)
return newNum
}
return newNum
}
// 网站匹配
const getdomain = (url) => {
if (!url) {
url = window.location.href
}
let hname = ''
var domain = url.split('/')
if (domain[2]) {
hname = domain[2]
} else {
hname = ''
}
return hname
}
const parseToDOM = (str) => {
var div = document.createElement('div')
if (typeof str === 'string') {
div.innerHTML = str
}
return div
}
function delay(n) {
return new Promise(function(resolve) {
setTimeout(resolve, n * 1000)
})
}
// 在规定时间内坚持做某事,直到事情成功为止
// @param {num, func} (secondNum, somethimefunc)
// * secondNum 秒数
// * somethimefunc 事情函数,执行时返回值为“true”代表成功了
async function doThingsEachSecond(secondNum, somethimefunc) {
let i = 0; let res
do {
res = somethimefunc()
if (res) {
i = secondNum // res 成功了,还没有结束,偷偷改个时间吧
} else {
await delay(1)
}
i++
} while (i < secondNum)
}
// 窗口滚动
// @param {window, funcArray} (scrollWindow, conditions)
// * scrollWindow 滚动窗口
// * conditions 结束滚动窗口条件函数数组
async function startScroll(scrollWindow, conditions) {
return new Promise((resolve, reject) => {
const id = setInterval(function() {
scrollWindow.scrollBy(0, 50)
conditions.forEach((func, index) => {
// 执行func
if (func()) {
clearInterval(id)
resolve([id, `condition_${index + 1}`])
}
})
}, 200)
})
}
const funstrToData = function funstrToData(str, reg) {
const group = str.matchAll(reg)
const func = []
for (const item of group) {
// 匿名函数主体
// function (str){
// console.log(str);
// }
func.push(item[1])
// 函数 执行参数部分
func.push(item[2]) // ("aaaaa")
}
// 如没有 参数
if (!func[1]) {
func[1] = '()'
}
const code = '(' + func[0] + ')' + func[1]
// code =>
// (function (str){
// //此时会输出 aaaaa
// console.log(str);
// })("aaaaa")
// eslint-disable-next-line no-eval
const data = eval(code)
return data
}
const getCookie = (cookieName) => {
const strCookie = document.cookie
const cookieList = strCookie.split(';')
for (let i = 0; i < cookieList.length; i++) {
const arr = cookieList[i].split('=')
if (cookieName === arr[0].trim()) {
return arr[1]
}
}
return ''
}
/***/ }),
/***/ 871:
/***/ ((module) => {
module.exports = vant;
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ id: moduleId,
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter = module && module.__esModule ?
/******/ () => (module['default']) :
/******/ () => (module);
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/create fake namespace object */
/******/ (() => {
/******/ var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);
/******/ var leafPrototypes;
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 16: return value when it's Promise-like
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = this(value);
/******/ if(mode & 8) return value;
/******/ if(typeof value === 'object' && value) {
/******/ if((mode & 4) && value.__esModule) return value;
/******/ if((mode & 16) && typeof value.then === 'function') return value;
/******/ }
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ var def = {};
/******/ leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];
/******/ for(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {
/******/ Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));
/******/ }
/******/ def['default'] = () => (value);
/******/ __webpack_require__.d(ns, def);
/******/ return ns;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/nonce */
/******/ (() => {
/******/ __webpack_require__.nc = undefined;
/******/ })();
/******/
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
(() => {
;// CONCATENATED MODULE: external "Vue"
const external_Vue_namespaceObject = Vue;
var external_Vue_default = /*#__PURE__*/__webpack_require__.n(external_Vue_namespaceObject);
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/app.vue?vue&type=template&id=5ef48958&scoped=true&
var render = function () {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"div",
{ staticClass: "yi-ling-app" },
[
_c(
"div",
{
staticClass: "card",
class: { "card--hide": _vm.isHide },
attrs: { id: "app-right" },
},
[
_c(
"div",
[
_c("van-nav-bar", {
attrs: { id: "border-top-set", title: _vm.titles[this.active] },
}),
_vm._v(" "),
_c(
"van-swipe",
{
ref: "swipe",
staticClass: "my-swipe",
staticStyle: { cursor: "default" },
attrs: {
"indicator-color": "white",
touchable: false,
duration: 5,
"initial-swipe": _vm.active,
"show-indicators": false,
},
},
[
_c(
"van-swipe-item",
{ staticClass: "swipeitem" },
[_c("Home")],
1
),
_vm._v(" "),
_c(
"van-swipe-item",
{ staticClass: "swipeitem" },
[_c("Table")],
1
),
_vm._v(" "),
_c(
"van-swipe-item",
{ staticClass: "swipeitem" },
[_c("Down")],
1
),
_vm._v(" "),
_c(
"van-swipe-item",
{ staticClass: "swipeitem" },
[_c("Setting")],
1
),
],
1
),
_vm._v(" "),
_c(
"div",
{ staticClass: "app-container " },
[
_c(
"van-tabbar",
{
staticStyle: { position: "absolute" },
attrs: {
id: "border-bottom-set",
"active-color": "#ee0000",
"inactive-color": "#000",
},
model: {
value: _vm.active,
callback: function ($$v) {
_vm.active = $$v
},
expression: "active",
},
},
[
_c("van-tabbar-item", { attrs: { icon: "home-o" } }),
_vm._v(" "),
_c("van-tabbar-item", { attrs: { icon: "todo-list-o" } }),
_vm._v(" "),
_c("van-tabbar-item", { attrs: { icon: "underway-o" } }),
_vm._v(" "),
_c("van-tabbar-item", { attrs: { icon: "setting-o" } }),
],
1
),
],
1
),
_vm._v(" "),
_c("div", { staticClass: "card__btn", on: { click: _vm.hide } }, [
_c(
"svg",
{
staticClass: "icon",
attrs: {
t: "1663828267105",
viewBox: "0 0 1024 1024",
version: "1.1",
"p-id": "2601",
},
},
[
_c("path", {
attrs: {
d: "M312.888889 995.555556c-17.066667 0-28.444444-5.688889-39.822222-17.066667-22.755556-22.755556-17.066667-56.888889 5.688889-79.644445l364.088888-329.955555c11.377778-11.377778 17.066667-22.755556 17.066667-34.133333 0-11.377778-5.688889-22.755556-17.066667-34.133334L273.066667 187.733333c-22.755556-22.755556-28.444444-56.888889-5.688889-79.644444 22.755556-22.755556 56.888889-28.444444 79.644444-5.688889l364.088889 312.888889c34.133333 28.444444 56.888889 73.955556 56.888889 119.466667s-17.066667 85.333333-51.2 119.466666l-364.088889 329.955556c-11.377778 5.688889-28.444444 11.377778-39.822222 11.377778z",
"p-id": "2134",
fill: "#ee000088",
},
}),
]
),
]),
],
1
),
]
),
_vm._v(" "),
_c("Search"),
],
1
)
}
var staticRenderFns = []
render._withStripped = true
;// CONCATENATED MODULE: ./src/app.vue?vue&type=template&id=5ef48958&scoped=true&
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/home.vue?vue&type=template&id=7eb2bc79&scoped=true&
var homevue_type_template_id_7eb2bc79_scoped_true_render = function () {
var this$1 = this
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"div",
{ staticClass: "homeindex" },
[
_c(
"div",
{
style: {
position: "relative",
margin: "-5px 0 2px 15px",
zIndex: 999999,
},
attrs: { id: "selectId" },
on: { mouseleave: _vm.leaveCollapse },
},
[
_c(
"van-collapse",
{
staticStyle: { width: "200px" },
model: {
value: _vm.activeNames,
callback: function ($$v) {
_vm.activeNames = $$v
},
expression: "activeNames",
},
},
[
_c(
"van-collapse-item",
{
staticClass: "xxx",
attrs: { title: _vm.checkTitle, name: "1" },
},
[
_c(
"div",
{
on: {
click: function ($event) {
return _vm.checkContent(1, "原列表")
},
},
},
[_vm._v("原列表")]
),
_vm._v(" "),
_c("br"),
_vm._v(" "),
_c(
"div",
{
on: {
click: function ($event) {
return _vm.checkContent(2, "导入规则列表")
},
},
},
[_vm._v("导入规则列表")]
),
]
),
],
1
),
_vm._v(" "),
_c("van-icon", {
attrs: {
id: "search-ico",
name: "search",
size: "30",
color: "#ee0000",
},
on: {
click: function () {
this$1.$bus.$emit("showSearchPage")
},
},
}),
],
1
),
_vm._v(" "),
_vm.checkValue == 1
? _c(
"van-cell-group",
{ attrs: { inset: "" } },
_vm._l(_vm.originalInfo, function (item, index) {
return _c("van-cell", {
key: index,
attrs: { "is-link": "" },
on: {
click: function ($event) {
return _vm.jump(item.homepage)
},
},
scopedSlots: _vm._u(
[
{
key: "title",
fn: function () {
return [
_c("span", [_vm._v(_vm._s(item.webName))]),
_vm._v(" "),
item.webDesc
? _c("van-icon", {
attrs: {
title: item.webDesc,
name: "info-o",
color: "red",
},
})
: _vm._e(),
]
},
proxy: true,
},
],
null,
true
),
})
}),
1
)
: _vm._e(),
_vm._v(" "),
_vm.checkValue == 2
? _c(
"div",
[
_c(
"van-cell-group",
{ attrs: { inset: "" } },
_vm._l(_vm.userWebInfo, function (item, index) {
return _c("van-cell", {
key: index,
attrs: { "is-link": "" },
on: {
click: function ($event) {
return _vm.jump(item.homepage)
},
},
scopedSlots: _vm._u(
[
{
key: "title",
fn: function () {
return [
_c("span", [_vm._v(_vm._s(item.webName))]),
_vm._v(" "),
item.webDesc
? _c("van-icon", {
attrs: {
title: item.webDesc,
name: "info-o",
color: "red",
},
})
: _vm._e(),
]
},
proxy: true,
},
],
null,
true
),
})
}),
1
),
],
1
)
: _vm._e(),
],
1
)
}
var homevue_type_template_id_7eb2bc79_scoped_true_staticRenderFns = []
homevue_type_template_id_7eb2bc79_scoped_true_render._withStripped = true
;// CONCATENATED MODULE: ./src/views/home.vue?vue&type=template&id=7eb2bc79&scoped=true&
// EXTERNAL MODULE: ./src/utils/comics.js
var comics = __webpack_require__(872);
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/home.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ const homevue_type_script_lang_js_ = ({
name: 'Index',
data() {
return {
originalInfo: [],
userWebInfo: [],
//
activeNames: [1],
checkValue: 1,
checkTitle: '原列表'
}
},
created() {
this.getWeb()
},
mounted() {
this.$bus.$on('getWeb', this.getWeb)
},
methods: {
getWeb() {
const { originalInfo, userWebInfo } = (0,comics/* getWebList */.eT)()
this.originalInfo = originalInfo.filter((item) => { return item.showInList !== false })
this.userWebInfo = userWebInfo
},
checkContent(val, title) {
this.checkValue = val
this.checkTitle = title
this.activeNames = []
},
leaveCollapse() {
this.activeNames = []
},
jump(url) {
window.open(url, '_blank')
// window.location.href = url
}
}
});
;// CONCATENATED MODULE: ./src/views/home.vue?vue&type=script&lang=js&
/* harmony default export */ const views_homevue_type_script_lang_js_ = (homevue_type_script_lang_js_);
// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js
var injectStylesIntoStyleTag = __webpack_require__(379);
var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag);
// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/styleDomAPI.js
var styleDomAPI = __webpack_require__(795);
var styleDomAPI_default = /*#__PURE__*/__webpack_require__.n(styleDomAPI);
// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/insertBySelector.js
var insertBySelector = __webpack_require__(569);
var insertBySelector_default = /*#__PURE__*/__webpack_require__.n(insertBySelector);
// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js
var setAttributesWithoutAttributes = __webpack_require__(565);
var setAttributesWithoutAttributes_default = /*#__PURE__*/__webpack_require__.n(setAttributesWithoutAttributes);
// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/insertStyleElement.js
var insertStyleElement = __webpack_require__(216);
var insertStyleElement_default = /*#__PURE__*/__webpack_require__.n(insertStyleElement);
// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/styleTagTransform.js
var styleTagTransform = __webpack_require__(589);
var styleTagTransform_default = /*#__PURE__*/__webpack_require__.n(styleTagTransform);
// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/home.vue?vue&type=style&index=0&id=7eb2bc79&lang=less&scoped=true&
var homevue_type_style_index_0_id_7eb2bc79_lang_less_scoped_true_ = __webpack_require__(782);
;// CONCATENATED MODULE: ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/home.vue?vue&type=style&index=0&id=7eb2bc79&lang=less&scoped=true&
var options = {};
options.styleTagTransform = (styleTagTransform_default());
options.setAttributes = (setAttributesWithoutAttributes_default());
options.insert = insertBySelector_default().bind(null, "head");
options.domAPI = (styleDomAPI_default());
options.insertStyleElement = (insertStyleElement_default());
var update = injectStylesIntoStyleTag_default()(homevue_type_style_index_0_id_7eb2bc79_lang_less_scoped_true_/* default */.Z, options);
/* harmony default export */ const views_homevue_type_style_index_0_id_7eb2bc79_lang_less_scoped_true_ = (homevue_type_style_index_0_id_7eb2bc79_lang_less_scoped_true_/* default */.Z && homevue_type_style_index_0_id_7eb2bc79_lang_less_scoped_true_/* default.locals */.Z.locals ? homevue_type_style_index_0_id_7eb2bc79_lang_less_scoped_true_/* default.locals */.Z.locals : undefined);
;// CONCATENATED MODULE: ./src/views/home.vue?vue&type=style&index=0&id=7eb2bc79&lang=less&scoped=true&
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
/* globals __VUE_SSR_CONTEXT__ */
// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
// This module is a runtime utility for cleaner component module output and will
// be included in the final webpack user bundle.
function normalizeComponent (
scriptExports,
render,
staticRenderFns,
functionalTemplate,
injectStyles,
scopeId,
moduleIdentifier, /* server only */
shadowMode /* vue-cli only */
) {
// Vue.extend constructor export interop
var options = typeof scriptExports === 'function'
? scriptExports.options
: scriptExports
// render functions
if (render) {
options.render = render
options.staticRenderFns = staticRenderFns
options._compiled = true
}
// functional template
if (functionalTemplate) {
options.functional = true
}
// scopedId
if (scopeId) {
options._scopeId = 'data-v-' + scopeId
}
var hook
if (moduleIdentifier) { // server build
hook = function (context) {
// 2.3 injection
context =
context || // cached call
(this.$vnode && this.$vnode.ssrContext) || // stateful
(this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
// 2.2 with runInNewContext: true
if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
context = __VUE_SSR_CONTEXT__
}
// inject component styles
if (injectStyles) {
injectStyles.call(this, context)
}
// register component module identifier for async chunk inferrence
if (context && context._registeredComponents) {
context._registeredComponents.add(moduleIdentifier)
}
}
// used by ssr in case component is cached and beforeCreate
// never gets called
options._ssrRegister = hook
} else if (injectStyles) {
hook = shadowMode
? function () {
injectStyles.call(
this,
(options.functional ? this.parent : this).$root.$options.shadowRoot
)
}
: injectStyles
}
if (hook) {
if (options.functional) {
// for template-only hot-reload because in that case the render fn doesn't
// go through the normalizer
options._injectStyles = hook
// register for functional component in vue file
var originalRender = options.render
options.render = function renderWithStyleInjection (h, context) {
hook.call(context)
return originalRender(h, context)
}
} else {
// inject component registration as beforeCreate hook
var existing = options.beforeCreate
options.beforeCreate = existing
? [].concat(existing, hook)
: [hook]
}
}
return {
exports: scriptExports,
options: options
}
}
;// CONCATENATED MODULE: ./src/views/home.vue
;
/* normalize component */
var component = normalizeComponent(
views_homevue_type_script_lang_js_,
homevue_type_template_id_7eb2bc79_scoped_true_render,
homevue_type_template_id_7eb2bc79_scoped_true_staticRenderFns,
false,
null,
"7eb2bc79",
null
)
/* hot reload */
if (false) { var api; }
component.options.__file = "src/views/home.vue"
/* harmony default export */ const home = (component.exports);
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/table.vue?vue&type=template&id=657d4b24&scoped=true&
var tablevue_type_template_id_657d4b24_scoped_true_render = function () {
var this$1 = this
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"div",
{ ref: "comiclist", staticClass: "comiclist" },
[
_c(
"van-popup",
{
style: {
position: "absolute",
width: "100%",
height: "40%",
borderTop: "1px solid #fcadad",
marginTop: "-15px",
},
attrs: {
"get-container": "#chapterpage",
round: "",
position: "top",
},
model: {
value: _vm.show,
callback: function ($$v) {
_vm.show = $$v
},
expression: "show",
},
},
[
_c(
"van-cell-group",
{
style: {
display: "flex",
flexDirection: "column",
width: "350px",
margin: "10px auto",
},
attrs: { title: "选项", inset: "" },
},
[
_c(
"label",
{
staticStyle: {
"margin-top": "5px",
"margin-left": "16px",
"text-align": "left",
},
},
[_vm._v("本次下载(临时更改)")]
),
_vm._v(" "),
_c("van-cell", {
attrs: { title: "" },
scopedSlots: _vm._u([
{
key: "right-icon",
fn: function () {
return [
_c("br"),
_vm._v(" "),
_c(
"van-radio-group",
{
attrs: { direction: "horizontal" },
model: {
value: _vm.downType,
callback: function ($$v) {
_vm.downType = $$v
},
expression: "downType",
},
},
[
_c("van-radio", { attrs: { name: 0 } }, [
_vm._v("直接下载"),
]),
_vm._v(" "),
_c("van-radio", { attrs: { name: 1 } }, [
_vm._v("压缩下载"),
]),
_vm._v(" "),
_c(
"van-radio",
{
attrs: {
name: 2,
title: "拼接后单张高度不超过 10000 像素",
},
},
[
_vm._v("拼接下载"),
_c("van-icon", {
attrs: { name: "info-o", color: "red" },
}),
],
1
),
],
1
),
]
},
proxy: true,
},
]),
}),
_vm._v(" "),
_c("van-cell", [
_c(
"div",
{
style: { display: "flex", justifyContent: "space-between" },
},
[
_c(
"van-checkbox",
{
attrs: { "label-position": "left" },
on: { change: _vm.characterSequenceChange },
model: {
value: _vm.useCharacterNum,
callback: function ($$v) {
_vm.useCharacterNum = $$v
},
expression: "useCharacterNum",
},
},
[_vm._v("章节补充序号\n ")]
),
_vm._v(" "),
_c(
"van-checkbox",
{
attrs: {
disabled: !_vm.useCharacterNum,
"label-position": "left",
},
on: { change: _vm.characterSequenceChange },
model: {
value: _vm.characterNumSequence,
callback: function ($$v) {
_vm.characterNumSequence = $$v
},
expression: "characterNumSequence",
},
},
[_vm._v("—序号反序\n ")]
),
],
1
),
]),
_vm._v(" "),
_c(
"div",
{
staticStyle: {
"margin-top": "8px",
display: "flex",
height: "25px",
"line-height": "25px",
"justify-content": "space-between",
},
},
[
_c(
"label",
{
staticStyle: {
"margin-left": "16px",
"text-align": "left",
},
attrs: { for: "" },
},
[_vm._v("下载当前阅读章节 (测试)")]
),
_vm._v(" "),
_c(
"van-button",
{
attrs: { type: "default", size: "mini" },
on: { click: _vm.getCurrentWebData },
},
[_vm._v("获取")]
),
],
1
),
_vm._v(" "),
_c("van-cell", {
staticStyle: { "padding-top": "0px" },
attrs: { title: "" },
scopedSlots: _vm._u([
{
key: "right-icon",
fn: function () {
return [
_c("van-field", {
attrs: {
name: "defineComicName",
placeholder: "漫画名",
},
model: {
value: _vm.defineComicName,
callback: function ($$v) {
_vm.defineComicName = $$v
},
expression: "defineComicName",
},
}),
_vm._v(" "),
_c("van-field", {
attrs: {
name: "definechapterName",
placeholder: "章节名",
},
model: {
value: _vm.definechapterName,
callback: function ($$v) {
_vm.definechapterName = $$v
},
expression: "definechapterName",
},
}),
]
},
proxy: true,
},
]),
}),
],
1
),
],
1
),
_vm._v(" "),
_c(
"div",
{ attrs: { id: "editItem" } },
[
_c(
"div",
[
_c(
"van-button",
{
attrs: { size: "mini", disabled: !_vm.showSelectList },
on: { click: _vm.selectAll },
},
[_vm._v("全选")]
),
_vm._v(" "),
_c(
"van-button",
{
attrs: { size: "mini", disabled: !_vm.showSelectList },
on: { click: _vm.CancelSelect },
},
[_vm._v("取消")]
),
],
1
),
_vm._v(" "),
_c(
"div",
{ staticClass: "editItem-center" },
[
_vm._v("\n 选\n "),
_c("van-icon", {
style: { cursor: "pointer" },
attrs: { name: "more-o", color: "#ee0000", size: "25" },
on: {
click: function () {
this$1.show = !this$1.show
},
},
}),
_vm._v(" 项\n "),
],
1
),
_vm._v(" "),
_c(
"van-button",
{
staticStyle: { width: "80px" },
attrs: { size: "mini", round: "", disabled: !_vm.showSelectList },
on: { click: _vm.downSelectList },
},
[_vm._v("下载")]
),
],
1
),
_vm._v(" "),
_c(
"van-divider",
{
style: {
color: "#1989fa",
borderColor: "#1989fa",
padding: "0 15px",
height: "10px",
},
},
[
_c(
"code",
{
staticStyle: { cursor: "pointer" },
on: { click: _vm.reloadList },
},
[_vm._v("重载列表")]
),
]
),
_vm._v(" "),
!_vm.showSelectList
? _c(
"div",
[
_c(
"van-empty",
{ attrs: { description: "漫画章节" } },
[
_c(
"van-button",
{
staticClass: "bottom-button",
staticStyle: { width: "120px" },
attrs: {
round: "",
disabled: _vm.comicName === "------",
},
on: { click: _vm.getSelectList },
},
[_vm._v(" 加载 ")]
),
],
1
),
_vm._v(" "),
_c(
"van-cell-group",
{ attrs: { id: "comicinfo", inset: "" } },
[
_c("van-cell", {
attrs: { title: "网站", value: _vm.webname },
}),
_vm._v(" "),
_c("van-cell", {
attrs: { title: "漫画", value: _vm.comicName },
}),
],
1
),
],
1
)
: _vm._e(),
_vm._v(" "),
_c("van-overlay", { attrs: { id: "overlayDom", show: _vm.overlayShow } }),
_vm._v(" "),
_vm.showSelectList
? _c(
"div",
{
staticStyle: { "border-radius": "25px" },
attrs: { id: "select-list" },
},
[
_c("div", { attrs: { id: "select-list-top" } }, [
_c("div", { attrs: { id: "select-list-info" } }, [
_vm._m(0),
_vm._v(" "),
_c(
"div",
{ attrs: { id: "select-list-info-right" } },
[
_c("van-icon", {
style: { cursor: "pointer" },
attrs: {
name: "edit",
color: "#66ccff",
size: "18",
title: "编辑",
},
on: { click: _vm.editList },
}),
_vm._v(" "),
_c("van-icon", {
style: { cursor: "pointer" },
attrs: {
name: "sort",
color: "#ee000088",
size: "18",
title: "排序",
},
on: { click: _vm.reverseList },
}),
],
1
),
]),
_vm._v(" "),
_c(
"div",
{
directives: [
{
name: "show",
rawName: "v-show",
value: _vm.isEditList,
expression: "isEditList",
},
],
attrs: { id: "select-show-edit" },
},
[
_c(
"div",
{
staticStyle: {
display: "flex",
"align-items": "center",
},
},
[
_c(
"label",
{
staticStyle: {
"text-align": "left",
"margin-right": "20px",
},
attrs: { for: "" },
},
[_vm._v("删除所选章节首个字符")]
),
_vm._v(" "),
_c(
"van-button",
{
attrs: { type: "default", size: "mini" },
on: {
click: function ($event) {
return _vm.delOnechapterNameFont(1)
},
},
},
[_vm._v("删除")]
),
],
1
),
_vm._v(" "),
_c(
"div",
{
staticStyle: {
display: "flex",
"align-items": "center",
"margin-top": "3px",
"margin-bottom": "3px",
},
},
[
_c(
"label",
{
staticStyle: {
"text-align": "left",
"margin-right": "20px",
},
attrs: { for: "" },
},
[_vm._v("删除所选章节末尾一个字符")]
),
_vm._v(" "),
_c(
"van-button",
{
attrs: { type: "default", size: "mini" },
on: {
click: function ($event) {
return _vm.delOnechapterNameFont(-1)
},
},
},
[_vm._v("删除")]
),
],
1
),
]
),
]),
_vm._v(" "),
_c(
"div",
{ attrs: { id: "select-list-2" } },
[
_c(
"van-cell-group",
{
style: _vm.isEditList
? "max-height: 530px;"
: "max-height: 585px;",
attrs: { id: "select-list-2-1", inset: "" },
},
_vm._l(_vm.list, function (item, index) {
return _c("van-cell", {
key: index,
style: _vm.titleStyle(
item.url,
item.isPay,
item.characterType
),
attrs: {
title: _vm.showComicTitleName(
item.chapterNumStr,
item.chapterName
),
},
scopedSlots: _vm._u(
[
_vm.isEditList
? {
key: "title",
fn: function () {
return [
_c(
"div",
{
staticStyle: {
display: "flex",
"justify-content": "space-around",
},
},
[
_c(
"label",
{
attrs: {
for: item.chapterNumStr,
},
},
[_vm._v(_vm._s(item.chapterNumStr))]
),
_vm._v(" "),
_c("input", {
directives: [
{
name: "model",
rawName: "v-model",
value: item.chapterName,
expression: "item.chapterName",
},
],
staticClass: "input-chaptername",
attrs: { type: "text" },
domProps: {
value: item.chapterName,
},
on: {
input: function ($event) {
if ($event.target.composing) {
return
}
_vm.$set(
item,
"chapterName",
$event.target.value
)
},
},
}),
]
),
]
},
proxy: true,
}
: null,
{
key: "right-icon",
fn: function () {
return [
_c("van-checkbox", {
staticClass: "selectChapter",
attrs: {
name: index,
disabled:
item.url !== "javascript:void();"
? false
: true,
"icon-size": "24px",
},
on: {
click: function ($event) {
return _vm.radioSelect(
item.isSelect,
index
)
},
},
model: {
value: item.isSelect,
callback: function ($$v) {
_vm.$set(item, "isSelect", $$v)
},
expression: "item.isSelect",
},
}),
]
},
proxy: true,
},
],
null,
true
),
})
}),
1
),
],
1
),
]
)
: _vm._e(),
],
1
)
}
var tablevue_type_template_id_657d4b24_scoped_true_staticRenderFns = [
function () {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c("div", { attrs: { id: "select-list-info-left" } }, [
_c("span", [_vm._v("颜色")]),
_vm._v(" "),
_c("span", {
staticClass: "span-circle",
staticStyle: { background: "blue" },
attrs: { title: "免费" },
}),
_vm._v(" "),
_c("span", {
staticClass: "span-circle",
staticStyle: { background: "#AA6680" },
attrs: { title: "最新/其它/单行本/卷" },
}),
_vm._v(" "),
_c("span", {
staticClass: "span-circle",
staticStyle: { background: "red" },
attrs: { title: "付费" },
}),
_vm._v(" "),
_c("span", {
staticClass: "span-circle",
staticStyle: { background: "#ccc" },
attrs: { title: "无效" },
}),
])
},
]
tablevue_type_template_id_657d4b24_scoped_true_render._withStripped = true
;// CONCATENATED MODULE: ./src/views/table.vue?vue&type=template&id=657d4b24&scoped=true&
// EXTERNAL MODULE: ./src/config/setup.js
var setup = __webpack_require__(393);
// EXTERNAL MODULE: ./src/utils/index.js
var utils = __webpack_require__(624);
// EXTERNAL MODULE: external "vant"
var external_vant_ = __webpack_require__(871);
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/table.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ const tablevue_type_script_lang_js_ = ({
name: 'Table',
data() {
return {
list: [],
downResult: [],
lastSelectIndex: null,
onShfit: false,
showSelectList: false,
overlayShow: false,
show: false,
isEditList: false,
currentComics: '',
webname: '未匹配',
comicName: '------',
paylogoArr: [],
downType: 0,
useCharacterNum: false,
characterNumSequence: false,
defineComicName: '',
definechapterName: ''
}
},
computed: {
},
mounted() {
this.watchKeyEvent()
this.getInfo()
},
methods: {
titleStyle: function(url, isPay, type) {
if (url === 'javascript:void();') {
return { color: '#ccc' }
}
if (isPay === true) {
return { color: 'red' }
}
if (type === 'many') {
return { color: '#AA6680' }
}
return `color: blue`
},
showComicTitleName(numStr, name) {
let showname = ''
if (numStr !== '') {
const newname = name === '' ? '' : ('-' + name)
showname = numStr + newname
return showname
}
return name
},
editList() {
this.overlayShow = true
this.isEditList = !this.isEditList
this.overlayShow = false
},
// 删除章节一个字符
delOnechapterNameFont(pos) {
this.list.forEach((element, index) => {
if (element.isSelect === true && element.chapterName.length >= 1) {
if (pos === 1) {
element.chapterName = element.chapterName.slice(1)
} else {
element.chapterName = element.chapterName.slice(0, -1)
}
}
})
},
getInfo(times) {
try {
this.currentComics = comics/* currentComics */.Po
if (comics/* currentComics */.Po === null) {
return
}
const comicNameCss = this.currentComics.comicNameCss
this.webname = comics/* currentComics.webName */.Po.webName
this.comicName = document.querySelectorAll(comicNameCss)[0].innerText.split('\n')[0].trim()
if (this.comicName === '') {
setTimeout(() => {
this.getInfo(1)
}, 1500)
return
}
this.$bus.$emit('getComicName', this.comicName)
//
this.downType = (0,setup/* getStorage */.cF)('downType')
// eslint-disable-next-line no-empty
} catch (error) {
if (times === undefined) {
setTimeout(() => {
this.getInfo(1)
}, 1500)
}
console.log('getInfo-e: ', error)
}
this.lastSelectIndex = null
return
},
reverseList() {
this.overlayShow = true
this.list = this.list.reverse()
this.lastSelectIndex = null
this.overlayShow = false
},
selectAll() {
this.list.forEach((element, index) => {
if (element.url !== 'javascript:void();') {
element.isSelect = true
}
})
this.lastSelectIndex = null
},
CancelSelect() {
this.list.forEach((element, index) => {
element.isSelect = false
})
this.lastSelectIndex = null
},
radioSelect(isSelect, index) {
if (!isSelect) {
this.lastSelectIndex = null
return
}
let minIndex, maxIndex
if (this.lastSelectIndex < index) {
minIndex = this.lastSelectIndex
maxIndex = index
} else {
minIndex = index
maxIndex = this.lastSelectIndex
}
if (this.onShfit && this.lastSelectIndex !== null) {
for (let i = minIndex; i < maxIndex; i++) {
if (this.list[i].url !== 'javascript:void();') {
this.list[i].isSelect = true
}
}
}
this.lastSelectIndex = index
},
watchKeyEvent() {
const setKeyStatus = (keyCode, status) => {
switch (keyCode) {
case 16:
if (this.onShfit === status) return
this.onShfit = status
break
}
}
const dom = this.$refs.comiclist
dom.onkeydown = (e) => {
setKeyStatus(e.keyCode, true)
}
dom.onkeyup = (e) => {
setKeyStatus(e.keyCode, false)
}
},
async getSelectList() {
this.overlayShow = true
try {
// 优先 getComicInfo 获取章节信息
if (comics/* currentComics.getComicInfo */.Po.getComicInfo) {
const list = await comics/* currentComics.getComicInfo */.Po.getComicInfo(this.comicName)
if (list) {
this.list = list
this.overlayShow = false
this.showSelectList = true
return
}
}
setTimeout(() => {
// 单章数据
const nodeList = document.querySelectorAll(comics/* currentComics.chapterCss */.Po.chapterCss)
this.getChapterData(nodeList, comics/* currentComics */.Po, 'one')
// (如果存在)分卷数据
if (comics/* currentComics.chapterCss_2 */.Po.chapterCss_2) {
const nodeList_2 = document.querySelectorAll(comics/* currentComics.chapterCss_2 */.Po.chapterCss_2)
this.getChapterData(nodeList_2, comics/* currentComics */.Po, 'many')
}
this.overlayShow = false
this.showSelectList = true
}, 100)
} catch (error) {
console.log('getSelectList-e: ', error)
;(0,external_vant_.Toast)({
message: '网站未匹配或方法已失效',
getContainer: '.card',
position: 'bottom'
})
setTimeout(() => {
this.overlayShow = false
}, 3000)
}
},
// 获取章节数据
getChapterData(nodeList, currentComics, type) {
const hasSpend = currentComics.hasSpend
const chapterNameReg = currentComics.chapterNameReg
nodeList.forEach(dom => {
const urls = dom.querySelectorAll('a')
const readtype = currentComics.readtype
urls.forEach((element, index) => {
let chapterName = ''
try {
if (!chapterNameReg) {
chapterName = element.innerText
} else {
chapterName = element.outerHTML.match(chapterNameReg)[1]
}
chapterName = (0,utils/* trimSpecial */.Sc)(chapterName)
} catch (error) {
// console.log()
}
// 获取付费标志
let currentIsPay = false
if (hasSpend) {
const payKey = currentComics.payKey
const parent = element.parentElement
if (parent.outerHTML.indexOf(payKey) > 0) {
currentIsPay = true
} else {
currentIsPay = false
}
}
const data = {
comicName: (0,utils/* trimSpecial */.Sc)(this.comicName),
chapterNumStr: '',
chapterName,
downChapterName: '',
url: element.href,
characterType: type,
readtype,
isPay: currentIsPay,
isSelect: false
}
if (data.chapterName !== '') {
this.list.push(data)
}
})
})
},
// 已进入原网站漫画章节页面阅读,获取章节 下载
getCurrentWebData() {
if (!comics/* currentComics */.Po) {
(0,external_vant_.Toast)({
message: '未在匹配网站',
getContainer: '.card',
position: 'bottom'
})
return
}
if (this.defineComicName === '' || this.definechapterName === '') {
(0,external_vant_.Toast)({
message: '请输入名称',
getContainer: '.card',
position: 'bottom'
})
return
}
const item = {
comicName: this.defineComicName,
chapterNumStr: '',
chapterName: this.definechapterName,
downChapterName: this.definechapterName,
url: window.location.href,
characterType: 'one',
readtype: comics/* currentComics.readtype */.Po.readtype,
isPay: comics/* currentComics.hasSpend */.Po.hasSpend,
downType: this.downType,
downHeaders: comics/* currentComics.downHeaders */.Po.downHeaders
}
this.downResult.push(item)
this.$bus.$emit('selectDown', this.downResult)
this.$bus.$emit('changTab', 2)
this.downResult = []
this.show = false
},
downSelectList() {
let hasSelect = false
this.list.forEach((item, index) => {
if (item.isSelect) {
item.downType = this.downType
item.downHeaders = comics/* currentComics.downHeaders */.Po.downHeaders
if (!hasSelect && item.isSelect) {
hasSelect = true
}
if (item.chapterNumStr !== '' && item.chapterNumStr !== undefined) {
const newName = item.chapterName === '' ? '' : ('-' + item.chapterName)
item.downChapterName = item.chapterNumStr + newName
} else {
item.downChapterName = item.chapterName
}
// 下载的章节名可能修改为空,为空跳过
if (item.downChapterName !== '') {
this.downResult.push(item)
item.isSelect = false
}
}
})
if (!hasSelect) {
(0,external_vant_.Toast)({
message: '请选择章节',
getContainer: '.card',
position: 'bottom'
})
return
}
this.$bus.$emit('selectDown', this.downResult)
this.$bus.$emit('changTab', 2)
this.downResult = []
},
reloadList() {
this.list = []
this.getInfo(1)
this.getSelectList()
},
characterSequenceChange() {
if (!this.useCharacterNum) {
// 删除 前几个字符
this.list.forEach((item, index) => {
item.chapterNumStr = ''
})
return
}
if (this.characterNumSequence === true) {
const len = this.list.length
this.list.forEach((item, index) => {
item.chapterNumStr = (0,utils/* addZeroForNum */.xo)(len - index, 3)
})
} else {
this.list.forEach((item, index) => {
item.chapterNumStr = (0,utils/* addZeroForNum */.xo)(index + 1, 3)
})
}
}
}
});
;// CONCATENATED MODULE: ./src/views/table.vue?vue&type=script&lang=js&
/* harmony default export */ const views_tablevue_type_script_lang_js_ = (tablevue_type_script_lang_js_);
// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/table.vue?vue&type=style&index=0&id=657d4b24&lang=less&scoped=true&
var tablevue_type_style_index_0_id_657d4b24_lang_less_scoped_true_ = __webpack_require__(737);
;// CONCATENATED MODULE: ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/table.vue?vue&type=style&index=0&id=657d4b24&lang=less&scoped=true&
var tablevue_type_style_index_0_id_657d4b24_lang_less_scoped_true_options = {};
tablevue_type_style_index_0_id_657d4b24_lang_less_scoped_true_options.styleTagTransform = (styleTagTransform_default());
tablevue_type_style_index_0_id_657d4b24_lang_less_scoped_true_options.setAttributes = (setAttributesWithoutAttributes_default());
tablevue_type_style_index_0_id_657d4b24_lang_less_scoped_true_options.insert = insertBySelector_default().bind(null, "head");
tablevue_type_style_index_0_id_657d4b24_lang_less_scoped_true_options.domAPI = (styleDomAPI_default());
tablevue_type_style_index_0_id_657d4b24_lang_less_scoped_true_options.insertStyleElement = (insertStyleElement_default());
var tablevue_type_style_index_0_id_657d4b24_lang_less_scoped_true_update = injectStylesIntoStyleTag_default()(tablevue_type_style_index_0_id_657d4b24_lang_less_scoped_true_/* default */.Z, tablevue_type_style_index_0_id_657d4b24_lang_less_scoped_true_options);
/* harmony default export */ const views_tablevue_type_style_index_0_id_657d4b24_lang_less_scoped_true_ = (tablevue_type_style_index_0_id_657d4b24_lang_less_scoped_true_/* default */.Z && tablevue_type_style_index_0_id_657d4b24_lang_less_scoped_true_/* default.locals */.Z.locals ? tablevue_type_style_index_0_id_657d4b24_lang_less_scoped_true_/* default.locals */.Z.locals : undefined);
;// CONCATENATED MODULE: ./src/views/table.vue?vue&type=style&index=0&id=657d4b24&lang=less&scoped=true&
;// CONCATENATED MODULE: ./src/views/table.vue
;
/* normalize component */
var table_component = normalizeComponent(
views_tablevue_type_script_lang_js_,
tablevue_type_template_id_657d4b24_scoped_true_render,
tablevue_type_template_id_657d4b24_scoped_true_staticRenderFns,
false,
null,
"657d4b24",
null
)
/* hot reload */
if (false) { var table_api; }
table_component.options.__file = "src/views/table.vue"
/* harmony default export */ const table = (table_component.exports);
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/setting.vue?vue&type=template&id=234d1526&scoped=true&
var settingvue_type_template_id_234d1526_scoped_true_render = function () {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"div",
{ staticClass: "setindex" },
[
_c(
"van-swipe",
{
ref: "swipe2",
staticClass: "my-swipe",
staticStyle: { cursor: "default" },
attrs: { "initial-swipe": 0, duration: 5, "show-indicators": false },
},
[
_c("van-swipe-item", { staticClass: "swipeitem" }, [
_c(
"div",
{ attrs: { id: "setpart" } },
[
_c(
"van-cell-group",
{ attrs: { id: "app-loadset", title: "app加载", inset: "" } },
[
_c("van-cell", {
attrs: {
"title-class": "cellleftvalue",
"value-class": "cellrightvalue",
center: "",
},
scopedSlots: _vm._u([
{
key: "title",
fn: function () {
return [
_c("span", { staticClass: "custom-title" }, [
_vm._v("随网页加载UI界面"),
]),
_vm._v(" "),
_c(
"van-popover",
{
attrs: {
placement: "right-start",
"get-container": "#app-loadset",
offset: [-2, 10],
"close-on-click-outside": true,
},
scopedSlots: _vm._u([
{
key: "reference",
fn: function () {
return [
_c("van-icon", {
attrs: {
name: "info-o",
color: "red",
},
on: {
mouseover: function ($event) {
_vm.showUiPopover = true
},
mouseleave: function ($event) {
_vm.showUiPopover = false
},
},
}),
]
},
proxy: true,
},
]),
model: {
value: _vm.showUiPopover,
callback: function ($$v) {
_vm.showUiPopover = $$v
},
expression: "showUiPopover",
},
},
[
_c("code", { staticClass: "popovertext" }, [
_vm._v("关闭后可通过快捷键唤起"),
]),
]
),
]
},
proxy: true,
},
{
key: "default",
fn: function () {
return [
_c("van-checkbox", {
staticClass: "rightbutton",
on: {
change: function ($event) {
return _vm.onChangeData(
"appLoadDefault",
_vm.appLoadDefault.isShowUI,
"isShowUI"
)
},
},
model: {
value: _vm.appLoadDefault.isShowUI,
callback: function ($$v) {
_vm.$set(
_vm.appLoadDefault,
"isShowUI",
$$v
)
},
expression: "appLoadDefault.isShowUI",
},
}),
]
},
proxy: true,
},
]),
}),
_vm._v(" "),
_c("van-cell", {
attrs: {
"title-class": "cellleftvalue",
"value-class": "cellrightvalue",
center: "",
},
scopedSlots: _vm._u([
{
key: "title",
fn: function () {
return [
_c("span", { staticClass: "custom-title" }, [
_vm._v("加载界面快捷键"),
]),
]
},
proxy: true,
},
{
key: "default",
fn: function () {
return [
_c("div", [
_c("code", { staticStyle: { width: "35px" } }, [
_vm._v("Alt + "),
]),
_vm._v(" "),
_c("input", {
directives: [
{
name: "model",
rawName: "v-model",
value: _vm.appLoadDefault.loadHotKey,
expression: "appLoadDefault.loadHotKey",
},
],
staticClass: "rightbutton",
attrs: { id: "hot-key-input" },
domProps: {
value: _vm.appLoadDefault.loadHotKey,
},
on: {
input: [
function ($event) {
if ($event.target.composing) {
return
}
_vm.$set(
_vm.appLoadDefault,
"loadHotKey",
$event.target.value
)
},
_vm.loadHotKeyChange,
],
},
}),
]),
]
},
proxy: true,
},
]),
}),
_vm._v(" "),
_c("van-cell", {
attrs: {
"title-class": "cellleftvalue",
"value-class": "cellrightvalue",
center: "",
},
scopedSlots: _vm._u([
{
key: "title",
fn: function () {
return [
_c("span", { staticClass: "custom-title" }, [
_vm._v("右边大小缩放(%)"),
]),
]
},
proxy: true,
},
{
key: "default",
fn: function () {
return [
_c("van-stepper", {
staticClass: "rightbutton",
attrs: {
min: "75",
max: "125",
"default-value": 100,
step: "1",
integer: "",
"button-size": "20px",
},
on: {
change: function ($event) {
return _vm.changeRightSize(_vm.appRightSize)
},
},
model: {
value: _vm.appRightSize,
callback: function ($$v) {
_vm.appRightSize = $$v
},
expression: "appRightSize",
},
}),
]
},
proxy: true,
},
]),
}),
_vm._v(" "),
_c("van-cell", {
attrs: {
"title-class": "cellleftvalue",
"value-class": "cellrightvalue",
center: "",
},
scopedSlots: _vm._u([
{
key: "title",
fn: function () {
return [
_c("span", { staticClass: "custom-title" }, [
_vm._v("中间大小缩放(%)"),
]),
]
},
proxy: true,
},
{
key: "default",
fn: function () {
return [
_c("van-stepper", {
staticClass: "rightbutton",
attrs: {
min: "75",
max: "125",
"default-value": 100,
step: "1",
integer: "",
"button-size": "20px",
},
on: {
change: function ($event) {
return _vm.changeCenterSize(
_vm.appCenterSize
)
},
},
model: {
value: _vm.appCenterSize,
callback: function ($$v) {
_vm.appCenterSize = $$v
},
expression: "appCenterSize",
},
}),
]
},
proxy: true,
},
]),
}),
],
1
),
_vm._v(" "),
_c(
"van-cell-group",
{ attrs: { id: "downpart", title: "下载", inset: "" } },
[
_c("van-cell", {
attrs: { label: "*下载前生效", center: "" },
scopedSlots: _vm._u([
{
key: "title",
fn: function () {
return [
_c(
"span",
{
staticClass: "custom-title",
staticStyle: { width: "300px" },
},
[_vm._v("最大下载章节数")]
),
]
},
proxy: true,
},
{
key: "default",
fn: function () {
return [
_c(
"div",
{ staticStyle: { display: "flex" } },
[
_vm._v(
"\n 1 \n "
),
_c("van-slider", {
staticClass: "rightslider",
attrs: { min: 1, max: 3 },
on: {
change: function ($event) {
return _vm.onChangeData(
"maxChapterNum",
_vm.maxChapterNum
)
},
},
scopedSlots: _vm._u([
{
key: "button",
fn: function () {
return [
_c(
"div",
{ staticClass: "custom-button" },
[
_vm._v(
_vm._s(_vm.maxChapterNum)
),
]
),
]
},
proxy: true,
},
]),
model: {
value: _vm.maxChapterNum,
callback: function ($$v) {
_vm.maxChapterNum = $$v
},
expression: "maxChapterNum",
},
}),
_vm._v(" 3\n "),
],
1
),
]
},
proxy: true,
},
]),
}),
_vm._v(" "),
_c("van-cell", {
attrs: { label: "*下载前生效", center: "" },
scopedSlots: _vm._u([
{
key: "title",
fn: function () {
return [
_c(
"span",
{
staticClass: "custom-title",
staticStyle: { width: "300px" },
},
[_vm._v("每章最大下载图片数")]
),
]
},
proxy: true,
},
{
key: "default",
fn: function () {
return [
_c(
"div",
{ staticStyle: { display: "flex" } },
[
_vm._v(
"\n 1 \n "
),
_c("van-slider", {
staticClass: "rightslider",
attrs: { min: 1, max: 5 },
on: {
change: function ($event) {
return _vm.onChangeData(
"maxPictureNum",
_vm.maxPictureNum
)
},
},
scopedSlots: _vm._u([
{
key: "button",
fn: function () {
return [
_c(
"div",
{ staticClass: "custom-button" },
[
_vm._v(
_vm._s(_vm.maxPictureNum)
),
]
),
]
},
proxy: true,
},
]),
model: {
value: _vm.maxPictureNum,
callback: function ($$v) {
_vm.maxPictureNum = $$v
},
expression: "maxPictureNum",
},
}),
_vm._v(" 5\n "),
],
1
),
]
},
proxy: true,
},
]),
}),
_vm._v(" "),
_c("van-cell", {
attrs: {
"title-class": "cellleftvalue",
"value-class": "cellrightvalue",
label: "*本次默认设置,修改后下次启动默认生效",
center: "",
},
scopedSlots: _vm._u([
{
key: "title",
fn: function () {
return [
_c("span", { staticClass: "custom-title" }, [
_vm._v("下载方式"),
]),
_vm._v(" "),
_c(
"van-popover",
{
attrs: {
placement: "right",
"get-container": "#downpart",
offset: [-8, 10],
"close-on-click-outside": true,
},
scopedSlots: _vm._u([
{
key: "reference",
fn: function () {
return [
_c("van-icon", {
attrs: {
name: "info-o",
color: "red",
},
on: {
mouseover: function ($event) {
_vm.downTypePopover = true
},
mouseleave: function ($event) {
_vm.downTypePopover = false
},
},
}),
]
},
proxy: true,
},
]),
model: {
value: _vm.downTypePopover,
callback: function ($$v) {
_vm.downTypePopover = $$v
},
expression: "downTypePopover",
},
},
[
_c("div", [
_c("code", { staticClass: "popovertext" }, [
_vm._v(
"* 如需保存在文件夹需要设置油猴下载模式为浏览器API"
),
]),
]),
]
),
]
},
proxy: true,
},
{
key: "default",
fn: function () {
return [
_c(
"div",
{
staticClass: "dropdown",
on: {
mouseover: function ($event) {
_vm.showDropDown = true
},
mouseleave: function ($event) {
_vm.showDropDown = false
},
},
},
[
_c("button", { staticClass: "dropbtn" }, [
_vm._v(
_vm._s(_vm.dropItem[_vm.downType].Text)
),
]),
_vm._v(" "),
_c(
"div",
{
directives: [
{
name: "show",
rawName: "v-show",
value: _vm.showDropDown,
expression: "showDropDown",
},
],
staticClass: "dropdown-content",
attrs: { id: "myDropdown" },
},
_vm._l(
_vm.dropItem,
function (item, index) {
return _c(
"a",
{
key: index,
attrs: { href: "#" },
on: {
click: function ($event) {
return _vm.changeDownType(
item.value
)
},
},
},
[
_c(
"div",
{ attrs: { title: item.hint } },
[
_vm._v(
"\n " +
_vm._s(item.Text) +
"\n "
),
_c("van-icon", {
directives: [
{
name: "show",
rawName: "v-show",
value: item.hint,
expression: "item.hint",
},
],
attrs: {
name: "info-o",
color: "red",
},
}),
],
1
),
]
)
}
),
0
),
]
),
]
},
proxy: true,
},
]),
}),
_vm._v(" "),
_c("van-cell", {
attrs: {
"title-class": "cellleftvalue",
"value-class": "cellrightvalue",
label: "*下载拼接前生效",
center: "",
},
scopedSlots: _vm._u([
{
key: "title",
fn: function () {
return [
_c("span", { staticClass: "custom-title" }, [
_vm._v("拼接图片最大高度"),
]),
_vm._v(" "),
_c(
"van-popover",
{
attrs: {
placement: "right",
"get-container": "#downpart",
offset: [-8, 10],
"close-on-click-outside": true,
},
scopedSlots: _vm._u([
{
key: "reference",
fn: function () {
return [
_c("van-icon", {
attrs: {
name: "info-o",
color: "red",
},
on: {
mouseover: function ($event) {
_vm.splicingHeightPopover = true
},
mouseleave: function ($event) {
_vm.splicingHeightPopover = false
},
},
}),
]
},
proxy: true,
},
]),
model: {
value: _vm.splicingHeightPopover,
callback: function ($$v) {
_vm.splicingHeightPopover = $$v
},
expression: "splicingHeightPopover",
},
},
[
_c("div", [
_c("code", { staticClass: "popovertext" }, [
_vm._v("* chrome和Edge 最大不超过 65530"),
]),
]),
]
),
]
},
proxy: true,
},
{
key: "default",
fn: function () {
return [
_c("div", [
_c("input", {
directives: [
{
name: "model",
rawName: "v-model",
value: _vm.maxSplicingHeight,
expression: "maxSplicingHeight",
},
],
staticClass: "rightbutton",
attrs: {
id: "max-splicing-height-input",
type: "number",
min: 10000,
max: 65530,
onkeyup:
"value=value.replace(/^(0+)|[^\\d]+/g,'')",
},
domProps: { value: _vm.maxSplicingHeight },
on: {
blur: _vm.splicingHeightBlur,
input: function ($event) {
if ($event.target.composing) {
return
}
_vm.maxSplicingHeight =
$event.target.value
},
},
}),
]),
]
},
proxy: true,
},
]),
}),
_vm._v(" "),
_c("van-cell", {
attrs: {
"title-class": "cellleftvalue",
"value-class": "cellrightvalue",
label: "*本次启动默认设置,修改刷新生效",
center: "",
},
scopedSlots: _vm._u([
{
key: "title",
fn: function () {
return [
_c("span", { staticClass: "custom-title" }, [
_vm._v("图片序号最少位数"),
]),
_vm._v(" "),
_c(
"van-popover",
{
attrs: {
placement: "right",
"get-container": "#downpart",
offset: [-5, 5],
"close-on-click-outside": true,
},
scopedSlots: _vm._u([
{
key: "reference",
fn: function () {
return [
_c("van-icon", {
attrs: {
name: "info-o",
color: "red",
},
on: {
mouseover: function ($event) {
_vm.addZeroHint = true
},
mouseleave: function ($event) {
_vm.addZeroHint = false
},
},
}),
]
},
proxy: true,
},
]),
model: {
value: _vm.addZeroHint,
callback: function ($$v) {
_vm.addZeroHint = $$v
},
expression: "addZeroHint",
},
},
[
_c("div", [
_c("code", { staticClass: "popovertext" }, [
_vm._v('* 不足则向前补充"0"'),
]),
_c("br"),
_vm._v(" "),
_c("code", { staticClass: "popovertext" }, [
_vm._v("* 选择1,则默认数字序号"),
]),
]),
]
),
]
},
proxy: true,
},
{
key: "default",
fn: function () {
return [
_c("van-stepper", {
staticClass: "rightbutton",
attrs: {
max: "5",
integer: "",
"button-size": "20px",
},
on: {
change: function ($event) {
return _vm.onChangeData(
"imgIndexBitNum",
_vm.imgIndexBitNum
)
},
},
model: {
value: _vm.imgIndexBitNum,
callback: function ($$v) {
_vm.imgIndexBitNum = $$v
},
expression: "imgIndexBitNum",
},
}),
]
},
proxy: true,
},
]),
}),
_vm._v(" "),
_c("van-cell", {
attrs: {
"title-class": "cellleftvalue",
"value-class": "cellrightvalue",
label: "原默认设置 1至-1",
center: "",
},
scopedSlots: _vm._u([
{
key: "title",
fn: function () {
return [
_c("span", { staticClass: "custom-title" }, [
_vm._v("图片下载范围"),
]),
_vm._v(" "),
_c(
"van-popover",
{
attrs: {
placement: "right",
"get-container": "#downpart",
offset: [-5, 5],
"close-on-click-outside": true,
},
scopedSlots: _vm._u([
{
key: "reference",
fn: function () {
return [
_c("van-icon", {
attrs: {
name: "info-o",
color: "red",
},
on: {
mouseover: function ($event) {
_vm.imgDownRangeHint = true
},
mouseleave: function ($event) {
_vm.imgDownRangeHint = false
},
},
}),
]
},
proxy: true,
},
]),
model: {
value: _vm.imgDownRangeHint,
callback: function ($$v) {
_vm.imgDownRangeHint = $$v
},
expression: "imgDownRangeHint",
},
},
[
_c("div", [
_c("code", { staticClass: "popovertext" }, [
_vm._v(
"*1至-1 代表从第一张图片下载至最后一张"
),
]),
_c("br"),
]),
]
),
]
},
proxy: true,
},
{
key: "default",
fn: function () {
return [
_c("div", [
_c("input", {
directives: [
{
name: "model",
rawName: "v-model",
value: _vm.imgDownRange[0],
expression: "imgDownRange[0]",
},
],
staticClass: "img-down-range-input",
attrs: {
type: "number",
min: "1",
onkeyup:
"value=value.replace(/^(0+)|[^\\d]+/g,'')",
},
domProps: { value: _vm.imgDownRange[0] },
on: {
blur: _vm.imgDownRangeBlur,
input: function ($event) {
if ($event.target.composing) {
return
}
_vm.$set(
_vm.imgDownRange,
0,
$event.target.value
)
},
},
}),
_vm._v(" "),
_c("code", { staticStyle: { width: "10px" } }, [
_vm._v(" - "),
]),
_vm._v(" "),
_c("input", {
directives: [
{
name: "model",
rawName: "v-model",
value: _vm.imgDownRange[1],
expression: "imgDownRange[1]",
},
],
staticClass: "img-down-range-input",
attrs: {
type: "number",
max: "-1",
onkeyup:
"value=value.replace(/^(0+)|[^\\d]+/g,'')",
},
domProps: { value: _vm.imgDownRange[1] },
on: {
blur: _vm.imgDownRangeBlur,
input: function ($event) {
if ($event.target.composing) {
return
}
_vm.$set(
_vm.imgDownRange,
1,
$event.target.value
)
},
},
}),
]),
]
},
proxy: true,
},
]),
}),
],
1
),
_vm._v(" "),
_c(
"van-cell-group",
{
attrs: {
id: "webpart",
title: "原网站阅读样式修改",
inset: "",
},
},
[
_c("van-cell", {
attrs: {
"title-class": "cellleftvalue",
"value-class": "cellrightvalue",
label: "去除部分漫画网站图片上下间隔",
center: "",
},
scopedSlots: _vm._u([
{
key: "title",
fn: function () {
return [
_c("span", { staticClass: "custom-title" }, [
_vm._v("图片拼接"),
]),
_vm._v(" "),
_c(
"van-popover",
{
attrs: {
placement: "right-start",
"get-container": "#webpart",
offset: [0, 10],
"close-on-click-outside": true,
},
scopedSlots: _vm._u([
{
key: "reference",
fn: function () {
return [
_c("van-icon", {
attrs: {
name: "info-o",
color: "red",
},
on: {
mouseover: function ($event) {
_vm.showPopover = true
},
mouseleave: function ($event) {
_vm.showPopover = false
},
},
}),
]
},
proxy: true,
},
]),
model: {
value: _vm.showPopover,
callback: function ($$v) {
_vm.showPopover = $$v
},
expression: "showPopover",
},
},
[
_c("code", { staticClass: "popovertext" }, [
_vm._v("建议浏览长条漫画时开启"),
]),
]
),
]
},
proxy: true,
},
{
key: "default",
fn: function () {
return [
_c("van-checkbox", {
staticClass: "rightbutton",
on: { change: _vm.webImgSplicing },
model: {
value: _vm.imgSplicingFlag,
callback: function ($$v) {
_vm.imgSplicingFlag = $$v
},
expression: "imgSplicingFlag",
},
}),
]
},
proxy: true,
},
]),
}),
],
1
),
_vm._v(" "),
_c(
"van-cell-group",
{ attrs: { title: "自定义规则", inset: "" } },
[
_c("van-cell", {
attrs: {
"title-class": "cellleftvalue",
"value-class": "cellrightvalue",
title: "导入规则",
"is-link": "",
center: "",
},
on: {
click: function ($event) {
return _vm.changeSwipe(1)
},
},
}),
_vm._v(" "),
_c("van-cell", {
attrs: {
"title-class": "cellleftvalue",
"value-class": "cellrightvalue",
title: "清空导入的规则",
"is-link": "",
center: "",
},
on: {
click: function ($event) {
return _vm.deleteAllUserWeb()
},
},
}),
],
1
),
_vm._v(" "),
_c(
"van-cell-group",
{ attrs: { id: "otherpart", title: "其他", inset: "" } },
[
_c("van-cell", {
attrs: {
"title-class": "cellleftvalue",
"value-class": "cellrightvalue",
title: "脚本反馈/评分",
"is-link": "",
center: "",
},
on: {
click: function ($event) {
return _vm.jump(
"https://greasyfork.org/zh-CN/scripts/447819/feedback"
)
},
},
}),
],
1
),
],
1
),
_vm._v(" "),
_c(
"div",
{ attrs: { id: "set-bottom" } },
[
_c(
"van-button",
{
style: {
width: "120px",
background: "#ee000055 !important",
},
attrs: { size: "small", round: "" },
on: { click: _vm.allInit },
},
[_vm._v("全部重置")]
),
],
1
),
]),
_vm._v(" "),
_c(
"van-swipe-item",
{
staticClass: "swipeitem",
style: { marginBottom: "15px", cursor: "pointer", flex: 1 },
},
[
_c(
"div",
[
_c(
"div",
{
attrs: { id: "setup-return" },
on: {
click: function ($event) {
return _vm.changeSwipe(0)
},
},
},
[
_c("van-icon", { attrs: { name: "arrow-left" } }),
_vm._v(" 返回\n "),
],
1
),
_vm._v(" "),
_vm.setupOtherPage === 1 ? _c("import-page") : _vm._e(),
],
1
),
]
),
],
1
),
],
1
)
}
var settingvue_type_template_id_234d1526_scoped_true_staticRenderFns = []
settingvue_type_template_id_234d1526_scoped_true_render._withStripped = true
;// CONCATENATED MODULE: ./src/views/setting.vue?vue&type=template&id=234d1526&scoped=true&
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/importPage.vue?vue&type=template&id=3e5333e4&scoped=true&
var importPagevue_type_template_id_3e5333e4_scoped_true_render = function () {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"div",
{ staticClass: "import-page" },
[
_c("textarea", {
directives: [
{
name: "model",
rawName: "v-model",
value: _vm.codeText,
expression: "codeText",
},
],
ref: "codeTextarea",
staticStyle: { resize: "none" },
style: { width: "97%", height: "92%" },
attrs: { id: "codeTextarea" },
domProps: { value: _vm.codeText },
on: {
input: function ($event) {
if ($event.target.composing) {
return
}
_vm.codeText = $event.target.value
},
},
}),
_vm._v(" "),
_c(
"van-button",
{ attrs: { size: "mini" }, on: { click: _vm.getCode } },
[_vm._v("确定")]
),
],
1
)
}
var importPagevue_type_template_id_3e5333e4_scoped_true_staticRenderFns = []
importPagevue_type_template_id_3e5333e4_scoped_true_render._withStripped = true
;// CONCATENATED MODULE: ./src/components/importPage.vue?vue&type=template&id=3e5333e4&scoped=true&
// EXTERNAL MODULE: ./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/importPage.vue?vue&type=script&lang=js&
var importPagevue_type_script_lang_js_ = __webpack_require__(555);
;// CONCATENATED MODULE: ./src/components/importPage.vue?vue&type=script&lang=js&
/* harmony default export */ const components_importPagevue_type_script_lang_js_ = (importPagevue_type_script_lang_js_/* default */.Z);
// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/importPage.vue?vue&type=style&index=0&id=3e5333e4&lang=less&scoped=true&
var importPagevue_type_style_index_0_id_3e5333e4_lang_less_scoped_true_ = __webpack_require__(159);
;// CONCATENATED MODULE: ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/importPage.vue?vue&type=style&index=0&id=3e5333e4&lang=less&scoped=true&
var importPagevue_type_style_index_0_id_3e5333e4_lang_less_scoped_true_options = {};
importPagevue_type_style_index_0_id_3e5333e4_lang_less_scoped_true_options.styleTagTransform = (styleTagTransform_default());
importPagevue_type_style_index_0_id_3e5333e4_lang_less_scoped_true_options.setAttributes = (setAttributesWithoutAttributes_default());
importPagevue_type_style_index_0_id_3e5333e4_lang_less_scoped_true_options.insert = insertBySelector_default().bind(null, "head");
importPagevue_type_style_index_0_id_3e5333e4_lang_less_scoped_true_options.domAPI = (styleDomAPI_default());
importPagevue_type_style_index_0_id_3e5333e4_lang_less_scoped_true_options.insertStyleElement = (insertStyleElement_default());
var importPagevue_type_style_index_0_id_3e5333e4_lang_less_scoped_true_update = injectStylesIntoStyleTag_default()(importPagevue_type_style_index_0_id_3e5333e4_lang_less_scoped_true_/* default */.Z, importPagevue_type_style_index_0_id_3e5333e4_lang_less_scoped_true_options);
/* harmony default export */ const components_importPagevue_type_style_index_0_id_3e5333e4_lang_less_scoped_true_ = (importPagevue_type_style_index_0_id_3e5333e4_lang_less_scoped_true_/* default */.Z && importPagevue_type_style_index_0_id_3e5333e4_lang_less_scoped_true_/* default.locals */.Z.locals ? importPagevue_type_style_index_0_id_3e5333e4_lang_less_scoped_true_/* default.locals */.Z.locals : undefined);
;// CONCATENATED MODULE: ./src/components/importPage.vue?vue&type=style&index=0&id=3e5333e4&lang=less&scoped=true&
;// CONCATENATED MODULE: ./src/components/importPage.vue
;
/* normalize component */
var importPage_component = normalizeComponent(
components_importPagevue_type_script_lang_js_,
importPagevue_type_template_id_3e5333e4_scoped_true_render,
importPagevue_type_template_id_3e5333e4_scoped_true_staticRenderFns,
false,
null,
"3e5333e4",
null
)
/* hot reload */
if (false) { var importPage_api; }
importPage_component.options.__file = "src/components/importPage.vue"
/* harmony default export */ const importPage = (importPage_component.exports);
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/setting.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* eslint-disable no-undef */
/* harmony default export */ const settingvue_type_script_lang_js_ = ({
name: 'Setting',
components: {
importPage: importPage
},
data() {
return {
appLoadDefault: {
isShowUI: true,
loadHotKey: '',
rightSize: 100,
centerSize: 100
},
appRightSize: 100,
appCenterSize: 100,
maxChapterNum: 1,
maxPictureNum: 2,
imgIndexBitNum: 3,
imgDownRange: [1, -1],
imgSplicingFlag: false,
//
downTypePopover: false,
addZeroHint: false,
imgDownRangeHint: false,
showPopover: false,
showUiPopover: false,
setupOtherPage: 0,
showDropDown: false,
downType: 0,
maxSplicingHeight: 20000,
splicingHeightPopover: false,
dropItem: [
{ Text: '直接下载', value: 0 },
{ Text: '压缩下载', value: 1 },
{ Text: '拼接下载', value: 2, hint: '拼接后单张高度不超过 10000 像素' }
]
}
},
mounted() {
this.getAllData()
this.$bus.$on('changeSetupFirstPage', () => { this.changeSwipe(0) })
},
methods: {
jump(url) {
window.open(url, '_blank')
},
onChangeData(key, value, key2) {
(0,setup/* setStorage */.po)(key, value, key2)
},
changeRightSize(num) {
if (num === undefined) {
num = 100
}
const appRightDom = document.getElementById('app-right')
appRightDom.style.scale = num / 100
this.onChangeData('appLoadDefault', num, 'rightSize')
},
changeCenterSize(num) {
if (num === undefined) {
num = 100
}
const appRightDom = document.getElementById('search-page')
appRightDom.style.scale = num / 100
this.onChangeData('appLoadDefault', num, 'centerSize')
},
loadHotKeyChange(obj) {
if (obj.data) {
this.appLoadDefault.loadHotKey = obj.data.toUpperCase()
this.onChangeData('appLoadDefault', this.appLoadDefault.loadHotKey, 'loadHotKey')
}
},
webImgSplicing(value) {
const splicingimgstyle = document.getElementById('splicingimgstyle')
if (value === true && comics/* currentComics */.Po && comics/* currentComics.readCssText */.Po.readCssText !== undefined) {
if (splicingimgstyle) {
splicingimgstyle.innerText = comics/* currentComics.readCssText */.Po.readCssText
} else {
(0,utils/* loadStyle */.Xr)('', 'splicingimgstyle', comics/* currentComics.readCssText */.Po.readCssText)
}
} else {
if (splicingimgstyle) {
splicingimgstyle.innerText = ''
}
}
this.onChangeData('imgSplicingFlag', value)
},
changeSwipe(val) {
console.log('val: ', val)
this.$refs.swipe2.swipeTo(val)
this.setupOtherPage = val
},
changeDownType(val) {
if (this.downType !== val) {
this.downType = val
this.onChangeData('downType', val)
}
},
splicingHeightBlur(event) {
const val = event.currentTarget.value
if (val < 10000) this.maxSplicingHeight = 10000
if (val > 65530) this.maxSplicingHeight = 65530
this.onChangeData('maxSplicingHeight', this.maxSplicingHeight)
},
imgDownRangeBlur() {
if (this.imgDownRange[0] < 1) this.imgDownRange[0] = 1
if (this.imgDownRange[1] > -1) this.imgDownRange[1] = -1
this.imgDownRange = JSON.parse(JSON.stringify(this.imgDownRange))
this.onChangeData('imgDownRange', this.imgDownRange)
},
exeFun(flag, basic) {
let rightSize = 100; let centerSize = 100
basic.rightSize ? rightSize = basic.rightSize : ''
basic.rightSize ? this.appRightSize = basic.rightSize : ''
this.changeRightSize(rightSize)
basic.centerSize ? centerSize = basic.centerSize : ''
basic.centerSize ? this.appCenterSize = basic.centerSize : ''
this.changeRightSize(centerSize)
this.webImgSplicing(flag)
},
getAllData() {
try {
this.maxChapterNum = GM_getValue('maxChapterNum')
this.maxPictureNum = GM_getValue('maxPictureNum')
this.downType = GM_getValue('downType')
this.maxSplicingHeight = GM_getValue('maxSplicingHeight')
this.imgIndexBitNum = GM_getValue('imgIndexBitNum')
this.imgSplicingFlag = GM_getValue('imgSplicingFlag')
this.imgDownRange = GM_getValue('imgDownRange')
//
this.appLoadDefault = GM_getValue('appLoadDefault')
// eslint-disable-next-line no-empty
} catch (error) {}
// 获取数据后执行其他方法
this.exeFun(this.imgSplicingFlag, this.appLoadDefault)
},
async allInit() {
external_vant_.Dialog.confirm({
getContainer: '.card',
message: '确认重置'
})
.then(() => {
(0,setup/* setinit */.zU)().then((result) => {
this.getAllData()
})
})
.catch(() => {
// on cancel
})
},
deleteAllUserWeb() {
external_vant_.Dialog.confirm({
getContainer: '.card',
message: '确认清空'
})
.then(() => {
(0,setup/* setStorage */.po)('userWebInfo', [])
this.$bus.$emit('getWeb')
})
.catch(() => {
// on cancel
})
}
}
});
;// CONCATENATED MODULE: ./src/views/setting.vue?vue&type=script&lang=js&
/* harmony default export */ const views_settingvue_type_script_lang_js_ = (settingvue_type_script_lang_js_);
// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/setting.vue?vue&type=style&index=0&id=234d1526&lang=less&scoped=true&
var settingvue_type_style_index_0_id_234d1526_lang_less_scoped_true_ = __webpack_require__(55);
;// CONCATENATED MODULE: ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/setting.vue?vue&type=style&index=0&id=234d1526&lang=less&scoped=true&
var settingvue_type_style_index_0_id_234d1526_lang_less_scoped_true_options = {};
settingvue_type_style_index_0_id_234d1526_lang_less_scoped_true_options.styleTagTransform = (styleTagTransform_default());
settingvue_type_style_index_0_id_234d1526_lang_less_scoped_true_options.setAttributes = (setAttributesWithoutAttributes_default());
settingvue_type_style_index_0_id_234d1526_lang_less_scoped_true_options.insert = insertBySelector_default().bind(null, "head");
settingvue_type_style_index_0_id_234d1526_lang_less_scoped_true_options.domAPI = (styleDomAPI_default());
settingvue_type_style_index_0_id_234d1526_lang_less_scoped_true_options.insertStyleElement = (insertStyleElement_default());
var settingvue_type_style_index_0_id_234d1526_lang_less_scoped_true_update = injectStylesIntoStyleTag_default()(settingvue_type_style_index_0_id_234d1526_lang_less_scoped_true_/* default */.Z, settingvue_type_style_index_0_id_234d1526_lang_less_scoped_true_options);
/* harmony default export */ const views_settingvue_type_style_index_0_id_234d1526_lang_less_scoped_true_ = (settingvue_type_style_index_0_id_234d1526_lang_less_scoped_true_/* default */.Z && settingvue_type_style_index_0_id_234d1526_lang_less_scoped_true_/* default.locals */.Z.locals ? settingvue_type_style_index_0_id_234d1526_lang_less_scoped_true_/* default.locals */.Z.locals : undefined);
;// CONCATENATED MODULE: ./src/views/setting.vue?vue&type=style&index=0&id=234d1526&lang=less&scoped=true&
;// CONCATENATED MODULE: ./src/views/setting.vue
;
/* normalize component */
var setting_component = normalizeComponent(
views_settingvue_type_script_lang_js_,
settingvue_type_template_id_234d1526_scoped_true_render,
settingvue_type_template_id_234d1526_scoped_true_staticRenderFns,
false,
null,
"234d1526",
null
)
/* hot reload */
if (false) { var setting_api; }
setting_component.options.__file = "src/views/setting.vue"
/* harmony default export */ const setting = (setting_component.exports);
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/down.vue?vue&type=template&id=1e855a88&scoped=true&
var downvue_type_template_id_1e855a88_scoped_true_render = function () {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"div",
{ attrs: { id: "downcontext" } },
[
_c(
"van-collapse",
{
model: {
value: _vm.collapseActiveName,
callback: function ($$v) {
_vm.collapseActiveName = $$v
},
expression: "collapseActiveName",
},
},
[
_c(
"van-collapse-item",
{
attrs: { title: "下载中", name: "1" },
scopedSlots: _vm._u([
{
key: "title",
fn: function () {
return [
_c(
"div",
{ style: { display: "flex", lineHeight: "25px" } },
[
_vm._v("下载中\n "),
_vm.comicName
? _c("van-tag", { staticClass: "comicnametag1" }, [
_vm._v(_vm._s(_vm.comicName)),
])
: _vm._e(),
],
1
),
]
},
proxy: true,
},
]),
},
[
_vm._v(" "),
_c(
"div",
{ attrs: { id: "downlist" } },
_vm._l(_vm.queue.worker, function (item, index) {
return _c("div", { key: index, staticClass: "downitem" }, [
item !== undefined
? _c(
"div",
[
_c("div", { staticClass: "itemname" }, [
_c("span", { staticClass: "custom-title" }, [
_vm._v(_vm._s(item.downChapterName)),
]),
]),
_vm._v(" "),
_c("van-progress", {
ref: "progress",
refInFor: true,
staticStyle: {
width: "100%",
"margin-top": "10px",
},
attrs: {
percentage: item.progress,
"pivot-color": "#66ccff",
color:
"linear-gradient(to right, #66ccff22, ##66ccff)",
},
}),
_vm._v(" "),
_c("van-divider", {
style: {
margin: "13px 0px",
padding: "0 0px",
height: "1px",
},
}),
],
1
)
: _vm._e(),
])
}),
0
),
]
),
_vm._v(" "),
_c("van-collapse-item", { attrs: { title: "待下载", name: "2" } }, [
_c(
"div",
{ attrs: { id: "downlist" } },
_vm._l(_vm.queue.list, function (item, index) {
return _c(
"div",
{ key: index, staticClass: "downitem" },
[
_c("div", { staticClass: "itemname" }, [
_c("span", { staticClass: "custom-title" }, [
_vm._v(_vm._s(item.downChapterName)),
]),
]),
_vm._v(" "),
_c("van-divider", {
style: {
margin: "8px 0px",
padding: "0 0px",
height: "1px",
},
}),
],
1
)
}),
0
),
]),
_vm._v(" "),
_c(
"van-collapse-item",
{
attrs: { name: "3" },
scopedSlots: _vm._u([
{
key: "title",
fn: function () {
return [
_c(
"div",
{ style: { display: "flex" } },
[
_c(
"span",
{ attrs: { title: _vm.currentDomain } },
[
_vm._v("\n 下载记录\n "),
_c("van-icon", {
attrs: { name: "info-o", color: "#adadad" },
}),
],
1
),
_vm._v(" "),
_c("van-icon", {
staticStyle: {
"line-height": "25px",
"margin-left": "10px",
},
attrs: {
name: "delete-o",
color: "#EE0000",
size: "20",
},
on: {
click: function ($event) {
$event.stopPropagation()
return _vm.deleteAllHistoryData.apply(
null,
arguments
)
},
},
}),
],
1
),
]
},
proxy: true,
},
]),
},
[
_vm._v(" "),
_c(
"div",
{ attrs: { id: "downlist" } },
_vm._l(_vm.historyData, function (item, index) {
return _c(
"div",
{ key: index, staticClass: "downitem" },
[
_c(
"div",
{ staticClass: "itemname" },
[
_c(
"div",
{ staticStyle: { display: "flex" } },
[
_c(
"van-tag",
{
staticClass: "comicnametag",
attrs: { title: item.comicName },
on: {
click: function ($event) {
return _vm.jump(item.comicPageUrl)
},
},
},
[_vm._v(_vm._s(item.comicName))]
),
_vm._v(" "),
_c(
"span",
{
staticClass: "custom-title chapterspan",
class: { hasError: item.hasError },
},
[_vm._v(_vm._s(item.downChapterName))]
),
],
1
),
_vm._v(" "),
_c("van-icon", {
style: { cursor: "pointer" },
attrs: { name: "delete-o", size: "18px" },
on: {
click: function ($event) {
return _vm.deleteHistoryData(index, item.id)
},
},
}),
],
1
),
_vm._v(" "),
_c("van-divider", {
style: {
margin: "8px 0px",
padding: "0 0px",
height: "1px",
},
}),
],
1
)
}),
0
),
]
),
],
1
),
],
1
)
}
var downvue_type_template_id_1e855a88_scoped_true_staticRenderFns = []
downvue_type_template_id_1e855a88_scoped_true_render._withStripped = true
;// CONCATENATED MODULE: ./src/views/down.vue?vue&type=template&id=1e855a88&scoped=true&
;// CONCATENATED MODULE: external "JSZip"
const external_JSZip_namespaceObject = JSZip;
var external_JSZip_default = /*#__PURE__*/__webpack_require__.n(external_JSZip_namespaceObject);
;// CONCATENATED MODULE: ./src/utils/queue.js
// 多个任务并行执行的队列
// https://juejin.cn/post/6844903961728647181
class Queue {
constructor(workerLen, maxPictureNum, imgIndexBitNum, vue) {
this.workerLen = workerLen || 3 // 同时执行的任务数
this.pictureNum = maxPictureNum || 2 // 章节最大下载图片数量
this.list = [] // 任务队列
this.worker = new Array(this.workerLen) // 正在执行的任务
this.workerDownInfo = new Array(this.workerLen) // 存储下载信息
this.imgIndexBitNum = imgIndexBitNum // 图片序号位数
this.Vue = vue
}
// 压缩下载方式
async downloadFile(fileName, content) {
const url = window.URL.createObjectURL(content)
await (0,utils/* downFile */.zd)(url, fileName)
window.URL.revokeObjectURL(url)
}
/**
* 执行一个任务
* @param { number } index
*/
async * exeDown(index) {
const { readtype, downChapterName } = this.worker[index]
const _this = this
async function afterDown(index) {
const { comicName, hasError } = _this.worker[index]
const comicPageUrl = window.location.href
let historyData = localStorage.getItem('ylComicDownHistory') || '[]'
historyData = JSON.parse(historyData)
const id = (new Date()).getTime()
historyData.unshift({ id, comicName, downChapterName, comicPageUrl, hasError })
historyData = JSON.stringify(historyData)
localStorage.setItem('ylComicDownHistory', historyData)
_this.Vue.getHistoryData()
_this.worker[index] = undefined
// 休息下?
setTimeout(() => {
_this.run()
}, 2000)
}
if (readtype === 1) {
const { url, isPay } = this.worker[index]
const processData = { url, isPay }
let imgs = []
try {
imgs = await (0,utils/* getImage */.gJ)(processData)
const imgDownRange = (0,setup/* getStorage */.cF)('imgDownRange')
const start = parseInt(imgDownRange[0])
const end = parseInt(imgDownRange[1])
if (end === -1) {
imgs = imgs.slice(start - 1)
} else {
imgs = imgs.slice(start - 1, end + 1)
}
// eslint-disable-next-line eqeqeq
imgs == [] ? this.worker[index].hasError = true : ''
this.worker[index].imgs = imgs
this.worker[index].totalNumber = imgs.length
} catch (error) {
this.worker[index].hasError = true
}
yield this.down(index)
.then(function() {
afterDown(index)
})
//
} else {
yield this.down2(index)
.then(function() {
afterDown(index)
})
}
}
/**
* 添加到任务队列
* @param { Array<Array<any>> } list: 任务队列
*/
addList(list) {
for (const item of list) {
this.list.unshift(item)
}
}
refresh() {
this.worker.splice(0, 0)
}
// 直接下载图片 Promise
addImgDownPromise(index, imgurl, imgIndex, newHeaders, retryTimes) {
const headers = {
referer: this.worker[index].url
}
return new Promise((resolve, reject) => {
const _this = this
if (!imgurl) {
_this.worker[index].progress = parseInt(_this.worker[index].imgIndex / _this.worker[index].totalNumber * 100)
_this.refresh()
resolve(false)
}
(0,utils/* request */.WY)({
method: 'get',
url: imgurl,
responseType: 'blob',
headers: newHeaders || headers,
timeout: 60 * 1000
}).then((res) => {
const name = this.worker[index].comicName + '\\' + this.worker[index].downChapterName + '\\' +
(0,utils/* addZeroForNum */.xo)(imgIndex, this.imgIndexBitNum) + '.'
let suffix = this.getSuffix(res.finalUrl)
_this.worker[index].successNum = _this.worker[index].successNum + 1
_this.worker[index].progress = parseInt(_this.worker[index].imgIndex / _this.worker[index].totalNumber * 100)
_this.refresh()
let newurl = ''
if (res === 'onerror' || res === 'timeout') {
if (retryTimes !== 2) {
if (retryTimes === undefined) retryTimes = 0
return resolve(_this.addImgDownPromise(index, imgurl, imgIndex, newHeaders, ++retryTimes))
}
_this.worker[index].hasError = true
suffix = 'txt'
const newBlob = new Blob([imgurl], { type: 'text/plain' })
newurl = window.URL.createObjectURL(newBlob)
} else {
newurl = window.URL.createObjectURL(res.response)
}
(0,utils/* downFile */.zd)(newurl, name + suffix).then((downRes) => {
if (downRes) {
resolve(true)
} else {
_this.worker[index].hasError = true
resolve(false)
}
})
})
})
}
// 请求图片Blob Promise (后用于压缩)
addImgPromise(index, imgurl, newHeaders, retryTimes) {
const headers = {
referer: this.worker[index].url
}
return new Promise((resolve, reject) => {
const _this = this
if (imgurl === '' || imgurl === undefined) {
_this.worker[index].hasError = true
return resolve({
blob: 1,
imgurl,
suffix: '' })
}
const suffix = this.getSuffix(imgurl)
;(0,utils/* request */.WY)({
method: 'get',
url: imgurl,
responseType: 'blob',
headers: newHeaders || headers,
timeout: 60 * 1000,
onload: function(gmRes) {
_this.worker[index].successNum = _this.worker[index].successNum + 1
_this.worker[index].progress = parseInt(_this.worker[index].imgIndex / _this.worker[index].totalNumber * 100)
_this.refresh()
resolve({
blob: gmRes.response,
imgurl,
suffix: suffix })
},
onerror: function(e) {
if (retryTimes !== 2) {
if (retryTimes === undefined) retryTimes = 0
return resolve(_this.addImgPromise(index, imgurl, newHeaders, ++retryTimes))
}
_this.worker[index].hasError = true
resolve({
blob: 1,
imgurl,
suffix: '' })
},
ontimeout: function() {
if (retryTimes !== 2) {
if (retryTimes === undefined) retryTimes = 0
return resolve(_this.addImgPromise(index, imgurl, newHeaders, ++retryTimes))
}
resolve({
blob: 0,
imgurl,
suffix: '' })
}
})
})
}
/**
* 下载图片
* @param { workerId } workerId: 任务id
*/
// 网站翻页阅读
async down2(workerId) {
const { url, downType, totalNumber, isPay, imgIndex, downHeaders } = this.worker[workerId]
const processData = { url, imgIndex, totalNumber, isPay }
processData.otherData = this.worker[workerId].otherData
const { imgUrlArr, nextPageUrl, imgCount, otherData } = await (0,utils/* getImage */.gJ)(processData)
this.worker[workerId].otherData = otherData
this.worker[workerId].totalNumber = parseInt(imgCount)
const beforeDownLen = imgUrlArr.length
// console.log('下载前', beforeDownLen, imgIndex, totalNumber)
while (imgUrlArr.length > 0) {
// eslint-disable-next-line prefer-const
let promise = []
for (let index = this.pictureNum; index > 0; index--) {
if (imgUrlArr[0] === undefined) {
break
}
const imgIndex = ++this.worker[workerId].imgIndex
if (downType) {
promise.push(this.addImgPromise(workerId, imgUrlArr[0], downHeaders))
} else {
promise.push(this.addImgDownPromise(workerId, imgUrlArr[0], imgIndex, downHeaders))
}
imgUrlArr.shift()
}
const res = await Promise.all(promise)
res.forEach(element => {
this.workerDownInfo[workerId].push(element)
})
}
const newImgIndex = this.worker[workerId].imgIndex
if (beforeDownLen !== 0 && nextPageUrl !== '' && newImgIndex < parseInt(imgCount)) {
this.worker[workerId].url = nextPageUrl
return new Promise((resolve, reject) => {
// 休息一下?
setTimeout(() => {
resolve(this.down2(workerId))
}, 1000)
})
} else {
// 压缩
if (downType === 1) {
const result = await this.makeZip(workerId)
return new Promise((resolve, reject) => {
resolve(result)
})
} else if (downType === 2) { // 拼接
await this.combineImages(workerId)
return new Promise((resolve, reject) => {
resolve()
})
} else {
return new Promise((resolve, reject) => {
resolve(1)
})
}
}
}
// 网站卷轴阅读
async down(workerId) {
const { imgs, downType, downHeaders } = this.worker[workerId]
const promise = []
let len = imgs.length
let pictureNum = this.pictureNum
while (pictureNum-- && len > 0) {
// 是否压缩
const imgIndex = ++this.worker[workerId].imgIndex
if (downType) {
promise.push(this.addImgPromise(workerId, imgs[0], downHeaders))
} else {
promise.push(this.addImgDownPromise(workerId, imgs[0], imgIndex, downHeaders))
}
this.worker[workerId].imgs.shift()
len--
}
const res = await Promise.all(promise)
res.forEach(element => {
this.workerDownInfo[workerId].push(element)
})
if (this.worker[workerId].imgs.length > 0) {
return new Promise((resolve, reject) => {
// 休息一下?
setTimeout(() => {
resolve(this.down(workerId))
}, 1000)
})
}
// 压缩
if (downType === 1) {
const result = await this.makeZip(workerId)
return new Promise((resolve, reject) => {
resolve(result)
})
} else if (downType === 2) { // 拼接
await this.combineImages(workerId)
return new Promise((resolve, reject) => {
resolve()
})
} else {
return new Promise((resolve, reject) => {
resolve(1)
})
}
}
// 分配并执行任务
async run() {
const runIndex = []
for (let i = 0; i < this.workerLen; i++) {
const len = this.list.length
if (!this.worker[i] && len > 0) {
// 需要执行的任务
const item = this.list[len - 1]
const worker = {
comicName: item.comicName,
downChapterName: item.downChapterName,
url: item.url,
isPay: item.isPay, // 是否付费章节
imgIndex: 0, // 图片序号
successNum: 0, // 下载成功数量
totalNumber: 0, // 图片总数
imgs: [],
progress: 0, // 进度百分比
readtype: item.readtype, // 阅读(下载)方式类型
func: this.exeDown(i),
downType: item.downType, // 下载方式 0:直接 1:压缩 2:拼接
hasError: false,
downHeaders: item.downHeaders,
otherData: undefined // 自定义存储其他下载数据
}
this.worker[i] = worker
this.workerDownInfo[i] = []
this.list.pop()
runIndex.push(i)
}
}
// 执行任务
for (const index of runIndex) {
this.worker[index].func.next()
}
}
getSuffix(url) {
if (url) {
const testurl = url.toLowerCase()
const imgtype = ['jpg', 'jpeg', 'webp', 'png', 'gif', 'bmp', 'tiff', 'svg', 'ico']
for (let i = 0; i < imgtype.length; i++) {
const a = testurl.search(imgtype[i])
if (a !== -1) {
return imgtype[i]
}
}
// 可能网址没有图片后缀
return 'jpg'
}
return false
}
// 压缩
async makeZip(workerId) {
const { comicName, downChapterName } = this.worker[workerId]
return new Promise((resolve, reject) => {
const zip = new (external_JSZip_default())()
this.workerDownInfo[workerId].forEach((item, index) => {
const imgblob = item.blob
const suffix = item.suffix
if (imgblob === 1 || imgblob === 0) {
const txtBlob = new Blob([item.imgurl], { type: 'text/plain' })
zip.file((0,utils/* addZeroForNum */.xo)(index + 1, this.imgIndexBitNum) + '.txt', txtBlob, { blob: true })
return
}
zip.file((0,utils/* addZeroForNum */.xo)(index + 1, this.imgIndexBitNum) + '.' + suffix, imgblob, { blob: true })
})
zip.generateAsync({
type: 'blob',
compression: 'DEFLATE',
compressionOptions: {
level: 9
}
}).then((zipblob) => {
const name = comicName + '\\' + downChapterName + '.zip'
this.downloadFile(name, zipblob)
resolve()
return
})
})
}
async combineImages(workerId) {
const maxSplicingHeight = (0,setup/* getStorage */.cF)('maxSplicingHeight')
const { comicName, downChapterName } = this.worker[workerId]
let imgNum = 0
let curHeight = 0
let totalHeight = 0
const saveImg = []
const _this = this
async function asyncLoadImg(src) {
return new Promise((resolve, reject) => {
const img = document.createElement('img')
img.onload = () => {
resolve(img)
}
img.onerror = () => {
const error = new Error(`图片加载失败,url:${src}`)
console.log('combineImages-e: ', error)
reject('')
}
img.src = src
})
}
async function asyncCanvas(canvas, name) {
return new Promise((resolve, reject) => {
canvas.toBlob(async function(imgblob) {
await _this.downloadFile(name, imgblob)
resolve()
}, 'image/jpeg', 0.8)
})
}
for (let index = 0; index < this.workerDownInfo[workerId].length; index++) {
const data = this.workerDownInfo[workerId][index]
// 去除不是图片类型
if (data.blob === 1 || data.blob === 0 || !data.blob.type.includes('image')) {
this.worker[workerId].hasError = true
const error_name = comicName + '\\' + downChapterName + '\\error_' + (0,utils/* addZeroForNum */.xo)(index + 1, this.imgIndexBitNum) + '.txt'
const imgurl = this.workerDownInfo[workerId][index].imgurl
const newBlob = new Blob([imgurl], { type: 'text/plain' })
_this.downloadFile(error_name, newBlob)
continue
}
const newurl = window.URL.createObjectURL(data.blob)
const image = await asyncLoadImg(newurl)
if (image === '') {
continue
}
if (totalHeight === 0) {
const obj = { num: imgNum, width: image.width, height: image.height, img: [image] }
curHeight = image.height
totalHeight += image.height
saveImg.push(obj)
continue
}
if (curHeight + image.height > maxSplicingHeight) {
const newobj = { num: ++imgNum, width: image.width, height: image.height, img: [image] }
curHeight = image.height
saveImg.push(newobj)
} else {
curHeight += image.height
saveImg[imgNum].height += image.height
saveImg[imgNum].img.push(image)
}
totalHeight += image.height
}
const canvas = document.createElement('canvas')
const context = canvas.getContext('2d')
let offsetY = 0
for (let i = 0; i < saveImg.length; i++) {
const item = saveImg[i]
canvas.width = item.width
canvas.height = item.height
offsetY = 0
for (let len = 0; len < item.img.length; len++) {
const element = item.img[len]
context.drawImage(element, 0, offsetY, element.width, element.height)
offsetY = offsetY + parseInt(element.height)
}
const name = comicName + '\\' + downChapterName + '\\' + (0,utils/* addZeroForNum */.xo)(item.num + 1, this.imgIndexBitNum) + '.jpg'
await asyncCanvas(canvas, name)
}
return new Promise((resolve, reject) => {
resolve(true)
})
}
}
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/down.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ const downvue_type_script_lang_js_ = ({
name: 'Down',
data() {
return {
collapseActiveName: ['1', '2', '3'],
comicName: null,
currentDomain: '当前记录 ' + (0,utils/* getdomain */.m1)(),
queue: {
'worker': '',
'list': '',
'workeredList': ''
},
maxChapterNum: 3,
maxPictureNum: 2,
imgIndexBitNum: 3,
historyData: []
}
},
watch: {
},
mounted() {
console.clear()
this.$bus.$on('selectDown', this.downInit)
},
created() {
this.$bus.$on('getComicName', this.getComicName)
this.getHistoryData()
},
methods: {
getComicName(value) {
if (value !== '------') { this.comicName = value }
},
downInit(arr) {
if (this.queue.worker === '') {
this.maxChapterNum = (0,setup/* getStorage */.cF)('maxChapterNum')
this.maxPictureNum = (0,setup/* getStorage */.cF)('maxPictureNum')
this.imgIndexBitNum = (0,setup/* getStorage */.cF)('imgIndexBitNum')
this.queue = new Queue(this.maxChapterNum, this.maxPictureNum, this.imgIndexBitNum, this)
}
this.queue.addList(arr)
this.queue.run()
},
getHistoryData() {
const data = localStorage.getItem('ylComicDownHistory')
this.historyData = JSON.parse(data || '[]')
},
deleteHistoryData(index, id) {
this.historyData.splice(index, 1)
let data = localStorage.getItem('ylComicDownHistory')
let historyData = JSON.parse(data || '[]')
historyData = historyData.filter((item) => item.id !== id)
data = JSON.stringify(historyData)
localStorage.setItem('ylComicDownHistory', data)
},
deleteAllHistoryData() {
external_vant_.Dialog.confirm({
getContainer: '.card',
message: '确认全部删除'
})
.then(() => {
this.historyData.splice(0, this.historyData.length)
localStorage.setItem('ylComicDownHistory', '[]')
})
.catch(() => {
// on cancel
})
},
jump(url) {
window.open(url, '_blank')
// window.location.href = url
}
}
});
;// CONCATENATED MODULE: ./src/views/down.vue?vue&type=script&lang=js&
/* harmony default export */ const views_downvue_type_script_lang_js_ = (downvue_type_script_lang_js_);
// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/down.vue?vue&type=style&index=0&id=1e855a88&lang=less&scoped=true&
var downvue_type_style_index_0_id_1e855a88_lang_less_scoped_true_ = __webpack_require__(961);
;// CONCATENATED MODULE: ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/views/down.vue?vue&type=style&index=0&id=1e855a88&lang=less&scoped=true&
var downvue_type_style_index_0_id_1e855a88_lang_less_scoped_true_options = {};
downvue_type_style_index_0_id_1e855a88_lang_less_scoped_true_options.styleTagTransform = (styleTagTransform_default());
downvue_type_style_index_0_id_1e855a88_lang_less_scoped_true_options.setAttributes = (setAttributesWithoutAttributes_default());
downvue_type_style_index_0_id_1e855a88_lang_less_scoped_true_options.insert = insertBySelector_default().bind(null, "head");
downvue_type_style_index_0_id_1e855a88_lang_less_scoped_true_options.domAPI = (styleDomAPI_default());
downvue_type_style_index_0_id_1e855a88_lang_less_scoped_true_options.insertStyleElement = (insertStyleElement_default());
var downvue_type_style_index_0_id_1e855a88_lang_less_scoped_true_update = injectStylesIntoStyleTag_default()(downvue_type_style_index_0_id_1e855a88_lang_less_scoped_true_/* default */.Z, downvue_type_style_index_0_id_1e855a88_lang_less_scoped_true_options);
/* harmony default export */ const views_downvue_type_style_index_0_id_1e855a88_lang_less_scoped_true_ = (downvue_type_style_index_0_id_1e855a88_lang_less_scoped_true_/* default */.Z && downvue_type_style_index_0_id_1e855a88_lang_less_scoped_true_/* default.locals */.Z.locals ? downvue_type_style_index_0_id_1e855a88_lang_less_scoped_true_/* default.locals */.Z.locals : undefined);
;// CONCATENATED MODULE: ./src/views/down.vue?vue&type=style&index=0&id=1e855a88&lang=less&scoped=true&
;// CONCATENATED MODULE: ./src/views/down.vue
;
/* normalize component */
var down_component = normalizeComponent(
views_downvue_type_script_lang_js_,
downvue_type_template_id_1e855a88_scoped_true_render,
downvue_type_template_id_1e855a88_scoped_true_staticRenderFns,
false,
null,
"1e855a88",
null
)
/* hot reload */
if (false) { var down_api; }
down_component.options.__file = "src/views/down.vue"
/* harmony default export */ const down = (down_component.exports);
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/search.vue?vue&type=template&id=4ad41bb8&scoped=true&
var searchvue_type_template_id_4ad41bb8_scoped_true_render = function () {
var this$1 = this
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
return _c(
"div",
{
directives: [
{
name: "show",
rawName: "v-show",
value: _vm.showSearchPage,
expression: "showSearchPage",
},
],
attrs: { id: "search-page" },
},
[
_c(
"div",
{ attrs: { id: "search-page-top" } },
[
_c("van-sticky", [
_c(
"div",
{ staticClass: "search-input-btn" },
[
_c("van-loading", {
directives: [
{
name: "show",
rawName: "v-show",
value: _vm.showSearchLoad,
expression: "showSearchLoad",
},
],
attrs: { color: "#ee0000", type: "spinner", size: "25" },
}),
_vm._v(" "),
_c("input", {
directives: [
{
name: "model",
rawName: "v-model",
value: _vm.inputSeachword,
expression: "inputSeachword",
},
],
attrs: { type: "text", name: "searchword" },
domProps: { value: _vm.inputSeachword },
on: {
keyup: function ($event) {
if (
!$event.type.indexOf("key") &&
_vm._k($event.keyCode, "enter", 13, $event.key, "Enter")
) {
return null
}
return _vm.search(_vm.inputSeachword)
},
input: function ($event) {
if ($event.target.composing) {
return
}
_vm.inputSeachword = $event.target.value
},
},
}),
_vm._v(" "),
_c(
"van-button",
{
attrs: { size: "small" },
on: {
click: function ($event) {
return _vm.search(_vm.inputSeachword)
},
},
},
[_vm._v("搜索")]
),
],
1
),
]),
_vm._v(" "),
_c("van-icon", {
attrs: { id: "close-search-btn", name: "close", color: "#66ccff" },
on: {
click: function () {
this$1.showSearchPage = !this$1.showSearchPage
},
},
}),
],
1
),
_vm._v(" "),
_c(
"div",
{ attrs: { id: "search-page-bottom" } },
[
_c(
"div",
{
directives: [
{
name: "show",
rawName: "v-show",
value: _vm.showResult.length !== 0,
expression: "showResult.length !== 0",
},
],
},
[
_c(
"van-collapse",
{
model: {
value: _vm.activeNames,
callback: function ($$v) {
_vm.activeNames = $$v
},
expression: "activeNames",
},
},
_vm._l(_vm.showResult, function (item, index) {
return _c(
"van-collapse-item",
{
key: index,
staticClass: "origin-list",
attrs: { title: item.webName, name: index },
},
[
_c(
"van-cell-group",
{
style: {
textAlign: "left",
background: "rgb(245 245 245 / 33%)",
padding: "2px 0",
},
},
_vm._l(item.findres, function (item2, index2) {
return _c(
"div",
{
key: index2,
staticClass: "origin-image-list",
attrs: { title: item2.name },
on: {
click: function ($event) {
return _vm.toResultWeb(item2.url)
},
},
},
[
_c("van-image", {
attrs: {
width: "100",
height: "150",
src: item2.imageUrl,
},
on: {
error: function ($event) {
return _vm.loadImgError(item2, item.webName)
},
},
scopedSlots: _vm._u(
[
{
key: "loading",
fn: function () {
return [
_c("van-loading", {
attrs: {
type: "spinner",
size: "25",
},
}),
]
},
proxy: true,
},
],
null,
true
),
}),
_vm._v(" "),
_c("p", [_vm._v(_vm._s(item2.name))]),
],
1
)
}),
0
),
],
1
)
}),
1
),
],
1
),
_vm._v(" "),
_c("van-empty", {
directives: [
{
name: "show",
rawName: "v-show",
value: _vm.showResult.length === 0,
expression: "showResult.length === 0",
},
],
attrs: { description: "搜索内容" },
}),
],
1
),
]
)
}
var searchvue_type_template_id_4ad41bb8_scoped_true_staticRenderFns = []
searchvue_type_template_id_4ad41bb8_scoped_true_render._withStripped = true
;// CONCATENATED MODULE: ./src/components/search.vue?vue&type=template&id=4ad41bb8&scoped=true&
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/search.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ const searchvue_type_script_lang_js_ = ({
name: 'SearchPage',
data() {
return {
showSearchPage: false,
inputSeachword: '',
showSearchLoad: false,
searchTime: 0,
activeNames: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],
searcKey: '',
searchInfo: [],
showResult: [],
showSearchPart: false
}
},
watch: {
'searchInfo.length': {
handler(newLen, oldLen) {
if (newLen !== oldLen) {
this.getSearchContent(newLen)
}
}
}
},
mounted() {
this.$bus.$on('showSearchPage', () => { this.showSearchPage = !this.showSearchPage })
},
methods: {
toResultWeb(url) {
window.open(url, '_blank')
},
async loadImgError(item, name) {
const url = item.imageUrl
item.imgErrorTime === undefined ? item.imgErrorTime = 0 : ''
if (item.imgErrorTime !== 1) {
const blob = await (0,utils/* request */.WY)({
method: 'get',
url,
responseType: 'blob',
headers: item.headers || '',
timeout: 10000 })
const newUrl = window.URL.createObjectURL(blob.response)
item.imgErrorTime++
item.imageUrl = newUrl
}
},
getSearchContent(len) {
const oneWebInfo = this.searchInfo[len - 1]
this.showResult.push(oneWebInfo)
},
async search(keyword) {
if (keyword.length < 2) {
(0,external_vant_.Toast)({
message: '至少2个字符',
getContainer: '#search-page',
position: 'center'
})
return
}
this.searchTime++
const currentSearchTime = this.searchTime
this.showSearchLoad = true
this.showResult = []
for (let i = 0; i < comics/* comicsWebInfo.length */.Os.length; i++) {
const item = comics/* comicsWebInfo */.Os[i]
if (!item.searchTemplate_1 && !item.searchFun) {
continue
}
let findres = []
if (item.searchTemplate_1) {
try {
findres = await (0,comics/* searchFunTemplate_1 */.Ni)(item, keyword)
} catch (error) {
(0,external_vant_.Toast)({
message: item.webName + '\n' + error,
getContainer: '#search-page',
position: 'center'
})
}
}
if (!item.searchTemplate_1 && item.searchFun) {
try {
findres = await item.searchFun(keyword)
} catch (error) {
(0,external_vant_.Toast)({
message: item.webName + '\n' + error,
getContainer: '#search-page',
position: 'center'
})
}
}
if (currentSearchTime === this.searchTime) {
let showLen
findres.length > 8 ? showLen = 8 : showLen = findres.length
this.searchInfo.push({
webName: item.webName,
findres: findres.slice(0, showLen)
})
}
}
this.showSearchLoad = false
}
}
});
;// CONCATENATED MODULE: ./src/components/search.vue?vue&type=script&lang=js&
/* harmony default export */ const components_searchvue_type_script_lang_js_ = (searchvue_type_script_lang_js_);
// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/search.vue?vue&type=style&index=0&id=4ad41bb8&lang=less&scoped=true&
var searchvue_type_style_index_0_id_4ad41bb8_lang_less_scoped_true_ = __webpack_require__(627);
;// CONCATENATED MODULE: ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/search.vue?vue&type=style&index=0&id=4ad41bb8&lang=less&scoped=true&
var searchvue_type_style_index_0_id_4ad41bb8_lang_less_scoped_true_options = {};
searchvue_type_style_index_0_id_4ad41bb8_lang_less_scoped_true_options.styleTagTransform = (styleTagTransform_default());
searchvue_type_style_index_0_id_4ad41bb8_lang_less_scoped_true_options.setAttributes = (setAttributesWithoutAttributes_default());
searchvue_type_style_index_0_id_4ad41bb8_lang_less_scoped_true_options.insert = insertBySelector_default().bind(null, "head");
searchvue_type_style_index_0_id_4ad41bb8_lang_less_scoped_true_options.domAPI = (styleDomAPI_default());
searchvue_type_style_index_0_id_4ad41bb8_lang_less_scoped_true_options.insertStyleElement = (insertStyleElement_default());
var searchvue_type_style_index_0_id_4ad41bb8_lang_less_scoped_true_update = injectStylesIntoStyleTag_default()(searchvue_type_style_index_0_id_4ad41bb8_lang_less_scoped_true_/* default */.Z, searchvue_type_style_index_0_id_4ad41bb8_lang_less_scoped_true_options);
/* harmony default export */ const components_searchvue_type_style_index_0_id_4ad41bb8_lang_less_scoped_true_ = (searchvue_type_style_index_0_id_4ad41bb8_lang_less_scoped_true_/* default */.Z && searchvue_type_style_index_0_id_4ad41bb8_lang_less_scoped_true_/* default.locals */.Z.locals ? searchvue_type_style_index_0_id_4ad41bb8_lang_less_scoped_true_/* default.locals */.Z.locals : undefined);
;// CONCATENATED MODULE: ./src/components/search.vue?vue&type=style&index=0&id=4ad41bb8&lang=less&scoped=true&
;// CONCATENATED MODULE: ./src/components/search.vue
;
/* normalize component */
var search_component = normalizeComponent(
components_searchvue_type_script_lang_js_,
searchvue_type_template_id_4ad41bb8_scoped_true_render,
searchvue_type_template_id_4ad41bb8_scoped_true_staticRenderFns,
false,
null,
"4ad41bb8",
null
)
/* hot reload */
if (false) { var search_api; }
search_component.options.__file = "src/components/search.vue"
/* harmony default export */ const search = (search_component.exports);
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/app.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
// import { request, downFile } from './utils/index'
/* harmony default export */ const appvue_type_script_lang_js_ = ({
name: 'App',
components: {
Home: home, Table: table, Down: down, Setting: setting, Search: search
},
data() {
return {
isHide: true,
showSearchPage: false,
active: 1,
titles: ['漫画网站', '加载', '下载', '设置'],
comicInfo: {}
}
},
computed: {
current: function() {
return this.active
}
},
watch: {
active(val) {
this.$refs.swipe.swipeTo(val)
}
},
created() {
this.Init()
},
mounted() {
this.$bus.$on('changTab', (val) => { this.active = val })
},
methods: {
hide() {
this.isHide = !this.isHide
},
async Init() {
(0,comics/* matchWeb */.HL)(window.location.href)
},
async test() {
}
}
});
;// CONCATENATED MODULE: ./src/app.vue?vue&type=script&lang=js&
/* harmony default export */ const src_appvue_type_script_lang_js_ = (appvue_type_script_lang_js_);
// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/app.vue?vue&type=style&index=0&id=5ef48958&lang=scss&scoped=true&
var appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_ = __webpack_require__(857);
;// CONCATENATED MODULE: ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/app.vue?vue&type=style&index=0&id=5ef48958&lang=scss&scoped=true&
var appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_options = {};
appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_options.styleTagTransform = (styleTagTransform_default());
appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_options.setAttributes = (setAttributesWithoutAttributes_default());
appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_options.insert = insertBySelector_default().bind(null, "head");
appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_options.domAPI = (styleDomAPI_default());
appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_options.insertStyleElement = (insertStyleElement_default());
var appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_update = injectStylesIntoStyleTag_default()(appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_/* default */.Z, appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_options);
/* harmony default export */ const lib_vue_loader_options_src_appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_ = (appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_/* default */.Z && appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_/* default.locals */.Z.locals ? appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_/* default.locals */.Z.locals : undefined);
;// CONCATENATED MODULE: ./src/app.vue?vue&type=style&index=0&id=5ef48958&lang=scss&scoped=true&
// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/app.vue?vue&type=style&index=1&id=5ef48958&lang=less&scoped=true&
var appvue_type_style_index_1_id_5ef48958_lang_less_scoped_true_ = __webpack_require__(658);
;// CONCATENATED MODULE: ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[2]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/app.vue?vue&type=style&index=1&id=5ef48958&lang=less&scoped=true&
var appvue_type_style_index_1_id_5ef48958_lang_less_scoped_true_options = {};
appvue_type_style_index_1_id_5ef48958_lang_less_scoped_true_options.styleTagTransform = (styleTagTransform_default());
appvue_type_style_index_1_id_5ef48958_lang_less_scoped_true_options.setAttributes = (setAttributesWithoutAttributes_default());
appvue_type_style_index_1_id_5ef48958_lang_less_scoped_true_options.insert = insertBySelector_default().bind(null, "head");
appvue_type_style_index_1_id_5ef48958_lang_less_scoped_true_options.domAPI = (styleDomAPI_default());
appvue_type_style_index_1_id_5ef48958_lang_less_scoped_true_options.insertStyleElement = (insertStyleElement_default());
var appvue_type_style_index_1_id_5ef48958_lang_less_scoped_true_update = injectStylesIntoStyleTag_default()(appvue_type_style_index_1_id_5ef48958_lang_less_scoped_true_/* default */.Z, appvue_type_style_index_1_id_5ef48958_lang_less_scoped_true_options);
/* harmony default export */ const lib_vue_loader_options_src_appvue_type_style_index_1_id_5ef48958_lang_less_scoped_true_ = (appvue_type_style_index_1_id_5ef48958_lang_less_scoped_true_/* default */.Z && appvue_type_style_index_1_id_5ef48958_lang_less_scoped_true_/* default.locals */.Z.locals ? appvue_type_style_index_1_id_5ef48958_lang_less_scoped_true_/* default.locals */.Z.locals : undefined);
;// CONCATENATED MODULE: ./src/app.vue?vue&type=style&index=1&id=5ef48958&lang=less&scoped=true&
;// CONCATENATED MODULE: ./src/app.vue
;
/* normalize component */
var app_component = normalizeComponent(
src_appvue_type_script_lang_js_,
render,
staticRenderFns,
false,
null,
"5ef48958",
null
)
/* hot reload */
if (false) { var app_api; }
app_component.options.__file = "src/app.vue"
/* harmony default export */ const app = (app_component.exports);
// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/global.scss
var global = __webpack_require__(452);
;// CONCATENATED MODULE: ./src/styles/global.scss
var global_options = {};
global_options.styleTagTransform = (styleTagTransform_default());
global_options.setAttributes = (setAttributesWithoutAttributes_default());
global_options.insert = insertBySelector_default().bind(null, "head");
global_options.domAPI = (styleDomAPI_default());
global_options.insertStyleElement = (insertStyleElement_default());
var global_update = injectStylesIntoStyleTag_default()(global/* default */.Z, global_options);
/* harmony default export */ const styles_global = (global/* default */.Z && global/* default.locals */.Z.locals ? global/* default.locals */.Z.locals : undefined);
// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[2]!./src/styles/global.less
var cjs_clonedRuleSet_3_0_rules_0_use_2_src_styles_global = __webpack_require__(205);
;// CONCATENATED MODULE: ./src/styles/global.less
var styles_global_options = {};
styles_global_options.styleTagTransform = (styleTagTransform_default());
styles_global_options.setAttributes = (setAttributesWithoutAttributes_default());
styles_global_options.insert = insertBySelector_default().bind(null, "head");
styles_global_options.domAPI = (styleDomAPI_default());
styles_global_options.insertStyleElement = (insertStyleElement_default());
var styles_global_update = injectStylesIntoStyleTag_default()(cjs_clonedRuleSet_3_0_rules_0_use_2_src_styles_global/* default */.Z, styles_global_options);
/* harmony default export */ const src_styles_global = (cjs_clonedRuleSet_3_0_rules_0_use_2_src_styles_global/* default */.Z && cjs_clonedRuleSet_3_0_rules_0_use_2_src_styles_global/* default.locals */.Z.locals ? cjs_clonedRuleSet_3_0_rules_0_use_2_src_styles_global/* default.locals */.Z.locals : undefined);
// EXTERNAL MODULE: ./src/config/index.js
var config = __webpack_require__(758);
;// CONCATENATED MODULE: ./src/main.js
/* eslint-disable no-undef */
var id = null
var appLoadDefault = null
var tryLoadTimes = 0
loadMenu(tryLoadTimes)
function loadMenu() {
tryLoadTimes += 1
try {
appLoadDefault = (0,setup/* getStorage */.cF)('appLoadDefault')
GM_registerMenuCommand(`加载UI (Alt + ${appLoadDefault.loadHotKey})`, loadUI)
GM_registerMenuCommand(`重置所有数据`, setup/* setinit */.zU)
document.addEventListener('keydown', (e) => {
if (e.altKey && e.key.toUpperCase() === appLoadDefault.loadHotKey.toUpperCase()) {
loadUI(0)
}
})
if (appLoadDefault.isShowUI) {
loadUI(0)
}
} catch (error) {
console.log('loadError: ', error)
loadUI(tryLoadTimes)
}
}
async function loadUI(times) {
if (id !== null) {
return
}
if (!config/* isDev */.r8) {
(0,setup/* appLoadinit */.Iq)()
// 首次运行脚本无存储数据,无加载菜单, 重新载入
if (times === 1) {
loadMenu()
return
}
}
var Vant = await Promise.resolve(/* import() */).then(__webpack_require__.t.bind(__webpack_require__, 871, 23))
// import ('vant/lib/index.css')
external_Vue_default().use(Vant)
id = `app_vue_${Date.now()}`
const root = document.createElement('div')
root.id = id
document.body.appendChild(root)
;(external_Vue_default()).prototype.$bus = new (external_Vue_default())()
;(external_Vue_default()).prototype.$getType = utils/* getType */.oL
if (config/* isDev */.r8) {
(0,utils/* loadStyle2 */.HM)('https://unpkg.com/vant@2.12/lib/index.css').then((res) => {
new (external_Vue_default())({
el: `#${id}`,
render: h => h(app)
})
})
} else {
// eslint-disable-next-line no-undef
GM_addStyle(GM_getResourceText('vantcss'))
new (external_Vue_default())({
el: `#${id}`,
render: h => h(app)
})
}
}
})();
/******/ })()
;