diff --git a/package.json b/package.json index 5aadfb0c7..e9e6dc116 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pt-plugin-plus", - "version": "1.4.8", + "version": "1.4.9", "author": { "name": "ronggang", "url": "https://github.com/ronggang" diff --git a/public/manifest.json b/public/manifest.json index de0d17295..35e9e3169 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_manifest_appName__", "short_name": "__MSG_manifest_shortName__", - "version": "1.4.8", + "version": "1.4.9", "description": "__MSG_manifest_appDescription__", "manifest_version": 2, "default_locale": "zh_CN", diff --git a/resource/publicSites/imdb.com/config.json b/resource/publicSites/imdb.com/config.json index 5c93f49a9..af7baad21 100644 --- a/resource/publicSites/imdb.com/config.json +++ b/resource/publicSites/imdb.com/config.json @@ -3,7 +3,7 @@ "ver": "0.0.1", "plugins": [{ "name": "电影详情页", - "pages": ["\/title\/tt\\d+\/"], + "pages": ["^\/title\/tt\\d+\/?$"], "scripts": ["subject.js"] }, { "name": "Top", diff --git a/resource/schemas/Common/torrents.js b/resource/schemas/Common/torrents.js index c73d05956..d0e6154c4 100644 --- a/resource/schemas/Common/torrents.js +++ b/resource/schemas/Common/torrents.js @@ -25,13 +25,14 @@ // "获取下载链接失败,未能正确定位到链接"; return this.t("getDownloadURLsFailed"); } - - let urls = $.map(links, item => { - let url = $(item).attr("href"); - return this.getFullURL(url); - }); - - return urls; + if (typeof(links[0])!="string"){ + let urls = $.map(links, item => { + let url = $(item).attr("href"); + return this.getFullURL(url); + }); + return urls; + } + return links } /** diff --git a/resource/schemas/NexusPHP/getSearchResult.js b/resource/schemas/NexusPHP/getSearchResult.js index b3d482295..a633538f6 100644 --- a/resource/schemas/NexusPHP/getSearchResult.js +++ b/resource/schemas/NexusPHP/getSearchResult.js @@ -277,9 +277,44 @@ .html(cell.html().replace("
", " ")) .text(); } + if (options.site.host === "pt.sjtu.edu.cn") { + if (time.match(/\d+[分时天月年]/g)) { + time = Date.now() - this._parseTime(time) + time = new Date(time).toLocaleString("zh-CN", {hour12: false}).replace(/\//g,'-') + } + } return time || ""; } + _parseTime (timeString) { + const timeMatch = timeString.match(/\d+[分时天月年]/g) + let length = 0 + timeMatch.forEach(time => { + const timeMatch = time.match(/(\d+)([分时天月年])/) + const number = parseInt(timeMatch[1]) + const unit = timeMatch[2] + switch (true) { + case unit === '分': + length += number + break + case unit === '时': + length += number * 60 + break + case unit === '天': + length += number * 60 * 24 + break + case unit === '月': + length += number * 60 * 24 * 30 + break + case unit === '年': + length += number * 60 * 24 * 365 + break + default: + } + }) + return length * 60 * 1000 + } + /** * 获取标题 */ diff --git a/resource/schemas/UNIT3D/config.json b/resource/schemas/UNIT3D/config.json index e7f5546ea..f3956afe1 100644 --- a/resource/schemas/UNIT3D/config.json +++ b/resource/schemas/UNIT3D/config.json @@ -11,7 +11,7 @@ "scripts": ["/schemas/NexusPHP/common.js", "torrents.js"] }], "searchEntryConfig": { - "page": "/filterTorrents", + "page": "/torrents/filter", "queryString": "search=$key$", "area": [{ "name": "IMDB", @@ -21,6 +21,24 @@ "tt", "" ] }], + "fieldSelector": { + "progress": { + "selector": ["button.btn.btn-success.btn-circle", "button.btn.btn-warning.btn-circle, button.btn.btn-info.btn-circle", ""], + "switchFilters": [ + ["100"], + ["0"], + ["null"] + ] + }, + "status": { + "selector": ["button.btn.btn-success.btn-circle", "button.btn.btn-warning.btn-circle", "button.btn.btn-info.btn-circle"], + "switchFilters": [ + ["2"], + ["1"], + ["3"] + ] + } + }, "resultType": "html", "parseScriptFile": "/schemas/UNIT3D/getSearchResult.js", "resultSelector": "div.table-responsive > table:first" @@ -40,15 +58,13 @@ "userBaseInfo": { "page": "/", "fields": { - "id": { - "selector": ["a[href*='mail/inbox']:first"], - "attribute": "href", - "filters": ["query ? query.getQueryString('id'):''"] - }, "name": { - "selector": ["a[href*='mail/inbox']:first"], + "selector": ["a[href*='settings']:first"], "attribute": "href", - "filters": ["query ? query.getQueryString('username'):''"] + "switchFilters": [ + ["query.match(/users\\/(.+)\\/settings/)", "(query && query.length>=2)?(query[1]):''"], + ["query ? query.getQueryString('id'):''"] + ] }, "uploaded": { "selector": ["div.ratio-bar i.fa-arrow-up"], @@ -69,7 +85,7 @@ } }, "userExtendInfo": { - "page": "/$user.name$.$user.id$", + "page": "/users/$user.name$", "fields": { "seedingSize": { "selector": ["table.table-condensed.table-striped.table-bordered:first td:contains('Seeding Size') + td", "table.table-condensed.table-striped.table-bordered:first td:contains('做种体积') + td", "table.table-condensed.table-striped.table-bordered:first td:contains('做種體積') + td"], @@ -79,7 +95,7 @@ "selector": "div.content span.badge-user" }, "messageCount": { - "selector": ["ul.left-navbar a[href*='/mail/inbox'] .point"], + "selector": [".point"], "filters": ["query.length?'11':'0'"] }, "joinTime": { diff --git a/resource/schemas/UNIT3D/getSearchResult.js b/resource/schemas/UNIT3D/getSearchResult.js index 05a583c83..2968bcd99 100644 --- a/resource/schemas/UNIT3D/getSearchResult.js +++ b/resource/schemas/UNIT3D/getSearchResult.js @@ -20,6 +20,7 @@ return []; } let site = options.site; + site.searchEntryConfig = options.entry let selector = options.resultSelector || "div.table-responsive > table:first"; let table = options.page.find(selector); @@ -194,7 +195,7 @@ .eq(fieldIndex.time) .find("span[title]") .attr("title") || - cells.eq(fieldIndex.time).text() || + cells.eq(fieldIndex.time).text().replace('秒前', ' seconds ago').replace('秒前', ' seconds ago').replace('分钟前', ' minutes ago').replace('分鐘前', ' minutes ago').replace('天前', ' day ago').replace('小時前', ' hours ago').replace('小时前', ' hours ago')|| "", author: fieldIndex.author == -1 diff --git a/resource/sites/aidoru-online.me/config.json b/resource/sites/aidoru-online.me/config.json index b9eb04fa3..7bad8dc2b 100644 --- a/resource/sites/aidoru-online.me/config.json +++ b/resource/sites/aidoru-online.me/config.json @@ -2,6 +2,7 @@ "name": "Aidoru!Online", "timezoneOffset": "+0000", "description": "AO", + "icon": "https://aidoru-online.me/themes/default/images/favicon.ico", "url": "https://aidoru-online.me/", "tags": ["偶像"], "schema": "Common", diff --git a/resource/sites/anthelion.me/config.json b/resource/sites/anthelion.me/config.json new file mode 100644 index 000000000..ab7edbefc --- /dev/null +++ b/resource/sites/anthelion.me/config.json @@ -0,0 +1,34 @@ +{ + "name": "Anthelion", + "timezoneOffset": "+0000", + "description": "Movies", + "url": "https://anthelion.me//", + "icon": "https://anthelion.me/favicon.ico", + "tags": ["电影"], + "schema": "GazelleJSONAPI", + "host": "anthelion.me", + "collaborator": "enigamz", + "searchEntryConfig": { + "skipIMDbId": true, + "parseScriptFile": "getSearchResult.js" + }, + "searchEntry": [{ + "name": "all", + "enabled": true + }], + "selectors": { + "userSeedingTorrents": { + "page": "/torrents.php?type=seeding&userid=$user.id$", + "fields": { + "seedingSize": { + "selector": ["tr.torrent_row > td.nobr"], + "filters": ["jQuery.map(query, (item)=>{return $(item).text();})", "_self.getTotalSize(query)"] + }, + "bonus": { + "selector": ["a[href*='store.php']"], + "filters": ["query.text().replace(/,/g,'').match(/.+?([\\d.]+)/)", "(query && query.length>=2)?query[1]:0"] + } + } + } + } +} \ No newline at end of file diff --git a/resource/sites/anthelion.me/getSearchResult.js b/resource/sites/anthelion.me/getSearchResult.js new file mode 100644 index 000000000..026004a0d --- /dev/null +++ b/resource/sites/anthelion.me/getSearchResult.js @@ -0,0 +1,159 @@ +(function(options) { + class Parser { + constructor() { + this.haveData = false; + this.categories = {}; + if (/auth_form/.test(options.responseText)) { + options.status = ESearchResultParseStatus.needLogin; + return; + } + options.isLogged = true; + this.haveData = true; + this.authkey = ""; + this.passkey = ""; + } + + start() { + this.getAuthKey() + .then(() => { + options.resolve(this.getResult()); + }) + .catch(() => { + options.reject({ + success: false, + msg: options.searcher.getErrorMessage( + options.site, + ESearchResultParseStatus.parseError, + options.errorMsg + ), + data: { + site: options.site, + isLogged: options.isLogged + } + }); + }); + } + + /** + * 获取搜索结果 + */ + + getResult() { + if (!this.haveData) { + return []; + } + let site = options.site; + let groups = options.page.response.results; + if (groups.length == 0) { + options.status = ESearchResultParseStatus.noTorrents; + return []; + } + let results = []; + let authkey = this.authkey; + let passkey = this.passkey; + console.log("groups.length", groups.length); + try { + groups.forEach(group => { + if (group.hasOwnProperty("torrents")) { + let torrents = group.torrents; + torrents.forEach(torrent => { + let data = { + title: + group.groupName + + " [" + + group.groupYear + + "]", + subTitle: + torrent.codec + + " / " + + torrent.container + + " / " + + torrent.media + + " / " + + torrent.resolution + + " / " + + torrent.audio + + (torrent.hasLog ? ` / Log(${torrent.logScore})` : "") + + (torrent.hasCue ? " / Cue" : "") + + (torrent.remastered ? ` / ${torrent.remasterYear}` : "") + + (torrent.scene ? " / Scene" : "") + + (torrent.isFreeleech || + torrent.isNeutralLeech || + torrent.isPersonalFreeleech + ? " / Freeleech" + : ""), + link: `${site.url}torrents.php?id=${group.groupId}&torrentid=${torrent.torrentId}`, + url: `${site.url}torrents.php?action=download&id=${torrent.torrentId}&authkey=${authkey}&torrent_pass=${passkey}`, + size: parseFloat(torrent.size), + time: torrent.time, + seeders: torrent.seeders, + leechers: torrent.leechers, + completed: torrent.snatches, + site: site, + entryName: options.entry.name, + category: group.releaseType + }; + results.push(data); + }); + } else { + let data = { + title: group.groupName, + link: `${site.url}torrents.php?id=${group.groupId}&torrentid=${group.torrentId}`, + url: `${site.url}torrents.php?action=download&id=${group.torrentId}&authkey=${authkey}&torrent_pass=${passkey}`, + size: parseFloat(group.size), + time: group.groupTime, + author: "", + seeders: group.seeders, + leechers: group.leechers, + completed: group.snatches, + comments: 0, + site: site, + tags: group.tags, + entryName: options.entry.name, + category: group.category + }; + results.push(data); + } + }); + console.log("results.length", results.length); + if (results.length == 0) { + options.status = ESearchResultParseStatus.noTorrents; + } + } catch (error) { + console.log(error); + options.status = ESearchResultParseStatus.parseError; + options.errorMsg = error.stack; + } + return results; + } + + /** + * 获取 AuthKey ,用于组合完整的下载链接 + */ + getAuthKey() { + const url = (options.site.activeURL + "/ajax.php?action=index") + .replace("://", "****") + .replace(/\/\//g, "/") + .replace("****", "://"); + + return new Promise((resolve, reject) => { + $.get(url) + .done(result => { + if (result && result.status === "success" && result.response) { + this.authkey = result.response.authkey; + this.passkey = result.response.passkey; + resolve(); + } else { + reject(); + } + }) + .fail(() => { + reject(); + }); + }); + } + } + + let parser = new Parser(options); + parser.start(); +})(options); diff --git a/resource/sites/asiancinema.me/config.json b/resource/sites/asiancinema.me/config.json index b4e1bffbd..c173a71f1 100644 --- a/resource/sites/asiancinema.me/config.json +++ b/resource/sites/asiancinema.me/config.json @@ -7,37 +7,55 @@ "tags": ["综合"], "schema": "UNIT3D", "host": "asiancinema.me", - "searchEntryConfig": { - "page": "/filterTorrents", - "queryString": "search=$key$", - "area": [{ - "name": "IMDB", - "keyAutoMatch": "^(tt\\d+)$", - "queryString": "imdb=$key$", - "replaceKey": [ - "tt", "" - ] - }], - "fieldSelector": { - "progress": { - "selector": ["button.btn.btn-success.btn-circle", "button.btn.btn-warning.btn-circle, button.btn.btn-info.btn-circle", ""], - "switchFilters": [ - ["100"], - ["0"], - ["null"] - ] - }, - "status": { - "selector": ["button.btn.btn-success.btn-circle", "button.btn.btn-warning.btn-circle", "button.btn.btn-info.btn-circle"], - "switchFilters": [ - ["2"], - ["1"], - ["3"] - ] + "selectors": { + "userBaseInfo": { + "page": "/", + "fields": { + "name": { + "selector": ["a[href*='settings']:first"], + "attribute": "href", + "switchFilters": [ + ["query.match(/users\\/(.+)\\/settings/)", "(query && query.length>=2)?(query[1]):''"], + ["query ? query.getQueryString('id'):''"] + ] + }, + "uploaded": { + "selector": ["span[title='Upload']"], + "filters": ["query.text().trim().replace(/,/g,'')", "(query && query.length>=1)?query.sizeToNumber():0"] + }, + "downloaded": { + "selector": ["span[title='Download']"], + "filters": ["query.text().trim().replace(/,/g,'')", "(query && query.length>=1)?query.sizeToNumber():0"] + }, + "bonus": { + "selector": ["a[title='My Bonus Points']"], + "filters": ["query.text().trim().replace(/ /g,'')"] + }, + "seeding": { + "selector": ["span[title='Seeding']"], + "filters": ["query.text().trim().replace(/,|\\n/g,'')"] + } } }, - "resultType": "html", - "parseScriptFile": "/schemas/UNIT3D/getSearchResult.js", - "resultSelector": "div.table-responsive > table:first" + "userExtendInfo": { + "page": "/users/$user.name$", + "fields": { + "seedingSize": { + "selector": ["table.table-condensed.table-striped.table-bordered:first td:contains('Seeding Size') + td"], + "filters": ["query.text().trim().sizeToNumber()"] + }, + "levelName": { + "selector": "div.content span.badge-user" + }, + "messageCount": { + "selector": [".point"], + "filters": ["query.length?'11':'0'"] + }, + "joinTime": { + "selector": ["div.content h4:contains('Registration date')", "div.content h4:contains('注册日期')", "div.content h4:contains('註冊日期')"], + "filters": ["query.text().replace(/(Registration date|注册日期|註冊日期)/g, '').trim()", "dateTime(query).isValid()?dateTime(query).valueOf():query"] + } + } + } } } \ No newline at end of file diff --git a/resource/sites/avgv.cc/config.json b/resource/sites/avgv.cc/config.json index ad4631bfe..463f91a85 100644 --- a/resource/sites/avgv.cc/config.json +++ b/resource/sites/avgv.cc/config.json @@ -6,5 +6,22 @@ "description": "新加坡华人PT站,很有特色。", "tags": ["成人", "AV", "GAY", "LES"], "host": "avgv.cc", - "collaborator": "xiazhou8" + "collaborator": "xiazhou8", + "searchEntryConfig": { + "fieldSelector": { + "progress": { + "selector": ["div.probar_b1, div.probar_b2, div.probar_b3"], + "filters": ["query.attr('style')||''", "query.match(/width:([ \\d.]+)%/)", "(query && query.length>=2)?query[1]:null"] + + }, + "status": { + "selector": ["img[src='pic/ZZ.png']","div.probar_b1", "img[src='pic/WWC.png']"], + "switchFilters": [ + ["2"], + ["1"], + ["255"] + ] + } + } + } } \ No newline at end of file diff --git a/resource/sites/beyond-hd.me/config.json b/resource/sites/beyond-hd.me/config.json index 5ebef3f9d..3f6410814 100644 --- a/resource/sites/beyond-hd.me/config.json +++ b/resource/sites/beyond-hd.me/config.json @@ -39,10 +39,16 @@ }], "torrentTagSelectors": [{ "name": "Free", - "selector": "i.fa-star text-gold" + "selector": ".fas.fa-star[title*='100%']" }, { - "name": "2xUp", - "selector": "i.fa-globe" + "name": "25%", + "selector": ".fas.fa-star[title*='25%']" + }, { + "name": "50%", + "selector": ".fas.fa-star[title*='50%']" + }, { + "name": "75%", + "selector": ".fas.fa-star[title*='75%']" }], "selectors": { "userBaseInfo": { @@ -109,6 +115,10 @@ "downloadURL": { "selector": ["a.bhd-fl-button[href*='/download/']"], "filters": ["query.attr('href')"] + }, + "sayThanksButton": { + "selector": ["a.bhd-fl-button[title*='Thank']"], + "filters": ["query"] } } } diff --git a/resource/sites/blutopia.xyz/config.json b/resource/sites/blutopia.xyz/config.json index afbb54464..720e33436 100644 --- a/resource/sites/blutopia.xyz/config.json +++ b/resource/sites/blutopia.xyz/config.json @@ -35,6 +35,7 @@ }], "selectors": { "userBaseInfo": { + "merge": true, "page": "/", "fields": { "id": {}, @@ -64,22 +65,6 @@ } } }, - "userExtendInfo": { - "page": "/users/$user.name$", - "fields": { - "seedingSize": { - "selector": ["table.table-condensed.table-striped.table-bordered:first td:contains('Seeding Size') + td"], - "filters": ["query.text().trim().sizeToNumber()"] - }, - "levelName": { - "selector": "div.content span.badge-user" - }, - "joinTime": { - "selector": "div.content h4:contains('Registration date')", - "filters": ["query.text().trim().replace('Registration date ', '')", "dateTime(query).isValid()?dateTime(query).valueOf():query"] - } - } - }, "common": { "fields": { "size": { diff --git a/resource/sites/chdbits.co/config.json b/resource/sites/chdbits.co/config.json index b24ae2422..b44a50d02 100644 --- a/resource/sites/chdbits.co/config.json +++ b/resource/sites/chdbits.co/config.json @@ -98,6 +98,25 @@ "enabled": false } ], + "torrentTagSelectors": [{ + "name": "Free", + "selector": "img.pro_free" + }, { + "name": "2xFree", + "selector": "img.pro_free2up" + }, { + "name": "2xUp", + "selector": "img.pro_2up" + }, { + "name": "2x50%", + "selector": "img.pro_50pctdown2up" + }, { + "name": "30%", + "selector": "img.pro_30pctdown" + }, { + "name": "50%", + "selector": "img.pro_50pctdown" + }], "searchEntryConfig": { "merge": true, "fieldSelector": { diff --git a/resource/sites/cinemageddon.net/config.json b/resource/sites/cinemageddon.net/config.json index 9f6058119..d4363cb38 100644 --- a/resource/sites/cinemageddon.net/config.json +++ b/resource/sites/cinemageddon.net/config.json @@ -76,14 +76,6 @@ "filters": ["jQuery.map(query.find('td:eq(2)'), (item)=>{return $(item).text();})", "_self.getTotalSize(query)"] } } - }, - "/details.php": { - "fields": { - "size": { - "selector": ["td.rowhead:contains('Size') + td"], - "filters": ["query.text().replace(/,/g,'').match(/([\\d.]+ ?[ZEPTGMK]?i?B)/)", "(query && query.length>1)?(query[1]).sizeToNumber():0"] - } - } } } } \ No newline at end of file diff --git a/resource/sites/cinemageddon.net/details.js b/resource/sites/cinemageddon.net/details.js index b6c9d1030..1cce162e4 100644 --- a/resource/sites/cinemageddon.net/details.js +++ b/resource/sites/cinemageddon.net/details.js @@ -10,6 +10,7 @@ * 初始化按钮列表 */ initButtons() { + this.showTorrentSize(); this.initDetailButtons(); } @@ -17,7 +18,7 @@ * 获取下载链接 */ getDownloadURL() { - let query = $("a[href*='download.php?id=']"); + let query = $("a.index[href*='download.php?id=']"); let url = ""; if (query.length > 0) { url = query.attr("href"); @@ -30,12 +31,26 @@ return `${location.origin}/${url}`; } + showTorrentSize() { + let query = $("td.rowhead:contains('Size') + td"); + let size = ""; + if (query.length > 0) { + size = query.text().match(/^[^\(]+/); + // attachment + PTService.addButton({ + title: "当前种子大小", + icon: "attachment", + label: size + }); + } + } + /** * 获取当前种子标题 */ getTitle() { return $(".frames tr:first td.colhead:first") - .text() + .text() .trim(); } } diff --git a/resource/sites/concertos.live/config.json b/resource/sites/concertos.live/config.json new file mode 100644 index 000000000..35ce31f18 --- /dev/null +++ b/resource/sites/concertos.live/config.json @@ -0,0 +1,146 @@ +{ + "name": "Concertos", + "timezoneOffset": "+0000", + "description": "Concertos", + "url": "https://concertos.live/", + "tags": ["MV"], + "schema": "Common", + "plugins": [{ + "name": "种子详情页面", + "pages": ["/torrent/"], + "scripts": ["/schemas/NexusPHP/common.js", "/schemas/Common/details.js"] + }, { + "name": "种子列表", + "pages": ["/torrents"], + "scripts": ["/schemas/NexusPHP/common.js", "/schemas/Common/torrents.js"] + }], + "host": "concertos.live", + "searchEntryConfig": { + "page": "/torrents?title=$key$&order_by=created_at&direction=desc", + "resultType": "html", + "resultSelector": "table.table.table--bordered-big.torrents", + "fieldIndex": { + "category": 0, + "title": 1, + "link": 1, + "url": 1, + "time": 2, + "size": 3, + "author": 1, + "seeders": 4, + "leechers": 5, + "completed": 6 + }, + "fieldSelector": { + "title": { + "selector": ["a.torrents__title"], + "filters": ["query.text()"] + }, + "link": { + "selector": ["a.torrents__title"], + "filters": ["query.attr('href')"] + }, + "url": { + "selector": ["a.torrents__title"], + "filters": ["query.attr('href')", "query + '/download'"] + }, + "time": { + "selector": [""], + "filters": [""] + } + } + }, + "searchEntry": [{ + "name": "全部", + "enabled": true + }], + "torrentTagSelectors": [{ + "name": "Free", + "selector": "img[src='images/freeleech.png']" + }], + "selectors": { + "userBaseInfo": { + "page": "/", + "fields": { + "name": { + "selector": ["div.user-info"], + "filters": ["$(query[0].firstChild).text().trim()"] + }, + "id": { + "selector": [".nav > a.nav__link[href*='/user']:first"], + "filters": ["query.attr('href').replace('https://concertos.live/user/', '')"] + }, + "isLogged": { + "selector": ["div.user-info"], + "filters": ["query.length>0"] + }, + "messageCount": { + "selector": ["div.info-bar"], + "filters": ["query.text().match(/(\\d+)/)", "(query && query.length>=2)?parseInt(query[1]):0"] + }, + "uploaded": { + "selector": [".user-info__item > .fa-upload"], + "filters": ["query.parent().text().trim().replace(/,/g,'').match(/([\\d.]+ ?[ZEPTGMK]?i?B)/)", "(query && query.length>=2)?(query[1]).sizeToNumber():0"] + }, + "downloaded": { + "selector": [".user-info__item > .fa-download"], + "filters": ["query.parent().text().trim().replace(/,/g,'').match(/([\\d.]+ ?[ZEPTGMK]?i?B)/)", "(query && query.length>=2)?(query[1]).sizeToNumber():0"] + }, + "ratio": { + "selector": [".user-info__item > .fa-percent"], + "filters": ["query.parent().text().trim().replace('Ratio: ', '')"] + }, + "levelName": { + "selector": [".user-info__item > .fa-user"], + "filters": ["query.parent().text().trim().split(' ')[0]"] + } + } + }, + "userExtendInfo": { + "page": "/user/$user.id$", + "fields": { + "joinTime": { + "selector": ["div.profile-block__age"], + "filters": ["dateTime(query.text().replace('Member since ', '')).valueOf()"] + }, + "bonus": { + "selector": ["td:contains('BONs') + td"], + "filters": ["query.text().trim().replace(' ', '')"] + + }, + "seeding": { + "selector": ["td:contains('Total Seeding') + td"], + "filters": ["query.text().match(/(\\d+)/)", "(query && query.length>=2)?parseInt(query[1]):0"] + }, + "seedingSize": { + "value": -1 + } + } + }, + "common": { + "page": "/torrent/", + "fields": { + "downloadURL": { + "selector": ["a[href*='/download']"], + "filters": ["query.attr('href')"] + }, + "size": { + "selector": ["td.torrent__meta-title:contains('Size') + td"], + "filters": ["query.text().replace(/,/g,'').match(/([\\d.]+ ?[ZEPTGMK]?i?B)/)", "(query && query.length>1)?(query[1]).sizeToNumber():0"] + }, + "sayThanksButton": { + "selector": ["a[href*='/thank']"], + "filters": ["query"] + }, + "downloadURLs": { + "selector": ["a.torrents__title"], + "filters": ["query.toArray()", "query.map((item)=>{return item.href+'/download'})"] + }, + "confirmSize": { + "selector": ["table.table.table--bordered-big.torrents"], + "filters": ["query.find('td.torrents__size')"] + } + } + } + } +} \ No newline at end of file diff --git a/resource/sites/dxdhd.com/config.json b/resource/sites/dxdhd.com/config.json index 75d5e10eb..92c2ba6f0 100644 --- a/resource/sites/dxdhd.com/config.json +++ b/resource/sites/dxdhd.com/config.json @@ -7,51 +7,6 @@ "tags": ["综合"], "schema": "UNIT3D", "host": "dxdhd.com", - "searchEntryConfig": { - "merge": true, - "page": "/torrents/filter", - "queryString": "search=$key$", - "area": [{ - "name": "IMDB", - "keyAutoMatch": "^(tt\\d+)$", - "queryString": "imdb=$key$", - "replaceKey": [ - "tt", "" - ] - }], - "fieldSelector": { - "progress": { - "selector": ["button.btn.btn-success.btn-circle", "button.btn.btn-warning.btn-circle, button.btn.btn-info.btn-circle", ""], - "switchFilters": [ - ["100"], - ["0"], - ["null"] - ] - }, - "status": { - "selector": ["button.btn.btn-success.btn-circle", "button.btn.btn-warning.btn-circle", "button.btn.btn-info.btn-circle"], - "switchFilters": [ - ["2"], - ["1"], - ["3"] - ] - } - }, - "resultType": "html", - "parseScriptFile": "/schemas/UNIT3D/getSearchResult.js", - "resultSelector": "div.table-responsive > table:first" - }, - "searchEntry": [{ - "name": "全部", - "enabled": true - }], - "torrentTagSelectors": [{ - "name": "Free", - "selector": "i.fas fa-star text-gold" - }, { - "name": "2xUp", - "selector": "i.fas fa-gem text-green" - }], "categories": [{ "entry": "*", "result": "&categories[]=$id$", @@ -86,26 +41,5 @@ "id": 10, "name": "XXX" }] - }], - "selectors": { - "userBaseInfo": { - "merge": true, - "page": "/", - "fields": { - "name": { - "selector": ["a[href*='/users/']:first"], - "filters": ["query[0].href.replace('https://dxdhd.com/users/','')"] - } - } - }, - "userExtendInfo": { - "merge": true, - "page": "/users/$user.name$", - "fields": { - "id": { - "selector": ["table.table-condensed.table-striped.table-bordered:eq(1) td:contains('User ID') + td", "table.table-condensed.table-striped.table-bordered:eq(1) td:contains('用户ID') + td", "table.table-condensed.table-striped.table-bordered:eq(1) td:contains('用ID') + td"] - } - } - } - } + }] } \ No newline at end of file diff --git a/resource/sites/filelist.ro/browse.js b/resource/sites/filelist.io/browse.js similarity index 100% rename from resource/sites/filelist.ro/browse.js rename to resource/sites/filelist.io/browse.js diff --git a/resource/sites/filelist.ro/config.json b/resource/sites/filelist.io/config.json similarity index 96% rename from resource/sites/filelist.ro/config.json rename to resource/sites/filelist.io/config.json index 651c5b938..71c78cf19 100644 --- a/resource/sites/filelist.ro/config.json +++ b/resource/sites/filelist.io/config.json @@ -2,8 +2,8 @@ "name": "FileList", "timezoneOffset": "+0000", "description": "FileList", - "url": "https://filelist.ro/", - "icon": "https://filelist.ro/favicon.ico", + "url": "https://filelist.io/", + "icon": "https://filelist.io/favicon.ico", "tags": ["影视", "综合"], "schema": "FileList", "plugins": [{ @@ -15,7 +15,7 @@ "pages": ["/browse.php"], "scripts": ["/schemas/NexusPHP/common.js", "browse.js"] }], - "host": "filelist.ro", + "host": "filelist.io", "searchEntryConfig": { "page": "/browse.php", "queryString": "search=$key$&cat=0&searchin=1&sort=2", diff --git a/resource/sites/filelist.ro/details.js b/resource/sites/filelist.io/details.js similarity index 100% rename from resource/sites/filelist.ro/details.js rename to resource/sites/filelist.io/details.js diff --git a/resource/sites/filelist.ro/getSearchResult.js b/resource/sites/filelist.io/getSearchResult.js similarity index 100% rename from resource/sites/filelist.ro/getSearchResult.js rename to resource/sites/filelist.io/getSearchResult.js diff --git a/resource/sites/hd-space.org/config.json b/resource/sites/hd-space.org/config.json new file mode 100644 index 000000000..079c219b3 --- /dev/null +++ b/resource/sites/hd-space.org/config.json @@ -0,0 +1,147 @@ +{ + "name": "HD-Space", + "timezoneOffset": "+0000", + "description": "HD-Space", + "url": "https://hd-space.org/", + "icon": "https://hd-space.org/favicon.ico", + "tags": ["影视"], + "schema": "Common", + "plugins": [{ + "name": "种子详情页面", + "pages": ["/index.php"], + "scripts": ["/schemas/NexusPHP/common.js", "details.js"] + }], + "host": "hd-space.org", + "searchEntryConfig": { + "page": "/index.php?page=torrents", + "queryString": "search=$key$&active=0", + "resultType": "html", + "resultSelector": "#bodyarea > table > tbody > tr > td:nth-child(2) > table > tbody > tr:nth-child(3) > td > table > tbody > tr:not(:first-child)", + "dataRowSelector": " > tbody > tr:not(:first-child)", + "area": [{ + "name": "IMDB", + "keyAutoMatch": "^(tt\\d+)$", + "replaceKey": [ + "tt", "IMDB" + ] + }], + "fieldIndex": { + "category": 0, + "title": 1, + "link": 1, + "url": 3, + "comments": 2, + "time": 4, + "size": 5, + "author": 6, + "seeders": 7, + "leechers": 8, + "completed”=": 9 + }, + "fieldSelector": { + "title": { + "selector": [""], + "filters": ["query.get(0).firstChild", "query.nodeValue||query.innerText||0"] + }, + "link": { + "selector": [""], + "filters": ["query.children().attr('href')", "'https://hd-space.org/'+query"] + }, + "url": { + "selector": [""], + "filters": ["query.children().attr('href')", "'https://hd-space.org/'+query"] + } + } + }, + "searchEntry": [{ + "name": "全部", + "enabled": true + }], + "torrentTagSelectors": [{ + "name": "Free", + "selector": "img[src='gold/gold.png'], img[src='images/sf.png']" + }, { + "name": "50%", + "selector": "img[src='gold/silver.png']" + }], + "selectors": { + "userBaseInfo": { + "page": "/index.php", + "fields": { + "id": { + "selector": "a[href*='index.php?page=usercp']:first", + "attribute": "href", + "filters": ["query ? query.getQueryString('uid'):''"] + }, + "name": { + "selector": "td[align='center'][style='text-align:center;']:contains('Welcome back')>span" + }, + "isLogged": { + "selector": ["a[href*='logout.php']"], + "filters": ["query.length>0"] + }, + "messageCount": { + "selector": ["a[href*='do=pm']"], + "filters": ["query.text().match(/(\\d+)/)", "(query && query.length>=2)?parseInt(query[1]):0"] + }, + "uploaded": { + "selector": ["td.green:contains('UP')"], + "filters": ["query.text().replace(/,/g,'').match(/([\\d.]+ ?[ZEPTGMK]?i?B)/)", "(query && query.length>=2)?(query[1]).sizeToNumber():0"] + }, + "downloaded": { + "selector": ["td.red:contains('DL')"], + "filters": ["query.text().replace(/,/g,'').match(/([\\d.]+ ?[ZEPTGMK]?i?B)/)", "(query && query.length>=2)?(query[1]).sizeToNumber():0"] + }, + "ratio": { + "selector": "td.yellow:contains('Ratio')", + "filters": ["parseFloat(query.text().replace(' Ratio: ',''))"] + }, + "levelName": { + "selector": ["td[align='center'][style='text-align:center;']:contains('Rank')"], + "filters": ["query.text().replace('Rank: ','')"] + }, + "bonus": { + "selector": ["td.green:contains('Bonus')"], + "filters": ["query.text().replace('Bonus: ','')"] + }, + "seeding": { + "selector": ["#menu + table > tbody > tr > td:nth-child(4) b > font:nth-child(2)"] + }, + "seedingSize": { + "value": -1 + } + } + }, + "userExtendInfo": { + "page": "/index.php?page=usercp&uid=$user.id$", + "fields": { + "joinTime": { + "selector": ["td.header:contains('Joined on') + td"], + "filters": ["query[0].innerHTML.replace(' ', '').replace(' ', '')", "dateTime(query).valueOf()"] + } + } + }, + "common": { + "page": "/index.php?page=torrent-details", + "merge": true, + "fields": { + "downloadURL": { + "selector": ["a[href*='download.php?id=']"], + "filters": ["query.attr('href')"] + }, + "size": { + "selector": ["td.header:contains('Size') + td"], + "filters": ["query.text().replace(/,/g,'').match(/([\\d.]+ ?[ZEPTGMK]?i?B)/)", "(query && query.length>=2)?(query[1]).sizeToNumber():0"] + }, + "sayThanksButton": { + "selector": ["#ty"], + "filters": ["query"] + } + } + } + }, + "supportedFeatures": { + "imdbSearch": false, + "userData": "◐" + } +} \ No newline at end of file diff --git a/resource/sites/hd-space.org/details.js b/resource/sites/hd-space.org/details.js new file mode 100644 index 000000000..1c7eb358b --- /dev/null +++ b/resource/sites/hd-space.org/details.js @@ -0,0 +1,108 @@ +(function ($, window) { + console.log("this is details.js"); + if(/\?page\=torrent-details/.test(window.location.search)){ + console.log("torrent-details"); + class App extends window.NexusPHPCommon { + init() { + this.initButtons(); + // 设置当前页面 + PTService.pageApp = this; + } + /** + * 初始化按钮列表 + */ + initButtons() { + this.showTorrentSize(); + this.initDetailButtons(); + } + + /** + * 获取下载链接 + */ + getDownloadURL() { + let query = $("a[href*='download.php']:first"); + let url = ""; + if (query.length > 0) { + url = query.attr("href"); + if (url.substr(0, 4) != "http") { + url = PTService.site.url + url; + } + } + + return url; + } + + showTorrentSize() { + let size = PTService.filters.formatSize(PTService.getFieldValue("size")); + PTService.addButton({ + title: "当前种子大小", + icon: "attachment", + label: size + }); + } + /** + * 获取当前种子标题 + */ + getTitle() { + return $("a[href*='download.php']:first").text().trim(); + } + }; + (new App()).init(); + }else if(/\?page\=torrents|seedwanted/.test(window.location.search)){ + class App extends window.NexusPHPCommon { + init() { + // super(); + this.initButtons(); + this.initFreeSpaceButton(); + // 设置当前页面 + PTService.pageApp = this; + } + + /** + * 初始化按钮列表 + */ + initButtons() { + this.initListButtons(); + } + + /** + * 获取下载链接 + */ + getDownloadURLs() { + let links = $("#bodyarea > table > tbody > tr > td:nth-child(2) > table > tbody > tr:nth-child(3) > td > table, #mcol > table > tbody > tr:nth-child(2) > td > table") + .find("a[href*='download.php']") + .toArray(); + let siteURL = PTService.site.url; + if (siteURL.substr(-1) != "/") { + siteURL += "/"; + } + + if (links.length == 0) { + return this.t("getDownloadURLsFailed"); //"获取下载链接失败,未能正确定位到链接"; + } + + let urls = $.map(links, item => { + let link = $(item).attr("href"); + if (link && link.substr(0, 4) != "http") { + link = siteURL + link; + } + return link; + }); + + return urls; + } + + /** + * 确认大小是否超限 + */ + confirmWhenExceedSize() { + return this.confirmSize( + $("table.mainblockcontenttt:first").find( + "td:contains('MiB'),td:contains('GiB'),td:contains('TiB')" + ) + ); + } + } + new App().init(); + } +})(jQuery, window); \ No newline at end of file diff --git a/resource/sites/hd-torrents.org/config.json b/resource/sites/hd-torrents.org/config.json index 7bd66e233..eb6543ba2 100644 --- a/resource/sites/hd-torrents.org/config.json +++ b/resource/sites/hd-torrents.org/config.json @@ -1,11 +1,11 @@ { "name": "HD-Torrents", "timezoneOffset": "+0000", - "description": "HD-Torrents.org - Index", + "description": "HD-Torrents.org", "url": "https://hd-torrents.org/", "icon": "https://hd-torrents.org/favicon.ico", "tags": ["综合"], - "schema": "HD-Torrents", + "schema": "Common", "plugins": [{ "name": "种子详情页面", "pages": ["/details.php"], @@ -29,7 +29,7 @@ }, "dataCacheTime": 60 }, - "queryString": "csrfToken=$beforeSearchData.csrfToken$&search=$key$", + "queryString": "csrfToken=$beforeSearchData.csrfToken$&search=$key$&active=0", "area": [{ "name": "标题", "appendQueryString": "&options=0" @@ -63,13 +63,13 @@ "name": "Free", "selector": "img[src*='free.png']" }, { - "name": "25%", + "name": "75%", "selector": "img[src*='25.png']" }, { "name": "50%", "selector": "img[src*='50.png']" }, { - "name": "75%", + "name": "25%", "selector": "img[src*='75.png']" }], "selectors": { @@ -139,6 +139,20 @@ "filters": ["jQuery.map(query.find('td:eq(1)'), (item)=>{return $(item).text();})", "_self.getTotalSize(query)"] } } + }, + "common": { + "page": "/details.php", + "merge": true, + "fields": { + "size": { + "selector": ["td.detailsleft:contains('Size:') + td"], + "filters": ["query.text().replace(/,/g,'').match(/([\\d.]+ ?[ZEPTGMK]?i?B)/)", "(query && query.length>=2)?(query[1]).sizeToNumber():0"] + }, + "sayThanksButton": { + "selector": ["#ty"], + "filters": ["query"] + } + } } } } \ No newline at end of file diff --git a/resource/sites/hd-torrents.org/details.js b/resource/sites/hd-torrents.org/details.js index 26eb39f09..b8e5d4799 100644 --- a/resource/sites/hd-torrents.org/details.js +++ b/resource/sites/hd-torrents.org/details.js @@ -10,6 +10,7 @@ * 初始化按钮列表 */ initButtons() { + this.showTorrentSize(); this.initDetailButtons(); } @@ -29,6 +30,14 @@ return url; } + showTorrentSize() { + let size = PTService.filters.formatSize(PTService.getFieldValue("size")); + PTService.addButton({ + title: "当前种子大小", + icon: "attachment", + label: size + }); + } /** * 获取当前种子标题 */ diff --git a/resource/sites/hdbits.org/config.json b/resource/sites/hdbits.org/config.json index c1ccf0bf8..c18ee5070 100644 --- a/resource/sites/hdbits.org/config.json +++ b/resource/sites/hdbits.org/config.json @@ -137,8 +137,8 @@ "filters": ["query.length>0"] }, "messageCount": { - "selector": ["span.js-notifications-count"], - "filters": ["query ? (query.text().match(/(\\d+)/) ? parseInt(query[0]):'0') : '0'"] + "selector": ["a.alert-box--pm, span.js-notifications-count"], + "filters": ["query.text().match(/(\\d+)/)", "(query && query.length>=2)?parseInt(query[1]):0"] } } }, diff --git a/resource/sites/jpopsuki.eu/config.json b/resource/sites/jpopsuki.eu/config.json index 160ac6295..9f3340f5c 100644 --- a/resource/sites/jpopsuki.eu/config.json +++ b/resource/sites/jpopsuki.eu/config.json @@ -18,6 +18,10 @@ "resultSelector": "table.torrent_table:last > tbody > tr", "enabled": true }], + "torrentTagSelectors": [{ + "name": "Free", + "selector": "strong:contains('Freeleech!')" + }], "categories": [{ "entry": "*", "result": "&filter_cat[$id$]=1", diff --git a/resource/sites/jpopsuki.eu/getSearchResult.js b/resource/sites/jpopsuki.eu/getSearchResult.js index 0edd7116e..c021aef7b 100644 --- a/resource/sites/jpopsuki.eu/getSearchResult.js +++ b/resource/sites/jpopsuki.eu/getSearchResult.js @@ -10,7 +10,7 @@ if (!"".getQueryString) { }; } -(function(options) { +(function(options, Searcher) { class Parser { constructor() { this.haveData = false; @@ -209,6 +209,7 @@ if (!"".getQueryString) { fieldIndex.comments == -1 ? "" : cells.eq(fieldIndex.comments).text() || 0, + tags: Searcher.getRowTags(site, row), site: site, category: fieldIndex.category == -1 @@ -258,4 +259,4 @@ if (!"".getQueryString) { let parser = new Parser(options); options.results = parser.getResult(); console.log(options.results); -})(options); +})(options, options.searcher); diff --git a/resource/sites/karagarga.in/details.js b/resource/sites/karagarga.in/details.js index edddc5abd..d8885e963 100644 --- a/resource/sites/karagarga.in/details.js +++ b/resource/sites/karagarga.in/details.js @@ -10,6 +10,7 @@ * 初始化按钮列表 */ initButtons() { + this.showTorrentSize(); this.initDetailButtons(); } @@ -17,7 +18,7 @@ * 获取下载链接 */ getDownloadURL() { - let query = $("a[href*='down.php']"); + let query = $("a.index[href*='down.php']"); let url = ""; if (query.length > 0) { url = query.attr("href"); @@ -27,16 +28,29 @@ return ""; } - return `${location.origin}/${url}`; + return `${location.origin}${url}`; + } + + showTorrentSize() { + let query = $("td.heading:contains('Size') + td"); + let size = ""; + if (query.length > 0) { + size = query.text().match(/^[^\(]+/); + // attachment + PTService.addButton({ + title: "当前种子大小", + icon: "attachment", + label: size + }); + } } /** * 获取当前种子标题 */ getTitle() { - return $("table.main h1:first aa[href*='browse.php?dirsearch='] +") + return $("table.main h1:first") .text() - .match(/-(.*)\(/) .trim(); } } diff --git a/resource/sites/moecat.best/config.json b/resource/sites/moecat.best/config.json index 8f9fef41d..361264e6a 100644 --- a/resource/sites/moecat.best/config.json +++ b/resource/sites/moecat.best/config.json @@ -65,5 +65,16 @@ }, { "name": "50%", "selector": "img.pro_50pctdown" - }] + }], + "selectors": { + "/details.php": { + "merge": true, + "fields": { + "downloadURL": { + "selector": ["a[title][href*='downhash=']:first"], + "filters": ["query.attr('href')"] + } + } + } + } } \ No newline at end of file diff --git a/resource/sites/oppaiti.me/config.json b/resource/sites/oppaiti.me/config.json index 6e3e598bd..0a8f1e13a 100644 --- a/resource/sites/oppaiti.me/config.json +++ b/resource/sites/oppaiti.me/config.json @@ -18,12 +18,12 @@ { "queryString": "filter_cat[1]=1", "name": "Movies", - "enabled": true + "enabled": false }, { "queryString": "filter_cat[2]=1", "name": "Anime", - "enabled": true + "enabled": false }, { "queryString": "filter_cat[3]=1", @@ -38,16 +38,30 @@ { "queryString": "filter_cat[5]=1", "name": "Audio", - "enabled": true + "enabled": false }, { "queryString": "filter_cat[6]=1", "name": "Other", - "enabled": true + "enabled": false } ], + "selectors": { + "userSeedingTorrents": { + "page": "/user.php?id=$user.id$", + "fields": { + "seedingSize": { + "selector": ["li:contains('Total Seeding: ') > span"], + "filters": ["query.text().sizeToNumber()"] + }, + "bonus": { + "selector": ["span.stat > a[href]"], + "filters": ["query.text().replace(',', '')"] + } + } + } + }, "supportedFeatures": { - "imdbSearch": false, - "userData": "◐" + "imdbSearch": false } } \ No newline at end of file diff --git a/resource/sites/pt.hd4fans.org/config.json b/resource/sites/pt.hd4fans.org/config.json index 8cf3618f6..480df8f2a 100644 --- a/resource/sites/pt.hd4fans.org/config.json +++ b/resource/sites/pt.hd4fans.org/config.json @@ -4,7 +4,143 @@ "schema": "NexusPHP", "url": "https://pt.hd4fans.org", "icon": "https://pt.hd4fans.org/favicon.ico", - "tags": ["影视", "兽组"], + "tags": [ + "影视", + "兽组" + ], "host": "pt.hd4fans.org", - "collaborator": "lilungpo" -} \ No newline at end of file + "collaborator": "lilungpo, tongyifan", + "searchEntry": [ + { + "name": "全站", + "enabled": true + }, + { + "queryString": "cat401=1", + "name": "电影", + "enabled": false + }, + { + "queryString": "cat404=1", + "name": "纪录片", + "enabled": false + }, + { + "queryString": "cat405=1", + "name": "动漫", + "enabled": false + }, + { + "queryString": "cat402=1", + "name": "电视剧", + "enabled": false + }, + { + "queryString": "cat403=1", + "name": "综艺", + "enabled": false + }, + { + "queryString": "cat406=1", + "name": "MV", + "enabled": false + }, + { + "queryString": "cat407=1", + "name": "体育", + "enabled": false + }, + { + "queryString": "cat409=1", + "name": "其它", + "enabled": false + }, + { + "queryString": "cat408=1", + "name": "音轨", + "enabled": false + } + ], + "categories": [ + { + "entry": "*", + "result": "&cat$id$=1", + "category": [ + { + "id": 401, + "name": "电影" + }, + { + "id": 404, + "name": "纪录片" + }, + { + "id": 405, + "name": "动漫" + }, + { + "id": 402, + "name": "电视剧" + }, + { + "id": 403, + "name": "综艺" + }, + { + "id": 406, + "name": "MV" + }, + { + "id": 407, + "name": "体育" + }, + { + "id": 409, + "name": "其它" + }, + { + "id": 408, + "name": "音轨" + } + ] + } + ], + "torrentTagSelectors": [ + { + "name": "Free", + "selector": "img.pro_free, .free_bg, font.free" + }, + { + "name": "2xFree", + "selector": "img.pro_free2up, font.twoupfree" + }, + { + "name": "2xUp", + "selector": "img.pro_2up, .twoup_bg, font.twoup" + }, + { + "name": "2x50%", + "selector": "img.pro_50pctdown2up, .twouphalfdown_bg, font.twouphalfdown" + }, + { + "name": "30%", + "selector": "img.pro_30pctdown, .thirtypercentdown_bg, font.thirtypercent" + }, + { + "name": "50%", + "selector": "img.pro_50pctdown, .halfdown_bg, font.halfdown" + } + ], + "searchEntryConfig": { + "fieldSelector": { + "progress": { + "selector": [ + "div[class='progressarea'] > div" + ], + "filters": [ + "query.attr('style').match(/(\\d+(?:\\.\\d+)?)%/)[1]" + ] + } + } + } +} diff --git a/resource/sites/pt.keepfrds.com/config.json b/resource/sites/pt.keepfrds.com/config.json index 5d4b6b3aa..d34884a70 100644 --- a/resource/sites/pt.keepfrds.com/config.json +++ b/resource/sites/pt.keepfrds.com/config.json @@ -1,5 +1,5 @@ { - "name": "keepfrds", + "name": "PT@KEEPFRDS", "timezoneOffset": "+0800", "url": "https://pt.keepfrds.com/", "icon": "https://pt.keepfrds.com/static/favicon-64x64.png", diff --git a/resource/sites/pt.sjtu.edu.cn/config.json b/resource/sites/pt.sjtu.edu.cn/config.json index 07d7e59ce..9873d6e11 100644 --- a/resource/sites/pt.sjtu.edu.cn/config.json +++ b/resource/sites/pt.sjtu.edu.cn/config.json @@ -12,6 +12,26 @@ "schema": "NexusPHP", "host": "pt.sjtu.edu.cn", "collaborator": "Rhilip", + "searchEntryConfig": { + "merge": true, + "fieldSelector": { + "progress": { + "selector": ["td.snatched_no_yes, td.snatched_yes_yes", "td.snatched_no_no, td.snatched_yes_no", ""], + "switchFilters": [ + ["100"], + ["0"], + ["null"] + ] + }, + "status": { + "selector": ["td.snatched_no_yes, td.snatched_yes_yes", "td.snatched_no_no, td.snatched_yes_no"], + "switchFilters": [ + ["2"], + ["3"] + ] + } + } + }, "categories": [{ "entry": "*", "result": "cat$id$=1", diff --git a/resource/sites/pterclub.com/config.json b/resource/sites/pterclub.com/config.json index 24bc7ce02..5b70edae9 100644 --- a/resource/sites/pterclub.com/config.json +++ b/resource/sites/pterclub.com/config.json @@ -18,7 +18,7 @@ }, "subTitle": { "selector": ["a[href*='details.php?id='][title]:first"], - "filters": ["query.parent().find('a, b, div').replaceWith(null).end().text().trim()"] + "filters": ["$(query.parent()[0].lastChild).text().trim()"] }, "progress": { "selector": [".progbargreen", ".progbarred + .progbarrest", ".progbarred", ".progbarrest", ""], diff --git a/resource/sites/tjupt.org/config.json b/resource/sites/tjupt.org/config.json index 67ab6998d..2453abd97 100644 --- a/resource/sites/tjupt.org/config.json +++ b/resource/sites/tjupt.org/config.json @@ -151,5 +151,6 @@ } } } - } + }, + "cdn": ["https://www.tjupt.org/"] } \ No newline at end of file diff --git a/resource/sites/u2.dmhy.org/config.json b/resource/sites/u2.dmhy.org/config.json index fd51e6d39..86af2a287 100644 --- a/resource/sites/u2.dmhy.org/config.json +++ b/resource/sites/u2.dmhy.org/config.json @@ -213,7 +213,7 @@ "merge": true, "fields": { "sayThanksButton": { - "selector": ["span#thanksbutton input:button:first"], + "selector": ["span#thanksbutton input:button:first:not(:disabled)"], "filters": ["query"] } } diff --git a/resource/sites/uhdbits.org/getSearchResult.js b/resource/sites/uhdbits.org/getSearchResult.js index 11d3f4814..e22d47b1a 100644 --- a/resource/sites/uhdbits.org/getSearchResult.js +++ b/resource/sites/uhdbits.org/getSearchResult.js @@ -10,7 +10,7 @@ if (!"".getQueryString) { }; } -(function(options) { +(function(options, Searcher) { class Parser { constructor() { this.haveData = false; @@ -113,8 +113,8 @@ if (!"".getQueryString) { } let data = { - title: title.text(), - subTitle: subTitle.text(), + title: title.text() + ' / ' +subTitle.text(), + //subTitle: subTitle.text(), link, url: url, size: cells.eq(fieldIndex.size).html() || 0, @@ -139,6 +139,7 @@ if (!"".getQueryString) { fieldIndex.comments == -1 ? "" : cells.eq(fieldIndex.comments).text() || 0, + tags: this.getTags(row), site: site, entryName: options.entry.name, category: this.getCategory(cells.find("a[href*='filter_cat']")) @@ -185,6 +186,47 @@ if (!"".getQueryString) { return result; } + + getTags(row){ + var query = row.find("strong:contains('Free'), strong:contains('2x'), strong:contains('%')"); + var BASE_TAG_COLORS = { + // 免费下载 + Free: "blue", + // 免费下载 + 2x 上传 + "2xFree": "green", + // 2x 上传 + "2xUp": "lime", + // 2x 上传 + 50% 下载 + "2x50%": "light-green", + // 25% 下载 + "25%": "purple", + // 30% 下载 + "30%": "indigo", + // 35% 下载 + "35%": "indigo darken-3", + // 50% 下载 + "50%": "orange", + // 70% 下载 + "70%": "blue-grey", + // 75% 下载 + "75%": "lime darken-3", + // 仅 VIP 可下载 + VIP: "orange darken-2", + // 禁止转载 + "⛔️": "deep-orange darken-1" + }; + if(query.length > 0) { + query = query.text().replace(' ','').replace('↓',''); + var result = [{ + name: query, + color: BASE_TAG_COLORS[query] + }] + return result; + } + } + + + getCategoryName(id) { if ($.isEmptyObject(this.categories)) { let cells = options.page.find(".cat_list:first").find("td"); @@ -209,4 +251,4 @@ if (!"".getQueryString) { let parser = new Parser(options); options.results = parser.getResult(); console.log(options.results); -})(options); +})(options, Searcher); diff --git a/resource/sites/www.empornium.me/config.json b/resource/sites/www.empornium.me/config.json new file mode 100644 index 000000000..82e415446 --- /dev/null +++ b/resource/sites/www.empornium.me/config.json @@ -0,0 +1,164 @@ +{ + "name": "Empornium", + "timezoneOffset": "+0000", + "description": "EMP", + "url": "https://www.empornium.me/", + "tags": ["Adult"], + "schema": "Common", + "plugins": [{ + "name": "种子列表", + "pages": ["/torrents.php"], + "scripts": ["/schemas/NexusPHP/common.js", "/schemas/Gazelle/torrents.js"] + }], + "host": "www.empornium.me", + "searchEntryConfig": { + "page": "torrents.php?searchtext=$key$", + "resultType": "html", + "resultSelector": "table.torrent_table.grouping", + "dataRowSelector": " > tbody > tr:not(:first-child)", + "fieldIndex": { + "category": 0, + "title": 1, + "link": 1, + "url": 1, + "comments": 3, + "time": 4, + "size": 5, + "author": 9, + "seeders": 7, + "leechers": 8, + "completed": 6 + }, + "fieldSelector": { + "category": { + "selector": ["div[title]"], + "filters": ["query.attr('title')"] + }, + "title": { + "selector": ["a[onmouseout]"], + "filters": ["query.text()"] + }, + "link": { + "selector": ["a[onmouseout]"], + "filters": ["query.attr('href')"] + }, + "url": { + "selector": ["a[title='Download Torrent']"], + "filters": ["query.attr('href')"] + }, + "time": { + "selector": [""], + "filters": ["query.text()"] + }, + "progress": { + "selector": ["a[title='Currently Seeding Torrent'], a[title='Previously Snatched Torrent']", "a[title='Previously Grabbed Torrent File']", ""], + "switchFilters": [ + ["100"], + ["0"], + ["null"] + ] + }, + "status": { + "selector": ["a[title='Currently Seeding Torrent']", "a[title='Previously Snatched Torrent']", "a[title='Previously Grabbed Torrent File']"], + "switchFilters": [ + ["2"], + ["255"], + ["1"] + ] + } + } + }, + "searchEntry": [{ + "name": "全部", + "enabled": true + }], + "torrentTagSelectors": [{ + "name": "Free", + "selector": "span[title='Unlimited Freeleech']" + }], + "selectors": { + "userBaseInfo": { + "page": "/index.php", + "fields": { + "id": { + "selector": ["a.username[href*='user.php']:first"], + "attribute": "href", + "filters": ["query ? query.getQueryString('id'):''"] + }, + "name": { + "selector": "a.username" + }, + "isLogged": { + "selector": ["#nav_logout"], + "filters": ["query.length>0"] + }, + "messageCount": { + "selector": ["div.alertbar"], + "filters": ["(query && query.length>=1)?11:0"] + }, + "seeding": { + "selector": ["#nav_seeding_r"], + "filters": ["query.text().match(/(\\d+)/)", "(query && query.length>=2)?parseInt(query[1]):0"] + }, + "uploaded": { + "selector": ["td:contains('Up:') + td"], + "filters": ["query.text().replace(/,/g,'').match(/([\\d.]+ ?[ZEPTGMK]?i?B)/)", "(query && query.length>=2)?(query[1]).sizeToNumber():0"] + }, + "downloaded": { + "selector": ["td:contains('Down:') + td"], + "filters": ["query.text().replace(/,/g,'').match(/([\\d.]+ ?[ZEPTGMK]?i?B)/)", "(query && query.length>=2)?(query[1]).sizeToNumber():0"] + }, + "ratio": { + "selector": ["td:contains('Ratio:') + td"], + "filters": ["query.text()"] + }, + "bonus": { + "selector": ["td:contains('Credits:') + td"], + "filters": ["query.text()"] + } + } + }, + "userExtendInfo": { + "page": "/user.php?id=$user.id$", + "fields": { + "joinTime": { + "selector": ["li:contains('Joined:') > span.time"], + "filters": ["dateTime(query.attr('title')).valueOf()"] + }, + "levelName": { + "selector": ["span.rank"], + "filters": ["query.text()"] + }, + "seedingSize": { + "selector": ["ul.stats.nobullet > li:contains('Seeding Size:')"], + "filters": ["query.text().replace('Seeding Size: ', '')","query.sizeToNumber()"] + } + } + }, + "common": { + "page": "/torrents-details.php", + "fields": { + "downloadURL": { + "selector": ["a[href*='download.php?id=']"], + "filters": ["query.attr('href')"] + }, + "size": { + "selector": ["td[align='left']:contains('Total Size:') + td"], + "filters": ["query.parent().text().replace(/,/g,'').match(/([\\d.]+ ?[ZEPTGMK]?i?B)/)", "(query && query.length>1)?(query[1]).sizeToNumber():0"] + }, + "sayThanksButton": { + "selector": ["#ty-button"], + "filters": ["query"] + }, + "downloadURLs": { + "selector": ["a[href*='download.php?id=']"], + "filters": ["query.toArray()"] + }, + "confirmSize": { + "selector": ["table.ttable_headinner"], + "filters": ["query.find('td.ttable_size')"] + } + } + } + } +} \ No newline at end of file diff --git a/resource/sites/www.hdarea.co/config.json b/resource/sites/www.hdarea.co/config.json index cfc4dc2d5..28aa03bc9 100644 --- a/resource/sites/www.hdarea.co/config.json +++ b/resource/sites/www.hdarea.co/config.json @@ -200,5 +200,16 @@ "name": "HQ Audio" } ] - }] + }], + "selectors": { + "/details.php": { + "merge": true, + "fields": { + "downloadURL": { + "selector": ["td.rowfollow:contains('&passkey='):last"], + "filters": ["query[0].childNodes[0].textContent"] + } + } + } + } } \ No newline at end of file diff --git a/resource/sites/www.myanonamouse.net/config.json b/resource/sites/www.myanonamouse.net/config.json new file mode 100644 index 000000000..97f3dad9a --- /dev/null +++ b/resource/sites/www.myanonamouse.net/config.json @@ -0,0 +1,215 @@ +{ + "name": "MyAnonaMouse", + "description": "Friendliness, Warmth and Sharing", + "url": "https://www.myanonamouse.net/", + "icon": "https://cdn.myanonamouse.net/favicon.ico", + "tags": [ + "电子书", + "有声书" + ], + "schema": "MyAnonaMouse", + "host": "www.myanonamouse.net", + "collaborator": "tongyifan", + "supportedFeatures": { + "search": true, + "imdbSearch": false, + "userData": true, + "sendTorrent": true + }, + "plugins": [ + { + "name": "种子详情页面", + "pages": [ + "/t/\\d+" + ], + "scripts": [ + "/schemas/NexusPHP/common.js", + "details.js" + ] + }, + { + "name": "种子列表", + "pages": [ + "/tor/browse.php", + "/stats/top10Tor.php" + ], + "styles": [ + "/libs/album/style.css" + ], + "scripts": [ + "/schemas/NexusPHP/common.js", + "/libs/album/album.js", + "/schemas/Common/torrents.js" + ] + } + ], + "searchEntryConfig": { + "page": "/tor/js/loadSearch2.php", + "resultType": "html", + "queryString": "tor%5Btext%5D=$key$&tor%5BsrchIn%5D%5Btitle%5D=true&tor%5BsrchIn%5D%5Bauthor%5D=true&tor%5BsearchType%5D=all&tor%5BsearchIn%5D=torrents&tor%5Bcat%5D%5B%5D=0&tor%5BbrowseFlagsHideVsShow%5D=0&tor%5BsortType%5D=default&tor%5BstartNumber%5D=0&thumbnail=true", + "parseScriptFile": "getSearchResult.js", + "resultSelector": "table.newTorTable", + "skipIMDbId": true, + "firstDataRowIndex": 1 + }, + "searchEntry": [ + { + "name": "全站", + "enabled": true + } + ], + "torrentTagSelectors": [ + { + "name": "Free", + "selector": "img[alt='freeleech']" + }, + { + "name": "VIP", + "selector": "img[alt='VIP']" + } + ], + "selectors": { + "userBaseInfo": { + "page": "/index.php", + "fields": { + "id": { + "selector": [ + "li.myInfo > a" + ], + "attribute": "href", + "filters": [ + "query ? query.match(/(\\d+)/)[1]:''" + ] + }, + "name": { + "selector": [ + "a#userMenu" + ], + "filters": [ + "query ? query.text().replace(\"↓\", \"\").trim() : ''" + ] + }, + "isLogged": { + "selector": [ + "a[href='/preferences/index.php']" + ], + "filters": [ + "query.length>0" + ] + }, + "messageCount": { + "selector": [ + "a.tmnb, a.tmn, a.tmng" + ], + "filters": [ + "query.text().match(/(\\d+)/g)", + "query ? query.map(Number).reduce((sum, current) => {return sum + current;}, 0) : 0" + ] + } + } + }, + "userExtendInfo": { + "page": "/u/$user.id$", + "fields": { + "uploaded": { + "selector": [ + "td.rowhead:contains('Uploaded'):eq(0) + td" + ], + "filters": [ + "query.text().replace(/,/g,'').match(/([\\d.]+ ?[ZEPTGMK]?i?B)/)", + "(query && query.length==2)?(query[1]).sizeToNumber():0" + ] + }, + "downloaded": { + "selector": [ + "td.rowhead:contains('Downloaded'):eq(0) + td" + ], + "filters": [ + "query.text().replace(/,/g,'').match(/([\\d.]+ ?[ZEPTGMK]?i?B)/)", + "(query && query.length==2)?(query[1]).sizeToNumber():0" + ] + }, + "levelName": { + "selector": [ + "td.rowhead:contains('Class') + td" + ], + "filters": [ + "query.text()" + ] + }, + "bonus": { + "selector": [ + "a#tmBP" + ], + "filters": [ + "query.text().replace(/,/g,'').match(/Bonus: ([\\d.]+)/)", + "(query && query.length==2)?parseFloat(query[1]):0" + ] + }, + "joinTime": { + "selector": [ + "td.rowhead:contains('Join'):contains('date') + td" + ], + "filters": [ + "query.text().split(' (')[0]", + "dateTime(query).isValid()?dateTime(query).valueOf():query" + ] + } + } + }, + "userSeedingTorrents": { + "page": "/snatch_summary.php", + "parser": "getUserSeedingTorrents.js" + }, + "common": { + "fields": { + "downloadURLs": { + "selector": [ + "a[href*='/tor/download.php/']" + ], + "filters": [ + "query.toArray()" + ] + }, + "confirmSize": { + "selector": [ + "table.newTorTable > tbody > tr > td:contains(\"MB\")", + "table.newTorTable > tbody > tr > td:contains(\"GB\")", + "table.newTorTable > tbody > tr > td:contains(\"KB\")", + "table.newTorTable > tbody > tr > td:contains(\"TB\")" + ], + "filters": [ + "query.text().match(/\\[(.+ ?[ZEPTGMK]?i?B)\\]/)", + "(query && query.length==2)?query[1]:0" + ] + }, + "downloadURL": { + "selector": [ + "a#tddl" + ], + "attribute": "href", + "filters": [ + "query" + ] + }, + "size": { + "selector": [ + "div#size > div:eq(1) > span" + ], + "filters": [ + "query.text().replace(/[, ]/g,'').match(/([\\d.]+ ?[ZEPTGMK]?i?B)/)", + "(query && query.length>1)?(query[1]).sizeToNumber():0" + ] + }, + "sayThanksButton": { + "selector": [ + "button#giveThanks" + ], + "filters": [ + "query" + ] + } + } + } + } +} diff --git a/resource/sites/www.myanonamouse.net/details.js b/resource/sites/www.myanonamouse.net/details.js new file mode 100644 index 000000000..64a19cbfd --- /dev/null +++ b/resource/sites/www.myanonamouse.net/details.js @@ -0,0 +1,55 @@ +(function ($, window) { + console.log("this is details.js"); + + class App extends window.NexusPHPCommon { + init() { + this.initButtons(); + // 设置当前页面 + PTService.pageApp = this; + } + + /** + * 初始化按钮列表 + */ + initButtons() { + this.showTorrentSize(); + this.initDetailButtons(); + } + + /** + * 获取下载链接 + */ + getDownloadURL() { + let url = PTService.getFieldValue("downloadURL"); + + return this.getFullURL(url); + } + + /** + * 获取种子大小 + */ + showTorrentSize() { + let size = $("div#size > div:eq(1) > span"); + // eslint-disable-next-line no-irregular-whitespace + size = size.text().match(/([\d.]+[  ]?[ZEPTGMK]?i?B)/); + size = (size && size.length > 1) ? size[1] : 0; + + if (size) { + PTService.addButton({ + title: "当前种子大小", + icon: "attachment", + label: size + }); + } + } + + /** + * 获取当前种子标题 + */ + getTitle() { + return $(".TorrentTitle").text(); + } + } + + new App().init(); +})(jQuery, window); diff --git a/resource/sites/www.myanonamouse.net/getSearchResult.js b/resource/sites/www.myanonamouse.net/getSearchResult.js new file mode 100644 index 000000000..f8957ab8c --- /dev/null +++ b/resource/sites/www.myanonamouse.net/getSearchResult.js @@ -0,0 +1,131 @@ +/** + * 通用搜索解析脚本 + */ +(function (options, Searcher) { + class Parser { + constructor() { + this.haveData = false; + // 判断是否已登录 + if ( + options.entry.loggedRegex && + !new RegExp(options.entry.loggedRegex, "").test(options.responseText) + ) { + // 需要登录后再搜索 + options.status = ESearchResultParseStatus.needLogin; + return; + } + + options.isLogged = true; + + this.haveData = true; + this.site = options.site; + } + + /** + * 获取搜索结果 + */ + getResult() { + if (!this.haveData) { + return []; + } + let selector = options.resultSelector; + let dataRowSelector = options.entry.dataRowSelector || "> tbody > tr"; + selector = selector.replace(dataRowSelector, ""); + // 获取数据表格 + let table = options.page.find(selector); + // 获取种子列表行 + let rows = table.find(dataRowSelector); + if (rows.length === 0) { + // 没有定位到种子列表,或没有相关的种子 + options.status = ESearchResultParseStatus.torrentTableIsEmpty; + return []; + } + let results = []; + let beginRowIndex = options.entry.firstDataRowIndex || 0; + + try { + // 遍历数据行 + for (let index = beginRowIndex; index < rows.length; index++) { + const row = rows.eq(index); + + let torrentId = row.attr("id"); + // 跳过无种子ID的行 + if (!torrentId) { + continue; + } else { + torrentId = torrentId.match(/tdr-(\d+)/)[1]; + } + + // 下载链接,无法下载的VIP种子置为ONLY_FOR_VIP + let url = row.find(".directDownload").attr("href"); + if (!url) { + url = "ONLY_FOR_VIP" + } + + // 解析种子大小 + let size = row.find("> td:eq(4)").text().split("[")[1].replace("]", ""); + + // 解析发布时间和发布者 + let addedAndUploader = row.find("> td:eq(5)").text().split("["); + let time = addedAndUploader[0]; + let author = addedAndUploader[1].replace("]", ""); + + // 做种/下载/完成 + let seedLeechSnatched = row.find("> td:eq(6) > p"); + let seeders = parseInt(seedLeechSnatched.eq(0).text()); + let leechers = parseInt(seedLeechSnatched.eq(1).text()); + let completed = parseInt(seedLeechSnatched.eq(2).text()); + + let data = { + title: row.find(".torTitle").text(), + subTitle: row.find(".torRowDesc").text(), + link: this.getFullURL(`/t/${torrentId}`), + url: this.getFullURL(url), + size: size || 0, + time: time, + author: author, + seeders: seeders, + leechers: leechers, + completed: completed, + comments: row.find(" >td:eq(2)").text().match(/(\d+) comments/)[1], + site: this.site, + tags: Searcher.getRowTags(this.site, row), + entryName: options.entry.name + }; + results.push(data); + } + } catch (error) { + // 获取种子信息出错 + options.status = ESearchResultParseStatus.parseError; + options.errorMsg = error.stack; + } + + // 没有搜索到相关的种子 + if (results.length === 0 && !options.errorMsg) { + options.status = ESearchResultParseStatus.noTorrents; + } + + return results; + } + + /** + * 获取完整的URL地址 + * @param {string} url + */ + getFullURL(url) { + let URL = PTServiceFilters.parseURL(this.site.url); + if (url.substr(0, 2) === "//") { + url = `${URL.protocol}${url}`; + } else if (url.substr(0, 1) === "/") { + url = `${URL.origin}${url}`; + } else if (url.substr(0, 4) !== "http") { + url = `${URL.origin}/${url}`; + } + return url; + } + } + + let parser = new Parser(options); + options.results = parser.getResult(); + console.log(options.results); +})(options, options.searcher); diff --git a/resource/sites/www.myanonamouse.net/getUserSeedingTorrents.js b/resource/sites/www.myanonamouse.net/getUserSeedingTorrents.js new file mode 100644 index 000000000..cab3806c8 --- /dev/null +++ b/resource/sites/www.myanonamouse.net/getUserSeedingTorrents.js @@ -0,0 +1,74 @@ +(function (options, User) { + class Parser { + constructor(options) { + this.options = options; + this.body = null; + this.result = { + seeding: 0, + seedingSize: 0 + }; + this.load(); + } + + /** + * 完成 + */ + done() { + this.options.resolve(this.result); + } + + /** + * 加载当前做种数据 + */ + load() { + const types = [ + "seedUnsat", + "seedHnr", + "sSat", + "upAct" + ] + for (const type of types) { + User.getCookie(options.site, "mam_id").then(mamId => { + $.getJSON("https://cdn.myanonamouse.net/json/loadUserDetailsTorrents.php", { + uid: options.userInfo.id, + iteration: 0, + type: type, + cacheTime: Math.round(Date.now() / 1000), + mam_id: decodeURIComponent(mamId) + }).done(data => { + data.rows.forEach(item => { + this.result.seeding += 1; + this.result.seedingSize += item.size.sizeToNumber() + }) + + // 如果到了最后一个type + if (type === types[types.length - 1]) { + this.done(); + } + }).fail(error => { + console.log(error); + this.done(); + }) + }).catch(err => { + console.log(err); + this.done(); + }); + } + } + } + + new Parser(options); +})(_options, _self); +/** + * + _options 表示当前参数 + { + site, + rule, + userInfo, + resolve, + reject + } + + _self 表示 User(/src/background/user.ts) 类实例 + */ diff --git a/resource/sites/www.torrentleech.org/getSearchResult.js b/resource/sites/www.torrentleech.org/getSearchResult.js index 9a5869e4c..172f97239 100644 --- a/resource/sites/www.torrentleech.org/getSearchResult.js +++ b/resource/sites/www.torrentleech.org/getSearchResult.js @@ -1,4 +1,4 @@ -(function(options) { +(function(options, Searcher) { class Parser { constructor() { this.haveData = false; @@ -42,7 +42,7 @@ completed: item.completed, comments: item.numComments, site: site, - tags: [], + tags: this.getTags(item), entryName: options.entry.name, category: options.searcher.getCategoryById( site, @@ -64,9 +64,17 @@ } return results; } + getTags(item) { + var tag = [{ + name: "free", + color: "blue" + }] + if(item.tags.indexOf("FREELEECH")>-1)return tag; + } } + let parser = new Parser(options); options.results = parser.getResult(); console.log(options.results); -})(options); +})(options, Searcher); diff --git a/resource/sites/www.torrentseeds.org/config.json b/resource/sites/www.torrentseeds.org/config.json index 0b2c2b1bc..913e56d86 100644 --- a/resource/sites/www.torrentseeds.org/config.json +++ b/resource/sites/www.torrentseeds.org/config.json @@ -15,6 +15,34 @@ "userData": true, "sendTorrent": true }, + "plugins": [ + { + "name": "种子详情页面", + "pages": [ + "/details.php" + ], + "scripts": [ + "/schemas/NexusPHP/common.js", + "details.js" + ] + }, + { + "name": "种子列表", + "pages": [ + "^/$", + "/browse.php", + "/browse_elastic.php" + ], + "styles": [ + "/libs/album/style.css" + ], + "scripts": [ + "/schemas/NexusPHP/common.js", + "/libs/album/album.js", + "torrents.js" + ] + } + ], "selectors": { "userBaseInfo": { "page": "/", diff --git a/resource/sites/www.torrentseeds.org/details.js b/resource/sites/www.torrentseeds.org/details.js new file mode 100644 index 000000000..58463dc9d --- /dev/null +++ b/resource/sites/www.torrentseeds.org/details.js @@ -0,0 +1,37 @@ +(function ($, window) { + console.log("this is details.js"); + class App extends window.NexusPHPCommon { + init() { + this.initButtons(); + // 设置当前页面 + PTService.pageApp = this; + } + /** + * 初始化按钮列表 + */ + initButtons() { + this.initDetailButtons(); + } + + /** + * 获取下载链接 + */ + getDownloadURL() { + let siteURL = PTService.site.url; + let url = $("td.details-text-ellipsis:eq(0) > a").attr("href"); + if (siteURL.substr(-1) != "/") { + siteURL += "/"; + } + + return this.getFullURL(siteURL + url); + } + + /** + * 获取当前种子标题 + */ + getTitle() { + return $("div.pull-left > h1").text(); + } + } + new App().init(); +})(jQuery, window); diff --git a/resource/sites/www.torrentseeds.org/torrents.js b/resource/sites/www.torrentseeds.org/torrents.js new file mode 100644 index 000000000..5aed4d13c --- /dev/null +++ b/resource/sites/www.torrentseeds.org/torrents.js @@ -0,0 +1,50 @@ +(function ($) { + console.log("this is torrent.js"); + class App extends window.NexusPHPCommon { + init() { + this.initButtons(); + this.initFreeSpaceButton(); + // 设置当前页面 + PTService.pageApp = this; + } + + /** + * 初始化按钮列表 + */ + initButtons() { + this.initListButtons(); + } + + /** + * 获取下载链接 + */ + getDownloadURLs() { + let links = $("a[href$='&ssl=1']").toArray(); + + if (links.length == 0) { + // "获取下载链接失败,未能正确定位到链接"; + return this.t("getDownloadURLsFailed"); + } + + let siteURL = PTService.site.url; + if (siteURL.substr(-1) != "/") { + siteURL += "/"; + } + + let urls = $.map(links, item => { + let url = $(item).attr("href"); + return this.getFullURL(siteURL + url.substr(1)); + }); + + return urls; + } + + /** + * 确认大小是否超限 + */ + confirmWhenExceedSize() { + return this.confirmSize(PTService.getFieldValue("confirmSize")); + } + } + new App().init(); +})(jQuery); diff --git a/src/background/user.ts b/src/background/user.ts index a4d7b1e5f..86e525b2a 100644 --- a/src/background/user.ts +++ b/src/background/user.ts @@ -460,4 +460,24 @@ export class User { } }); } + + // MAM需要在访问API时传入存于Cookies中的mam_id,构建这个辅助方法以便获取Cookie + public getCookie(site: Site, needle: String): Promise { + return new Promise((resolve, reject) => { + PPF.checkPermissions(["cookies"]).then(() => { + this.service.config.getCookiesFromSite(site).then((result) => { + for (const cookie of result.cookies) { + if (cookie["name"] === needle) { + resolve(cookie["value"]); + } + } + resolve(""); + }).catch(error => { + reject(error); + }); + }).catch(error => { + reject(error); + }); + }); + } } diff --git a/src/content/index.ts b/src/content/index.ts index bed5f7c05..1c4ab0ce7 100644 --- a/src/content/index.ts +++ b/src/content/index.ts @@ -166,48 +166,69 @@ class PTPContent { * 初始化符合条件的附加页面 */ private initPages() { - if (!this.options.showToolbarOnContentPage) { - return; - } - // 判断当前页面的所属站点是否已经被定义 - this.site = this.getSiteFromHost(window.location.hostname); + this.initSiteConfig().then(() => { + this.initPlugins(); + }).catch(() => { + APP.debugMode && console.log("initPages 失败"); + }); + } - if (this.site) { - // 适应多域名 - this.site.url = window.location.origin + "/"; - } + /** + * 初始化站点配置 + */ + private initSiteConfig(): Promise { + return new Promise((resolve?: any, reject?: any) => { + if (!this.options.showToolbarOnContentPage) { + reject(); + return; + } + // 判断当前页面的所属站点是否已经被定义 + this.site = this.getSiteFromHost(window.location.hostname); - // 如果当前站点未定义,则不再继续操作 - if (this.site && this.site.name) { - if (typeof this.site.schema === "string") { - this.schema = - this.options.system && - this.options.system.schemas && - this.options.system.schemas.find((item: SiteSchema) => { - return item.name == this.site.schema; - }); - } else { - let site = - this.options.system && - this.options.system.sites && - this.options.system.sites.find((item: Site) => { - return item.host == this.site.host; - }); - if (site && site.schema && typeof site.schema !== "string") { - this.schema = site.schema; - this.schema.siteOnly = true; + if (this.site) { + // 适应多域名 + this.site.url = window.location.origin + "/"; + } + + // 如果当前站点未定义,则不再继续操作 + if (this.site && this.site.name) { + if (typeof this.site.schema === "string") { + this.schema = + this.options.system && + this.options.system.schemas && + this.options.system.schemas.find((item: SiteSchema) => { + return item.name == this.site.schema; + }); + } else { + let site = + this.options.system && + this.options.system.sites && + this.options.system.sites.find((item: Site) => { + return item.host == this.site.host; + }); + if (site && site.schema && typeof site.schema !== "string") { + this.schema = site.schema; + this.schema.siteOnly = true; + } } + // 等待页面选择器加载完成后,再加载插件内容 + this.initPageSelector().finally(() => { + resolve(); + }); + } else { + reject(); } - } else { - return; - } + }); + } + /** + * 初始化符合条件的插件 + */ + private initPlugins() { this.positionStorageKey = `pt-plugin-${this.site.host}-position`; this.scripts = []; this.styles = []; - - this.initPageSelector(); // 初始化插件按钮列表 this.initButtonBar(); this.initDroper(); @@ -949,27 +970,35 @@ class PTPContent { } } - private initPageSelector() { - this.call(EAction.getSiteSelectorConfig, { - host: this.site.host, - name: location.pathname - }) - .then(result => { - this.pageSelector = result; + /** + * 加载页面选择器 + */ + private initPageSelector(): Promise { + return new Promise((resolve?: any, reject?: any) => { + this.call(EAction.getSiteSelectorConfig, { + host: this.site.host, + name: location.pathname }) - .catch(() => { - // 如果没有当前页面的选择器,则尝试获取通用的选择器 - this.call(EAction.getSiteSelectorConfig, { - host: this.site.host, - name: "common" + .then(result => { + this.pageSelector = result; + resolve(); }) - .then(result => { - this.pageSelector = result; + .catch(() => { + // 如果没有当前页面的选择器,则尝试获取通用的选择器 + this.call(EAction.getSiteSelectorConfig, { + host: this.site.host, + name: "common" }) - .catch(() => { - // 没有选择器 - }); - }); + .then(result => { + this.pageSelector = result; + resolve(); + }) + .catch(() => { + // 没有选择器 + resolve(); + }); + }); + }); } /** diff --git a/src/options/views/search/SearchTorrent.ts b/src/options/views/search/SearchTorrent.ts index dba19d12b..cbf8ff505 100644 --- a/src/options/views/search/SearchTorrent.ts +++ b/src/options/views/search/SearchTorrent.ts @@ -164,11 +164,11 @@ export default Vue.extend({ const upEvent = "mouseUp.torrentSearch"; $(".search-torrent").off(downEvent); $(".search-torrent").off(upEvent); - $(".search-torrent").on(downEvent, e => { + $(".search-torrent").on(downEvent, (e) => { this.shiftKey = e.shiftKey || false; }); - $(".search-torrent").on(upEvent, e => { + $(".search-torrent").on(upEvent, (e) => { this.shiftKey = false; }); window.addEventListener("scroll", this.handleScroll); @@ -376,7 +376,7 @@ export default Vue.extend({ // 豆瓣ID if (/(douban\d+)/.test(this.key)) { this.getIMDbIdFromDouban(this.key) - .then(result => { + .then((result) => { if (typeof result == "string") { this.searchPayload.imdbId = result; this.key = result; @@ -394,7 +394,7 @@ export default Vue.extend({ } } }) - .catch(error => { + .catch((error) => { if (searchKeys.cn) { this.key = searchKeys.cn; this.search(this.searchPayload); @@ -454,10 +454,10 @@ export default Vue.extend({ let searchSolution: | SearchSolution | undefined = this.options.searchSolutions.find( - (solution: SearchSolution) => { - return solution.id === searchSolutionId; - } - ); + (solution: SearchSolution) => { + return solution.id === searchSolutionId; + } + ); if (searchSolution) { searchSolution.range.forEach((range: SearchSolutionRange) => { @@ -757,7 +757,7 @@ export default Vue.extend({ searchPayload: this.searchPayload, result: this.rawDatas }) - .then(result => { + .then((result) => { this.successMsg = this.$t( "searchResultSnapshot.createSuccess" ).toString(); @@ -777,7 +777,7 @@ export default Vue.extend({ this.loading = true; extension .sendRequest(EAction.getSearchResultSnapshot, null, id) - .then(data => { + .then((data) => { console.log("loadSearchResultSnapshot", data); this.key = data.key; this.searchPayload = data.searchPayload; @@ -1049,7 +1049,7 @@ export default Vue.extend({ let site = this.options.sites.find((site: Site) => { // 当定义了CDN列表时,匹配其中之一即可 if (site.cdn) { - let index = site.cdn.findIndex(cdn => { + let index = site.cdn.findIndex((cdn) => { return cdn.indexOf(host) > -1; }); if (index > -1) { @@ -1279,7 +1279,7 @@ export default Vue.extend({ }); file.requestMethod = requestMethod; - file.onError = (error: any) => {}; + file.onError = (error: any) => { }; file.start(); }, /** @@ -1334,7 +1334,7 @@ export default Vue.extend({ this.errorMsg = ""; extension .sendRequest(EAction.copyTextToClipboard, null, url) - .then(result => { + .then((result) => { this.successMsg = this.$t( "searchTorrent.copyLinkToClipboardSuccess" ).toString(); @@ -1360,7 +1360,7 @@ export default Vue.extend({ this.clearMessage(); extension .sendRequest(EAction.copyTextToClipboard, null, urls.join("\n")) - .then(result => { + .then((result) => { this.successMsg = this.$t( "searchTorrent.copySelectedToClipboardSuccess", { @@ -1472,10 +1472,10 @@ export default Vue.extend({ `${item.client.name} -> ${item.client.address}` + (item.path ? ` -> ${this.pathHandler.replacePathKey( - item.path, - options.site - )}` - : "") + item.path, + options.site + )}` + : ""), }).toString(), fn: () => { if (options.url) { @@ -1517,10 +1517,10 @@ export default Vue.extend({ let title = _this.$vuetify.breakpoint.xs ? item.client.name : _this - .$t("searchTorrent.downloadTo", { - path: `${item.client.name} -> ${item.client.address}` - }) - .toString(); + .$t("searchTorrent.downloadTo", { + path: `${item.client.name} -> ${item.client.address}` + }) + .toString(); if (item.path) { title += ` -> ${item.path}`; @@ -1670,7 +1670,7 @@ export default Vue.extend({ // 过滤标题和副标题 let source = (item.title + (item.subTitle || "")).toLowerCase(); let result = true; - searchs.forEach(key => { + searchs.forEach((key) => { if (key.trim() != "") { result = result && source.indexOf(key) > -1; } @@ -1761,7 +1761,7 @@ export default Vue.extend({ function getObjectValue(obj: any, path: string) { return new Function("o", "return o." + path)(obj); } - return function(object1: any, object2: any) { + return function (object1: any, object2: any) { var value1 = getObjectValue(object1, field); var value2 = getObjectValue(object2, field); if (value1 < value2) { @@ -1809,7 +1809,7 @@ export default Vue.extend({ extension .sendRequest(EAction.addTorrentToCollection, null, options) - .then(result => { + .then((result) => { this.loadTorrentCollections(); console.log(result); }); @@ -1819,14 +1819,14 @@ export default Vue.extend({ .sendRequest(EAction.deleteTorrentFromCollention, null, { link: PPF.getCleaningURL(item.link) }) - .then(result => { + .then((result) => { this.loadTorrentCollections(); }); }, loadTorrentCollections() { extension .sendRequest(EAction.getAllTorrentCollectionLinks) - .then(result => { + .then((result) => { this.torrentCollectionLinks = result; }); }, @@ -1933,67 +1933,67 @@ export default Vue.extend({ value: this.$store.state.options.searchResultOrderBySitePriority ? "site.priority" : "site.host", - visible: this.$vuetify.breakpoint.mdAndUp + visible: this.$vuetify.breakpoint.mdAndUp, }, { text: this.$t("searchTorrent.headers.title"), align: "left", value: "title", - visible: true + visible: true, }, { text: this.$t("searchTorrent.headers.category"), align: "center", value: "category.name", width: "150px", - visible: this.$vuetify.breakpoint.width > 1200 + visible: this.$vuetify.breakpoint.width > 1200, }, { text: this.$t("searchTorrent.headers.size"), align: "right", value: "size", width: "100px", - visible: this.$vuetify.breakpoint.smAndUp + visible: this.$vuetify.breakpoint.smAndUp, }, { text: this.$t("searchTorrent.headers.seeders"), align: "right", value: "seeders", width: "60px", - visible: this.$vuetify.breakpoint.smAndUp + visible: this.$vuetify.breakpoint.smAndUp, }, { text: this.$t("searchTorrent.headers.leechers"), align: "right", value: "leechers", width: "60px", - visible: this.$vuetify.breakpoint.mdAndUp + visible: this.$vuetify.breakpoint.mdAndUp, }, { text: this.$t("searchTorrent.headers.completed"), align: "right", value: "completed", width: "60px", - visible: this.$vuetify.breakpoint.mdAndUp + visible: this.$vuetify.breakpoint.mdAndUp, }, { text: this.$t("searchTorrent.headers.time"), align: "left", value: "time", width: "130px", - visible: this.$vuetify.breakpoint.mdAndUp + visible: this.$vuetify.breakpoint.mdAndUp, }, { text: this.$t("searchTorrent.headers.action"), sortable: false, width: this.$vuetify.breakpoint.mdAndUp ? "130px" : "80px", align: "center", - visible: this.$vuetify.breakpoint.smAndUp - } + visible: this.$vuetify.breakpoint.smAndUp, + }, ]; }, orderHeaders(): Array { - return this.headers.filter(item => { + return this.headers.filter((item) => { return item.sortable !== false; }); }, @@ -2017,6 +2017,21 @@ export default Vue.extend({ return true; } return false; + }, + // 已选中的种子大小 + selectedSize(): number { + if (this.selected.length > 0) { + let totalSize = 0; + this.selected.forEach((item: SearchResultItem) => { + const size: any = item.size; + if (size > 0) { + totalSize += size; + } + }); + + return totalSize; + } + return 0; } } }); diff --git a/src/options/views/search/SearchTorrent.vue b/src/options/views/search/SearchTorrent.vue index 9f126f98e..f664d5dfd 100644 --- a/src/options/views/search/SearchTorrent.vue +++ b/src/options/views/search/SearchTorrent.vue @@ -341,6 +341,7 @@ v-if="$vuetify.breakpoint.smAndUp" >{{$t('searchTorrent.sendToClient')}} ({{selected.length}}) {{selected.length}} + {{ selectedSize | formatSize }} diff --git a/src/options/views/settings/Backup/Server/Editor.vue b/src/options/views/settings/Backup/Server/Editor.vue index 799aa17f1..c35e3e432 100644 --- a/src/options/views/settings/Backup/Server/Editor.vue +++ b/src/options/views/settings/Backup/Server/Editor.vue @@ -128,7 +128,7 @@ export default Vue.extend({ require: [(v: any) => !!v || "!"], url: (v: any) => { return ( - /^(https?):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]$/.test( + /^(https?):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;\[\]]+[-A-Za-z0-9+&@#/%=~_|]$/.test( v ) || this.$t("settings.backup.server.owss.addressTip") ); diff --git a/src/options/views/settings/DownloadClients/Editor.vue b/src/options/views/settings/DownloadClients/Editor.vue index 3fc212aca..9ca2fee18 100644 --- a/src/options/views/settings/DownloadClients/Editor.vue +++ b/src/options/views/settings/DownloadClients/Editor.vue @@ -93,7 +93,7 @@ export default Vue.extend({ require: [(v: any) => !!v || "!"], url: (v: any) => { return ( - /^(https?):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]$/.test( + /^(https?):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;\[\]]+[-A-Za-z0-9+&@#/%=~_|]$/.test( v ) || this.$t("settings.downloadClients.editor.addressTip") ); diff --git a/src/service/favicon.ts b/src/service/favicon.ts index a8737690c..38ded5935 100644 --- a/src/service/favicon.ts +++ b/src/service/favicon.ts @@ -59,6 +59,11 @@ export class Favicon { }); } + /** + * 获取指定站点的图标 + * @param url 站点地址 + * @param reset 是否重置 + */ public get(url: string, reset: boolean = false): Promise { return new Promise((resolve?: any, reject?: any) => { let URL = filters.parseURL(url); @@ -158,7 +163,7 @@ export class Favicon { link = `${URL.origin}/${link}`; } - this.download(`${url}/${link}`) + this.download(link) .then(result => { if (result && /image/gi.test(result.type)) { this.transformBlob(result, "base64") diff --git a/update/index.xml b/update/index.xml index 946035117..0374cdb47 100644 --- a/update/index.xml +++ b/update/index.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index c595d7b08..9096460f1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1644,12 +1644,11 @@ aws4@^1.8.0: integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A== axios@^0.19.0: - version "0.19.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8" - integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ== + version "0.19.2" + resolved "https://registry.npm.taobao.org/axios/download/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha1-PqNsXYgY0NX4qKl6bTa4bNwAyyc= dependencies: follow-redirects "1.5.10" - is-buffer "^2.0.2" babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" @@ -1702,12 +1701,12 @@ babel-plugin-module-resolver@3.2.0: balanced-match@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base-64@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb" + resolved "https://registry.npm.taobao.org/base-64/download/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb" integrity sha1-eAqZyE59YAJgNhURxId2E78k9rs= base64-arraybuffer@^0.2.0: @@ -1751,8 +1750,8 @@ bcrypt-pbkdf@^1.0.0: bencode@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/bencode/-/bencode-2.0.1.tgz#667a6a31c5e038d558608333da6b7c94e836c85b" - integrity sha512-2uhEl8FdjSBUyb69qDTgOEeeqDTa+n3yMQzLW0cOzNf1Ow5bwcg3idf+qsWisIKRH8Bk8oC7UXL8irRcPA8ZEQ== + resolved "https://registry.npm.taobao.org/bencode/download/bencode-2.0.1.tgz#667a6a31c5e038d558608333da6b7c94e836c85b" + integrity sha1-ZnpqMcXgONVYYIMz2mt8lOg2yFs= dependencies: safe-buffer "^5.1.1" @@ -1802,8 +1801,8 @@ bl@^3.0.0: blob-to-buffer@^1.2.6: version "1.2.8" - resolved "https://registry.yarnpkg.com/blob-to-buffer/-/blob-to-buffer-1.2.8.tgz#78eeeb332f1280ed0ca6fb2b60693a8c6d36903a" - integrity sha512-re0AIxakF504MgeMtIyJkVcZ8T5aUxtp/QmTMlmjyb3P44E1BEv5x3LATBGApWAJATyXHtkXRD+gWTmeyYLiQA== + resolved "https://registry.npm.taobao.org/blob-to-buffer/download/blob-to-buffer-1.2.8.tgz#78eeeb332f1280ed0ca6fb2b60693a8c6d36903a" + integrity sha1-eO7rMy8SgO0MpvsrYGk6jG02kDo= bluebird@^3.1.1, bluebird@^3.5.5: version "3.7.2" @@ -1816,9 +1815,9 @@ bluebird@^3.5.1: integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== blueimp-md5@^2.10.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.12.0.tgz#be7367938a889dec3ffbb71138617c117e9c130a" - integrity sha512-zo+HIdIhzojv6F1siQPqPFROyVy7C50KzHv/k/Iz+BtvtVzSHXiMXOpq2wCfNkeBqdCv+V8XOV96tsEt2W/3rQ== + version "2.16.0" + resolved "https://registry.npm.taobao.org/blueimp-md5/download/blueimp-md5-2.16.0.tgz#9018bb805e4ee05512e0e8cbdb9305eeecbdc87c" + integrity sha1-kBi7gF5O4FUS4OjL25MF7uy9yHw= bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" @@ -1860,8 +1859,8 @@ boolbase@^1.0.0, boolbase@~1.0.0: brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + resolved "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0= dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -2495,9 +2494,9 @@ commander@^2.12.1, commander@^2.18.0, commander@^2.20.0, commander@~2.20.3: integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.0.1.tgz#b67622721785993182e807f4883633e6401ba53c" - integrity sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA== + version "4.1.1" + resolved "https://registry.npm.taobao.org/commander/download/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha1-n9YCvZNilOnp70aj9NaWQESxgGg= commander@~2.19.0: version "2.19.0" @@ -2551,7 +2550,7 @@ compression@^1.7.4: concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concat-stream@^1.5.0, concat-stream@^1.6.0: @@ -2652,7 +2651,7 @@ core-js@^2.6.5: core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + resolved "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= cosmiconfig@^5.0.0: @@ -2784,9 +2783,9 @@ crypto-browserify@^3.11.0: randomfill "^1.0.3" crypto-js@^3.1.9-1: - version "3.1.9-1" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.1.9-1.tgz#fda19e761fc077e01ffbfdc6e9fdfc59e8806cd8" - integrity sha1-/aGedh/Ad+Af+/3G6f38WeiAbNg= + version "3.3.0" + resolved "https://registry.npm.taobao.org/crypto-js/download/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b" + integrity sha1-hG3RzOL2iqz6FWyFePkmpgm3l2s= css-color-names@0.0.4, css-color-names@^0.0.4: version "0.0.4" @@ -3003,9 +3002,9 @@ dashdash@^1.12.0: assert-plus "^1.0.0" dayjs@^1.8.11: - version "1.8.17" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.17.tgz#53ec413f2a7b02afbea1846d61bb260fa8567cea" - integrity sha512-47VY/htqYqr9GHd7HW/h56PpQzRBSJcxIQFwqL3P20bMF/3az5c3PWdVY3LmPXFl6cQCYHL7c79b9ov+2bOBbw== + version "1.8.27" + resolved "https://registry.npm.taobao.org/dayjs/download/dayjs-1.8.27.tgz#a8ae63ee990af28c05c430f0e160ae835a0fbbf8" + integrity sha1-qK5j7pkK8owFxDDw4WCug1oPu/g= de-indent@^1.0.2: version "1.0.2" @@ -3052,8 +3051,8 @@ decode-uri-component@^0.2.0: decompress-response@^4.2.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" - integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== + resolved "https://registry.npm.taobao.org/decompress-response/download/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" + integrity sha1-QUAjzHowLaJc4uyC0NUjjMr9iYY= dependencies: mimic-response "^2.0.0" @@ -3103,8 +3102,8 @@ defaults@^1.0.3: define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + resolved "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE= dependencies: object-keys "^1.0.12" @@ -3442,27 +3441,27 @@ error-stack-parser@^2.0.0: dependencies: stackframe "^1.1.0" -es-abstract@^1.17.0-next.1: - version "1.17.0-next.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0-next.1.tgz#94acc93e20b05a6e96dacb5ab2f1cb3a81fc2172" - integrity sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw== +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: + version "1.17.5" + resolved "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" + integrity sha1-2MnR1myJgfuSAOIlHXme7pJ3Suk= dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.1" - is-callable "^1.1.4" - is-regex "^1.0.4" + is-callable "^1.1.5" + is-regex "^1.0.5" object-inspect "^1.7.0" object-keys "^1.1.1" object.assign "^4.1.0" - string.prototype.trimleft "^2.1.0" - string.prototype.trimright "^2.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" es-to-primitive@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + resolved "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo= dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" @@ -4119,8 +4118,8 @@ flush-write-stream@^1.0.0: follow-redirects@1.5.10: version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + resolved "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio= dependencies: debug "=3.1.0" @@ -4238,8 +4237,8 @@ fsevents@~2.1.1: function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + resolved "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0= functional-red-black-tree@^1.0.1: version "1.0.1" @@ -4258,8 +4257,8 @@ get-caller-file@^2.0.1: get-stdin@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" - integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== + resolved "https://registry.npm.taobao.org/get-stdin/download/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" + integrity sha1-jV3pjxUXGhJcXlFmQ8em0OqKlvY= get-stream@^3.0.0: version "3.0.0" @@ -4479,8 +4478,8 @@ has-flag@^4.0.0: has-symbols@^1.0.0, has-symbols@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + resolved "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg= has-value@^0.3.1: version "0.3.1" @@ -4515,8 +4514,8 @@ has-values@^1.0.0: has@^1.0.0, has@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + resolved "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y= dependencies: function-bind "^1.1.1" @@ -4596,8 +4595,8 @@ hosted-git-info@^2.1.4: hot-patcher@^0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/hot-patcher/-/hot-patcher-0.5.0.tgz#9d401424585aaf3a91646b816ceff40eb6a916b9" - integrity sha512-2Uu2W0s8+dnqXzdlg0MRsRzPoDCs1wVjOGSyMRRaMzLDX4bgHw6xDYKccsWafXPPxQpkQfEjgW6+17pwcg60bw== + resolved "https://registry.npm.taobao.org/hot-patcher/download/hot-patcher-0.5.0.tgz#9d401424585aaf3a91646b816ceff40eb6a916b9" + integrity sha1-nUAUJFharzqRZGuBbO/0DrapFrk= hpack.js@^2.1.6: version "2.1.6" @@ -4806,7 +4805,7 @@ ignore@^4.0.3, ignore@^4.0.6: immediate@~3.0.5: version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + resolved "https://registry.npm.taobao.org/immediate/download/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= import-cwd@^2.0.0: @@ -5037,15 +5036,10 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== - -is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha1-9+RrWWiQRW23Tn9ul2yzJz0G+qs= is-ci@^1.0.10: version "1.2.1" @@ -5081,9 +5075,9 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + version "1.0.2" + resolved "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha1-vac28s2P0G0yhE53Q7+nSUw7/X4= is-descriptor@^0.1.0: version "0.1.6" @@ -5214,10 +5208,10 @@ is-redirect@^1.0.0: resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= -is-regex@^1.0.4: +is-regex@^1.0.4, is-regex@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + resolved "https://registry.npm.taobao.org/is-regex/download/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4= dependencies: has "^1.0.3" @@ -5250,8 +5244,8 @@ is-svg@^3.0.0: is-symbol@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + resolved "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc= dependencies: has-symbols "^1.0.1" @@ -5272,7 +5266,7 @@ is-wsl@^1.1.0: isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isexe@^2.0.0: @@ -5432,9 +5426,9 @@ jsprim@^1.2.2: verror "1.10.0" jszip@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.2.2.tgz#b143816df7e106a9597a94c77493385adca5bd1d" - integrity sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA== + version "3.4.0" + resolved "https://registry.npm.taobao.org/jszip/download/jszip-3.4.0.tgz#1a69421fa5f0bb9bc222a46bca88182fba075350" + integrity sha1-GmlCH6Xwu5vCIqRryogYL7oHU1A= dependencies: lie "~3.3.0" pako "~1.0.2" @@ -5509,8 +5503,8 @@ levn@^0.3.0, levn@~0.3.0: lie@~3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" - integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + resolved "https://registry.npm.taobao.org/lie/download/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha1-3Pgt7lRfRgdNryAMfBxaCOD0D2o= dependencies: immediate "~3.0.5" @@ -5687,8 +5681,8 @@ lru-cache@^5.1.1: magnet-uri@^5.1.3: version "5.2.4" - resolved "https://registry.yarnpkg.com/magnet-uri/-/magnet-uri-5.2.4.tgz#7afe5b736af04445aff744c93a890a3710077688" - integrity sha512-VYaJMxhr8B9BrCiNINUsuhaEe40YnG+AQBwcqUKO66lSVaI9I3A1iH/6EmEwRI8OYUg5Gt+4lLE7achg676lrg== + resolved "https://registry.npm.taobao.org/magnet-uri/download/magnet-uri-5.2.4.tgz#7afe5b736af04445aff744c93a890a3710077688" + integrity sha1-ev5bc2rwREWv90TJOokKNxAHdog= dependencies: thirty-two "^1.0.1" uniq "^1.0.1" @@ -5815,11 +5809,6 @@ merge2@^1.2.3: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== -merge@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" - integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== - methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -5885,9 +5874,9 @@ mimic-fn@^2.0.0, mimic-fn@^2.1.0: integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== mimic-response@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.0.0.tgz#996a51c60adf12cb8a87d7fb8ef24c2f3d5ebb46" - integrity sha512-8ilDoEapqA4uQ3TwS0jakGONKXVJqpy+RpM+3b7pLdOjghCrEiGp9SRkFbUHAmZW9vdnrENWHjaweIoTIJExSQ== + version "2.1.0" + resolved "https://registry.npm.taobao.org/mimic-response/download/mimic-response-2.1.0.tgz?cache=0&sync_timestamp=1589481326973&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-response%2Fdownload%2Fmimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" + integrity sha1-0Tdj019hPQnsN+uzC6wEacDuj0M= mini-css-extract-plugin@^0.8.0: version "0.8.0" @@ -5911,8 +5900,8 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + resolved "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM= dependencies: brace-expansion "^1.1.7" @@ -6024,7 +6013,7 @@ mri@^1.1.4: ms@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + resolved "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= ms@2.1.1: @@ -6274,8 +6263,8 @@ object-hash@^1.1.4: object-inspect@^1.7.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + resolved "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc= object-is@^1.0.1: version "1.0.1" @@ -6284,8 +6273,8 @@ object-is@^1.0.1: object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + resolved "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha1-HEfyct8nfzsdrwYWd9nILiMixg4= object-visit@^1.0.0: version "1.0.1" @@ -6296,18 +6285,18 @@ object-visit@^1.0.0: object.assign@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + resolved "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha1-lovxEA15Vrs8oIbwBvhGs7xACNo= dependencies: define-properties "^1.1.2" function-bind "^1.1.1" has-symbols "^1.0.0" object-keys "^1.0.11" -object.getownpropertydescriptors@^2.0.3: +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + resolved "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha1-Npvx+VktiridcS3O1cuBx8U1Jkk= dependencies: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" @@ -6527,7 +6516,12 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@~1.0.2, pako@~1.0.5: +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.npm.taobao.org/pako/download/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8= + +pako@~1.0.5: version "1.0.10" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== @@ -6591,9 +6585,9 @@ parse-passwd@^1.0.0: integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= parse-torrent@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/parse-torrent/-/parse-torrent-7.0.1.tgz#669c51a95363550055c7de0957741d6a05575daf" - integrity sha512-FdF1kBImRLt+ICV4NTz8L+sI2hFlPXAq1tXuw21gKz8EuThyVUFJ/wPfBEyYQrvnBpmGf7cM/LVSOhMRe8MrKw== + version "7.1.3" + resolved "https://registry.npm.taobao.org/parse-torrent/download/parse-torrent-7.1.3.tgz#5981a0d9381b16297a7af053763068e8da5c9610" + integrity sha1-WYGg2TgbFil6evBTdjBo6NpclhA= dependencies: bencode "^2.0.0" blob-to-buffer "^1.2.6" @@ -6601,7 +6595,6 @@ parse-torrent@^7.0.1: magnet-uri "^5.1.3" simple-get "^3.0.1" simple-sha1 "^3.0.0" - uniq "^1.0.1" parse5-htmlparser2-tree-adapter@^5.1.1: version "5.1.1" @@ -6679,7 +6672,7 @@ path-parse@^1.0.6: path-posix@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/path-posix/-/path-posix-1.0.0.tgz#06b26113f56beab042545a23bfa88003ccac260f" + resolved "https://registry.npm.taobao.org/path-posix/download/path-posix-1.0.0.tgz#06b26113f56beab042545a23bfa88003ccac260f" integrity sha1-BrJhE/Vr6rBCVFojv6iAA8ysJg8= path-to-regexp@0.1.7: @@ -7176,8 +7169,8 @@ private@^0.1.6: process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + resolved "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha1-eCDZsWEgzFXKmud5JoCufbptf+I= process@^0.11.10: version "0.11.10" @@ -7308,13 +7301,13 @@ querystring@0.2.0: querystringify@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" - integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== + resolved "https://registry.npm.taobao.org/querystringify/download/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha1-YOWl/WSn+L+k0qsu1v30yFutFU4= queue-microtask@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.1.2.tgz#139bf8186db0c545017ec66c2664ac646d5c571e" - integrity sha512-F9wwNePtXrzZenAB3ax0Y8TSKGvuB7Qw16J30hspEUTbfUM+H827XyN3rlpwhVmtm5wuZtbKIHjOnwDn7MUxWQ== + resolved "https://registry.npm.taobao.org/queue-microtask/download/queue-microtask-1.1.2.tgz#139bf8186db0c545017ec66c2664ac646d5c571e" + integrity sha1-E5v4GG2wxUUBfsZsJmSsZG1cVx4= randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.1.0" @@ -7356,7 +7349,7 @@ read-pkg@^5.0.0: parse-json "^5.0.0" type-fest "^0.6.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -7378,6 +7371,19 @@ readable-stream@^3.0.1, readable-stream@^3.0.6, readable-stream@^3.1.1, readable string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -7591,7 +7597,7 @@ requireindex@~1.1.0: requires-port@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + resolved "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= reselect@^3.0.1: @@ -7714,7 +7720,7 @@ run-queue@^1.0.0, run-queue@^1.0.3: rusha@^0.8.1: version "0.8.13" - resolved "https://registry.yarnpkg.com/rusha/-/rusha-0.8.13.tgz#9a084e7b860b17bff3015b92c67a6a336191513a" + resolved "https://registry.npm.taobao.org/rusha/download/rusha-0.8.13.tgz#9a084e7b860b17bff3015b92c67a6a336191513a" integrity sha1-mghOe4YLF7/zAVuSxnpqM2GRUTo= rx-lite-aggregates@^4.0.8: @@ -7738,14 +7744,19 @@ rxjs@^6.4.0: safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz?cache=0&sync_timestamp=1589129103371&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-buffer%2Fdownload%2Fsafe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0= -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== +safe-buffer@^5.1.1: + version "5.2.1" + resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz?cache=0&sync_timestamp=1589129103371&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-buffer%2Fdownload%2Fsafe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY= + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -7888,7 +7899,7 @@ set-blocking@^2.0.0: set-immediate-shim@~1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + resolved "https://registry.npm.taobao.org/set-immediate-shim/download/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= set-value@^2.0.0, set-value@^2.0.1: @@ -7967,13 +7978,13 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: simple-concat@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" + resolved "https://registry.npm.taobao.org/simple-concat/download/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= simple-get@^3.0.1: version "3.1.0" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" - integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA== + resolved "https://registry.npm.taobao.org/simple-get/download/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" + integrity sha1-tFvgYkNeUNFZVAtXYgLO7EC5xrM= dependencies: decompress-response "^4.2.0" once "^1.3.1" @@ -7981,8 +7992,8 @@ simple-get@^3.0.1: simple-sha1@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/simple-sha1/-/simple-sha1-3.0.1.tgz#b34c3c978d74ac4baf99b6555c1e6736e0d6e700" - integrity sha512-q7ehqWfHc1VhOm7sW099YDZ4I0yYX7rqyhqqhHV1IYeUTjPOhHyD3mXvv8k2P+rO7+7c8R4/D+8ffzC9BE7Cqg== + resolved "https://registry.npm.taobao.org/simple-sha1/download/simple-sha1-3.0.1.tgz#b34c3c978d74ac4baf99b6555c1e6736e0d6e700" + integrity sha1-s0w8l410rEuvmbZVXB5nNuDW5wA= dependencies: queue-microtask "^1.1.2" rusha "^0.8.1" @@ -8333,21 +8344,39 @@ string.prototype.padstart@^3.0.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" -string.prototype.trimleft@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" - integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== +string.prototype.trimend@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/string.prototype.trimend/download/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha1-hYEqa4R6wAInD1gIFGBkyZX7aRM= dependencies: define-properties "^1.1.3" - function-bind "^1.1.1" + es-abstract "^1.17.5" -string.prototype.trimright@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" - integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== +string.prototype.trimleft@^2.1.1: + version "2.1.2" + resolved "https://registry.npm.taobao.org/string.prototype.trimleft/download/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" + integrity sha1-RAiqLl1t3QyagHObCH+8BnwDs8w= dependencies: define-properties "^1.1.3" - function-bind "^1.1.1" + es-abstract "^1.17.5" + string.prototype.trimstart "^1.0.0" + +string.prototype.trimright@^2.1.1: + version "2.1.2" + resolved "https://registry.npm.taobao.org/string.prototype.trimright/download/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" + integrity sha1-x28c7zDyG7rYr+uNsVEUls+w8qM= + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.trimend "^1.0.0" + +string.prototype.trimstart@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/string.prototype.trimstart/download/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha1-FK9tnzSwU/fPyJty+PLuFLkDmlQ= + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" @@ -8358,8 +8387,8 @@ string_decoder@^1.0.0, string_decoder@^1.1.1: string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha1-nPFhG6YmhdcDCunkujQUnDrwP8g= dependencies: safe-buffer "~5.1.0" @@ -8589,7 +8618,7 @@ thenify-all@^1.0.0: thirty-two@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/thirty-two/-/thirty-two-1.0.2.tgz#4ca2fffc02a51290d2744b9e3f557693ca6b627a" + resolved "https://registry.npm.taobao.org/thirty-two/download/thirty-two-1.0.2.tgz#4ca2fffc02a51290d2744b9e3f557693ca6b627a" integrity sha1-TKL//AKlEpDSdEueP1V2k8prYno= thread-loader@^2.1.2: @@ -8832,9 +8861,9 @@ typescript@^3.0.0: integrity sha512-Mcr/Qk7hXqFBXMN7p7Lusj1ktCBydylfQM/FZCk5glCNQJrCUKPkMHdo9R0MTFWsC/4kPFvDS0fDPvukfCkFsw== ua-parser-js@^0.7.20: - version "0.7.20" - resolved "https://registry.npm.taobao.org/ua-parser-js/download/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098" - integrity sha1-dScXi4L2pioPJD0flP0w4+PCEJg= + version "0.7.21" + resolved "https://registry.npm.taobao.org/ua-parser-js/download/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" + integrity sha1-hTz5zpP2QvZxdCc8w0Vlrm8wh3c= uglify-js@3.4.x: version "3.4.10" @@ -8910,7 +8939,7 @@ union-value@^1.0.0: uniq@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + resolved "https://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= uniqs@^2.0.0: @@ -8983,8 +9012,8 @@ urix@^0.1.0: url-join@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" - integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== + resolved "https://registry.npm.taobao.org/url-join/download/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" + integrity sha1-tkLiGiZGgI/6F4xMX9o5hE4Szec= url-loader@^1.1.2: version "1.1.2" @@ -9028,7 +9057,7 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@1.0.0, util.promisify@~1.0.0: +util.promisify@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== @@ -9036,6 +9065,16 @@ util.promisify@1.0.0, util.promisify@~1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha1-a693dLgO6w91INi4HQeYKlmruu4= + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -9140,9 +9179,9 @@ vue-hot-reload-api@^2.3.0: integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== vue-i18n@^8.11.2: - version "8.15.1" - resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.15.1.tgz#90097a08a1e932f645c6b9c404c780d24f6d6224" - integrity sha512-GBbz8qYCu0U2LNu4IcuFLZiuyninG4k26knvhL7GZG5Ncp4RR2VKDEH6g8gQ6I+UUBCvH2MBQVPSdxWe4DBkPw== + version "8.17.6" + resolved "https://registry.npm.taobao.org/vue-i18n/download/vue-i18n-8.17.6.tgz#eb894dc1db7f69f505a8df5fed37f8d10aa10980" + integrity sha1-64lNwdt/afUFqN9f7Tf40QqhCYA= vue-loader@^15.7.0: version "15.7.2" @@ -9162,9 +9201,9 @@ vue-property-decorator@^7.0.0: vue-class-component "^6.2.0" vue-router@^3.0.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.1.3.tgz#e6b14fabc0c0ee9fda0e2cbbda74b350e28e412b" - integrity sha512-8iSa4mGNXBjyuSZFCCO4fiKfvzqk+mhL0lnKuGcQtO1eoj8nq3CmbEG8FwK5QqoqwDgsjsf1GDuisDX4cdb/aQ== + version "3.2.0" + resolved "https://registry.npm.taobao.org/vue-router/download/vue-router-3.2.0.tgz#da35195ffe37fdf0bec9f5f8f72781d2a7718815" + integrity sha1-2jUZX/43/fC+yfX49yeB0qdxiBU= vue-style-loader@^4.1.0: version "4.1.2" @@ -9200,14 +9239,14 @@ vuetify-loader@^1.0.5: loader-utils "^1.2.0" vuetify@^1.3.0: - version "1.5.21" - resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-1.5.21.tgz#e62b4f3b23fc9db39abf340cc9abea3e3859a051" - integrity sha512-x0F2mNoWMXVA2ntrmvfjJFU2elaq2WK1tD9wOBu447xUHdZqswziFD82pNtmWRy3TjEXsLj/ZNO8e5dZig+Iqg== + version "1.5.24" + resolved "https://registry.npm.taobao.org/vuetify/download/vuetify-1.5.24.tgz#d5cf6e7289570d5d05f8832a097cd435d36d37df" + integrity sha1-1c9ucolXDV0F+IMqCXzUNdNtN98= vuex@^3.0.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.1.2.tgz#a2863f4005aa73f2587e55c3fadf3f01f69c7d4d" - integrity sha512-ha3jNLJqNhhrAemDXcmMJMKf1Zu4sybMPr9KxJIuOpVcsDQlTBYLLladav2U+g1AvdYDG5Gs0xBTb0M5pXXYFQ== + version "3.4.0" + resolved "https://registry.npm.taobao.org/vuex/download/vuex-3.4.0.tgz#20cc086062d750769fce1febb34e7fceeaebde45" + integrity sha1-IMwIYGLXUHafzh/rs05/zurr3kU= watchpack@^1.6.0: version "1.6.0" @@ -9233,14 +9272,13 @@ wcwidth@^1.0.1: defaults "^1.0.3" webdav@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/webdav/-/webdav-2.10.0.tgz#96601aafa0a16ad1410dc734285817efbc7f101d" - integrity sha512-wwvVL8IINaQlhHJb2b4z0K1V8nFO5XR+HB+epGfFc2JXqeRRAD68ksq94jl54/JdkHKAr5nlvU9JpW8GML8yBw== + version "2.10.2" + resolved "https://registry.npm.taobao.org/webdav/download/webdav-2.10.2.tgz#caaa3da2141e742d13e763da960bb413600e0e24" + integrity sha1-yqo9ohQedC0T52Palgu0E2AODiQ= dependencies: axios "^0.19.0" base-64 "^0.1.0" hot-patcher "^0.5.0" - merge "^1.2.1" minimatch "^3.0.4" path-posix "^1.0.0" url-join "^4.0.1" @@ -9475,7 +9513,7 @@ wrap-ansi@^6.2.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= write@1.0.3: @@ -9500,18 +9538,17 @@ ws@^6.0.0, ws@^6.2.1: async-limiter "~1.0.0" xml2js@^0.4.19: - version "0.4.22" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.22.tgz#4fa2d846ec803237de86f30aa9b5f70b6600de02" - integrity sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw== + version "0.4.23" + resolved "https://registry.npm.taobao.org/xml2js/download/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha1-oMaVFnUkIesqx1juTUzPWIQ+rGY= dependencies: sax ">=0.6.0" - util.promisify "~1.0.0" xmlbuilder "~11.0.0" xmlbuilder@~11.0.0: version "11.0.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" - integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + resolved "https://registry.npm.taobao.org/xmlbuilder/download/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha1-vpuuHIoEbnazESdyY0fQrXACvrM= xtend@^4.0.0, xtend@~4.0.1: version "4.0.2"