mirror of
https://github.com/kodjodevf/mangayomi-extensions.git
synced 2026-02-14 19:01:15 +00:00
update zh source
This commit is contained in:
@@ -7,7 +7,7 @@ const mangayomiSources = [{
|
|||||||
"typeSource": "single",
|
"typeSource": "single",
|
||||||
"itemType": 1,
|
"itemType": 1,
|
||||||
"isNsfw": false,
|
"isNsfw": false,
|
||||||
"version": "0.0.1",
|
"version": "0.0.2",
|
||||||
"dateFormat": "",
|
"dateFormat": "",
|
||||||
"dateFormatLocale": "",
|
"dateFormatLocale": "",
|
||||||
"pkgPath": "anime/src/zh/ffzy.js"
|
"pkgPath": "anime/src/zh/ffzy.js"
|
||||||
@@ -95,13 +95,22 @@ class DefaultExtension extends MProvider {
|
|||||||
const content = this.text(anime.vod_content);
|
const content = this.text(anime.vod_content);
|
||||||
desc = desc.length < blurb?.length ? blurb : desc;
|
desc = desc.length < blurb?.length ? blurb : desc;
|
||||||
desc = desc.length < content.length ? content : desc;
|
desc = desc.length < content.length ? content : desc;
|
||||||
const urls = anime.vod_play_url
|
|
||||||
.split("#")
|
const playLists = anime.vod_play_url.split("$$$");
|
||||||
.filter((e) => e)
|
const urls = [];
|
||||||
.map((e) => {
|
|
||||||
const s = e.split("$");
|
for (const playList of playLists) {
|
||||||
return { name: s[0], url: s[1] };
|
const episodes = playList.split("#").filter(e => e);
|
||||||
});
|
|
||||||
|
for (const episode of episodes) {
|
||||||
|
const parts = episode.split("$");
|
||||||
|
const name = parts[0];
|
||||||
|
const episodeUrl = parts[1];
|
||||||
|
if (episodeUrl.includes("m3u8")) {
|
||||||
|
urls.push({ name, url: episodeUrl });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
name: anime.vod_name,
|
name: anime.vod_name,
|
||||||
imageUrl: anime.vod_pic,
|
imageUrl: anime.vod_pic,
|
||||||
@@ -111,11 +120,13 @@ class DefaultExtension extends MProvider {
|
|||||||
}
|
}
|
||||||
// For anime episode video list
|
// For anime episode video list
|
||||||
async getVideoList(url) {
|
async getVideoList(url) {
|
||||||
return [{
|
return [
|
||||||
url: url,
|
{
|
||||||
originalUrl: url,
|
url: url,
|
||||||
quality: "HLS"
|
originalUrl: url,
|
||||||
}];
|
quality: "HLS"
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
// For manga chapter pages
|
// For manga chapter pages
|
||||||
async getPageList() {
|
async getPageList() {
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
const mangayomiSources = [{
|
const mangayomiSources = [{
|
||||||
"name": "极速资源",
|
"name": "极速资源",
|
||||||
"lang": "zh",
|
"lang": "zh",
|
||||||
"baseUrl": "https://wwww.jisuzy.com",
|
"baseUrl": "https://www.jisuzy.com",
|
||||||
"apiUrl": "",
|
"apiUrl": "",
|
||||||
"iconUrl": "https://www.jisuzy.com/template/default/images/site_logo.png",
|
"iconUrl": "https://www.jisuzy.com/template/default/images/site_logo.png",
|
||||||
"typeSource": "single",
|
"typeSource": "single",
|
||||||
"itemType": 1,
|
"itemType": 1,
|
||||||
"isNsfw": false,
|
"isNsfw": false,
|
||||||
"version": "0.0.1",
|
"version": "0.0.2",
|
||||||
"dateFormat": "",
|
"dateFormat": "",
|
||||||
"dateFormatLocale": "",
|
"dateFormatLocale": "",
|
||||||
"pkgPath": "anime/src/zh/jisuzy.js"
|
"pkgPath": "anime/src/zh/jisuzy.js"
|
||||||
@@ -95,13 +95,22 @@ class DefaultExtension extends MProvider {
|
|||||||
const content = this.text(anime.vod_content);
|
const content = this.text(anime.vod_content);
|
||||||
desc = desc.length < blurb?.length ? blurb : desc;
|
desc = desc.length < blurb?.length ? blurb : desc;
|
||||||
desc = desc.length < content.length ? content : desc;
|
desc = desc.length < content.length ? content : desc;
|
||||||
const urls = anime.vod_play_url
|
|
||||||
.split("#")
|
const playLists = anime.vod_play_url.split("$$$");
|
||||||
.filter((e) => e)
|
const urls = [];
|
||||||
.map((e) => {
|
|
||||||
const s = e.split("$");
|
for (const playList of playLists) {
|
||||||
return { name: s[0], url: s[1] };
|
const episodes = playList.split("#").filter(e => e);
|
||||||
});
|
|
||||||
|
for (const episode of episodes) {
|
||||||
|
const parts = episode.split("$");
|
||||||
|
const name = parts[0];
|
||||||
|
const episodeUrl = parts[1];
|
||||||
|
if (episodeUrl.includes("m3u8")) {
|
||||||
|
urls.push({ name, url: episodeUrl });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
name: anime.vod_name,
|
name: anime.vod_name,
|
||||||
imageUrl: anime.vod_pic,
|
imageUrl: anime.vod_pic,
|
||||||
@@ -111,11 +120,13 @@ class DefaultExtension extends MProvider {
|
|||||||
}
|
}
|
||||||
// For anime episode video list
|
// For anime episode video list
|
||||||
async getVideoList(url) {
|
async getVideoList(url) {
|
||||||
return [{
|
return [
|
||||||
url: url,
|
{
|
||||||
originalUrl: url,
|
url: url,
|
||||||
quality: "HLS"
|
originalUrl: url,
|
||||||
}];
|
quality: "HLS"
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
// For manga chapter pages
|
// For manga chapter pages
|
||||||
async getPageList() {
|
async getPageList() {
|
||||||
|
|||||||
211
javascript/anime/src/zh/mihdr.js
Normal file
211
javascript/anime/src/zh/mihdr.js
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
const mangayomiSources = [{
|
||||||
|
"name": "至臻视觉",
|
||||||
|
"lang": "zh",
|
||||||
|
"baseUrl": "https://mihdr.top",
|
||||||
|
"apiUrl": "",
|
||||||
|
"iconUrl": "https://mihdr.top/upload/dycms/20240708-1/9150a85ec594c1e7b14619e6570d7ee4.png",
|
||||||
|
"typeSource": "single",
|
||||||
|
"itemType": 1,
|
||||||
|
"isNsfw": false,
|
||||||
|
"version": "0.0.25",
|
||||||
|
"dateFormat": "",
|
||||||
|
"dateFormatLocale": "",
|
||||||
|
"pkgPath": "anime/src/zh/mihdr.js"
|
||||||
|
}];
|
||||||
|
class DefaultExtension extends MProvider {
|
||||||
|
patternQuark = /(https:\/\/pan\.quark\.cn\/s\/[^"]+)/;
|
||||||
|
patternUc = /(https:\/\/drive\.uc\.cn\/s\/[^"]+)/;
|
||||||
|
getHeaders(url) {
|
||||||
|
throw new Error("getHeaders not implemented");
|
||||||
|
}
|
||||||
|
async getPopular(page) {
|
||||||
|
const baseUrl = new SharedPreferences().get("url");
|
||||||
|
const response = await new Client({ 'useDartHttpClient': true }).get(baseUrl, { "Referer": baseUrl });
|
||||||
|
const elements = new Document(response.body).select("div.module-item");
|
||||||
|
const list = [];
|
||||||
|
for (const element of elements) {
|
||||||
|
let oneA = element.selectFirst('.module-item-cover .module-item-pic a');
|
||||||
|
const name = oneA.attr("title");
|
||||||
|
const imageUrl = element.selectFirst(".module-item-cover .module-item-pic img").attr("data-src");
|
||||||
|
const link = oneA.attr("href");
|
||||||
|
list.push({ name, imageUrl, link });
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
list: list,
|
||||||
|
hasNextPage: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async getLatestUpdates(page) {
|
||||||
|
const baseUrl = new SharedPreferences().get("url");
|
||||||
|
const response = await new Client({ 'useDartHttpClient': true }).get(baseUrl + `/index.php/vod/show/id/1/page/${page}.html`, { "Referer": baseUrl });
|
||||||
|
const elements = new Document(response.body).select("div.module-item");
|
||||||
|
const list = [];
|
||||||
|
for (const element of elements) {
|
||||||
|
let oneA = element.selectFirst('.module-item-cover .module-item-pic a');
|
||||||
|
const name = oneA.attr("title");
|
||||||
|
const imageUrl = element.selectFirst(".module-item-cover .module-item-pic img").attr("data-src");
|
||||||
|
const link = oneA.attr("href");
|
||||||
|
list.push({ name, imageUrl, link });
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
list: list,
|
||||||
|
hasNextPage: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async search(query, page, filters) {
|
||||||
|
const baseUrl = new SharedPreferences().get("url");
|
||||||
|
if (query == "") {
|
||||||
|
var categories;
|
||||||
|
for (const filter of filters) {
|
||||||
|
if (filter["type"] == "categories") {
|
||||||
|
categories = filter["values"][filter["state"]]["value"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const response = await new Client({ 'useDartHttpClient': true }).get(baseUrl + `/index.php/vod/show/id/${categories}/page/${page}.html`, { "Referer": baseUrl });
|
||||||
|
const elements = new Document(response.body).select("div.module-item");
|
||||||
|
const list = [];
|
||||||
|
for (const element of elements) {
|
||||||
|
let oneA = element.selectFirst('.module-item-cover .module-item-pic a');
|
||||||
|
const name = oneA.attr("title");
|
||||||
|
const imageUrl = element.selectFirst(".module-item-cover .module-item-pic img").attr("data-src");
|
||||||
|
const link = oneA.attr("href");
|
||||||
|
list.push({ name, imageUrl, link });
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
list: list,
|
||||||
|
hasNextPage: true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const response = await new Client({ 'useDartHttpClient': true }).get(baseUrl + `/index.php/vod/search/page/${page}/wd/${query}.html`, { "Referer": baseUrl });
|
||||||
|
const elements = new Document(response.body).select(".module-search-item");
|
||||||
|
const list = [];
|
||||||
|
for (const element of elements) {
|
||||||
|
let oneA = element.selectFirst('.video-info .video-info-header a');
|
||||||
|
const name = oneA.attr("title");
|
||||||
|
const imageUrl = element.selectFirst(".video-cover .module-item-cover .module-item-pic img").attr("data-src");
|
||||||
|
const link = oneA.attr("href");
|
||||||
|
list.push({ name, imageUrl, link });
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
list: list,
|
||||||
|
hasNextPage: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async getDetail(url) {
|
||||||
|
const baseUrl = new SharedPreferences().get("url");
|
||||||
|
const response = await new Client({ 'useDartHttpClient': true }).get(baseUrl + url, { "Referer": baseUrl });
|
||||||
|
const document = new Document(response.body);
|
||||||
|
const imageUrl = document.selectFirst("div.video-cover .module-item-cover .module-item-pic img").attr("data-src");
|
||||||
|
const name = document.selectFirst("div.video-info .video-info-header h1").text;
|
||||||
|
const description = document.selectFirst("div.video-info .video-info-content").text.replace("[收起部分]", "").replace("[展开全部]", "");
|
||||||
|
const type_name = "电影";
|
||||||
|
let quark_share_url_list = [], uc_share_url_list = []
|
||||||
|
const share_url_list = document.select("div.module-row-one .module-row-info")
|
||||||
|
.map(e => {
|
||||||
|
const url = e.selectFirst(".module-row-title p").text;
|
||||||
|
const quarkMatches = url.match(this.patternQuark);
|
||||||
|
|
||||||
|
if (quarkMatches && quarkMatches[1]) {
|
||||||
|
quark_share_url_list.push(quarkMatches[1]);
|
||||||
|
}
|
||||||
|
const ucMatches = url.match(this.patternUc);
|
||||||
|
if (ucMatches && ucMatches[1]) {
|
||||||
|
uc_share_url_list.push(ucMatches[1]);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
})
|
||||||
|
.filter(url => url !== null);
|
||||||
|
let quark_episodes = await quarkFilesExtractor(quark_share_url_list, new SharedPreferences().get("quarkCookie"));
|
||||||
|
let uc_episodes = await ucFilesExtractor(uc_share_url_list, new SharedPreferences().get("ucCookie"));
|
||||||
|
let episodes = [...quark_episodes, ...uc_episodes];
|
||||||
|
return {
|
||||||
|
name, imageUrl, description, episodes
|
||||||
|
};
|
||||||
|
}
|
||||||
|
// For anime episode video list
|
||||||
|
async getVideoList(url) {
|
||||||
|
const videos = [];
|
||||||
|
const parts = url.split('++');
|
||||||
|
const type = parts[0].toLowerCase();
|
||||||
|
|
||||||
|
let vids;
|
||||||
|
if (type === 'quark') {
|
||||||
|
let cookie = new SharedPreferences().get("quarkCookie");
|
||||||
|
if (cookie == "") {
|
||||||
|
throw new Error("请先在本扩展设置中填写夸克Cookies, 需要夸克VIP账号 \n Please fill in the Quark Cookies in this extension settings first, you need a Quark VIP account");
|
||||||
|
} else {
|
||||||
|
vids = await quarkVideosExtractor(url, cookie);
|
||||||
|
}
|
||||||
|
} else if (type === 'uc') {
|
||||||
|
let cookie = new SharedPreferences().get("ucCookie");
|
||||||
|
if (cookie == "") {
|
||||||
|
throw new Error("请先在本扩展设置中填写UC云盘Cookies \n Please fill in the UC Cloud Cookies in this extension settings first");
|
||||||
|
} else {
|
||||||
|
vids = await ucVideosExtractor(url, cookie);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new Error("不支持的链接类型");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const vid of vids) {
|
||||||
|
videos.push(vid);
|
||||||
|
}
|
||||||
|
return videos;
|
||||||
|
}
|
||||||
|
getFilterList() {
|
||||||
|
return [{
|
||||||
|
type: "categories",
|
||||||
|
name: "影片類型",
|
||||||
|
type_name: "SelectFilter",
|
||||||
|
values: [
|
||||||
|
{ type_name: "SelectOption", value: "1", name: "电影" },
|
||||||
|
{ type_name: "SelectOption", value: "2", name: "剧集" },
|
||||||
|
{ type_name: "SelectOption", value: "3", name: "动漫" },
|
||||||
|
{ type_name: "SelectOption", value: "4", name: "综艺" },
|
||||||
|
{ type_name: "SelectOption", value: "5", name: "短剧" },
|
||||||
|
{ type_name: "SelectOption", value: "25", name: "臻彩视觉" }
|
||||||
|
]
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
getSourcePreferences() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
"key": "quarkCookie",
|
||||||
|
"editTextPreference": {
|
||||||
|
"title": "夸克Cookies",
|
||||||
|
"summary": "填写获取到的夸克Cookies",
|
||||||
|
"value": "",
|
||||||
|
"dialogTitle": "Cookies",
|
||||||
|
"dialogMessage": "",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "ucCookie",
|
||||||
|
"editTextPreference": {
|
||||||
|
"title": "UC云盘Cookies",
|
||||||
|
"summary": "填写获取到的UC云盘Cookies",
|
||||||
|
"value": "",
|
||||||
|
"dialogTitle": "Cookies",
|
||||||
|
"dialogMessage": "",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "url",
|
||||||
|
"listPreference": {
|
||||||
|
"title": "Website Url",
|
||||||
|
"summary": "",
|
||||||
|
"valueIndex": 0,
|
||||||
|
"entries": [
|
||||||
|
"mihdr.top",
|
||||||
|
"mpanso.com",
|
||||||
|
],
|
||||||
|
"entryValues": [
|
||||||
|
"https://mihdr.top",
|
||||||
|
"http://mpanso.com",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
210
javascript/anime/src/zh/mucpan.js
Normal file
210
javascript/anime/src/zh/mucpan.js
Normal file
@@ -0,0 +1,210 @@
|
|||||||
|
const mangayomiSources = [{
|
||||||
|
"name": "小米UC资源站",
|
||||||
|
"lang": "zh",
|
||||||
|
"baseUrl": "http://www.mucpan.cc",
|
||||||
|
"apiUrl": "",
|
||||||
|
"iconUrl": "http://www.mucpan.cc/template/DYXS2/static/picture/index_logo.png",
|
||||||
|
"typeSource": "single",
|
||||||
|
"itemType": 1,
|
||||||
|
"isNsfw": false,
|
||||||
|
"version": "0.0.25",
|
||||||
|
"dateFormat": "",
|
||||||
|
"dateFormatLocale": "",
|
||||||
|
"pkgPath": "anime/src/zh/mucpan.js"
|
||||||
|
}];
|
||||||
|
class DefaultExtension extends MProvider {
|
||||||
|
patternQuark = /(https:\/\/pan\.quark\.cn\/s\/[^"]+)/;
|
||||||
|
patternUc = /(https:\/\/drive\.uc\.cn\/s\/[^"]+)/;
|
||||||
|
getHeaders(url) {
|
||||||
|
throw new Error("getHeaders not implemented");
|
||||||
|
}
|
||||||
|
async getPopular(page) {
|
||||||
|
const baseUrl = new SharedPreferences().get("url");
|
||||||
|
const response = await new Client({ 'useDartHttpClient': true }).get(baseUrl, { "Referer": baseUrl });
|
||||||
|
const elements = new Document(response.body).select("div.module-item");
|
||||||
|
const list = [];
|
||||||
|
for (const element of elements) {
|
||||||
|
let oneA = element.selectFirst('.module-item-cover .module-item-pic a');
|
||||||
|
const name = oneA.attr("title");
|
||||||
|
const imageUrl = element.selectFirst(".module-item-cover .module-item-pic img").attr("data-src");
|
||||||
|
const link = oneA.attr("href");
|
||||||
|
list.push({ name, imageUrl, link });
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
list: list,
|
||||||
|
hasNextPage: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async getLatestUpdates(page) {
|
||||||
|
const baseUrl = new SharedPreferences().get("url");
|
||||||
|
const response = await new Client({ 'useDartHttpClient': true }).get(baseUrl + `/index.php/vod/show/id/20/page/${page}.html`, { "Referer": baseUrl });
|
||||||
|
const elements = new Document(response.body).select("div.module-item");
|
||||||
|
const list = [];
|
||||||
|
for (const element of elements) {
|
||||||
|
let oneA = element.selectFirst('.module-item-cover .module-item-pic a');
|
||||||
|
const name = oneA.attr("title");
|
||||||
|
const imageUrl = element.selectFirst(".module-item-cover .module-item-pic img").attr("data-src");
|
||||||
|
const link = oneA.attr("href");
|
||||||
|
list.push({ name, imageUrl, link });
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
list: list,
|
||||||
|
hasNextPage: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async search(query, page, filters) {
|
||||||
|
const baseUrl = new SharedPreferences().get("url");
|
||||||
|
if (query == "") {
|
||||||
|
var categories;
|
||||||
|
for (const filter of filters) {
|
||||||
|
if (filter["type"] == "categories") {
|
||||||
|
categories = filter["values"][filter["state"]]["value"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const response = await new Client({ 'useDartHttpClient': true }).get(baseUrl + `/index.php/vod/show/id/${categories}/page/${page}.html`, { "Referer": baseUrl });
|
||||||
|
const elements = new Document(response.body).select("div.module-item");
|
||||||
|
const list = [];
|
||||||
|
for (const element of elements) {
|
||||||
|
let oneA = element.selectFirst('.module-item-cover .module-item-pic a');
|
||||||
|
const name = oneA.attr("title");
|
||||||
|
const imageUrl = element.selectFirst(".module-item-cover .module-item-pic img").attr("data-src");
|
||||||
|
const link = oneA.attr("href");
|
||||||
|
list.push({ name, imageUrl, link });
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
list: list,
|
||||||
|
hasNextPage: true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const response = await new Client({ 'useDartHttpClient': true }).get(baseUrl + `/index.php/vod/search/page/${page}/wd/${query}.html`, { "Referer": baseUrl });
|
||||||
|
const elements = new Document(response.body).select(".module-search-item");
|
||||||
|
const list = [];
|
||||||
|
for (const element of elements) {
|
||||||
|
let oneA = element.selectFirst('.video-info .video-info-header a');
|
||||||
|
const name = oneA.attr("title");
|
||||||
|
const imageUrl = element.selectFirst(".video-cover .module-item-cover .module-item-pic img").attr("data-src");
|
||||||
|
const link = oneA.attr("href");
|
||||||
|
list.push({ name, imageUrl, link });
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
list: list,
|
||||||
|
hasNextPage: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async getDetail(url) {
|
||||||
|
const baseUrl = new SharedPreferences().get("url");
|
||||||
|
const response = await new Client({ 'useDartHttpClient': true }).get(baseUrl + url, { "Referer": baseUrl });
|
||||||
|
const document = new Document(response.body);
|
||||||
|
const imageUrl = document.selectFirst("div.video-cover .module-item-cover .module-item-pic img").attr("data-src");
|
||||||
|
const name = document.selectFirst("div.video-info .video-info-header h1").text;
|
||||||
|
const description = document.selectFirst("div.video-info .video-info-content").text.replace("[收起部分]", "").replace("[展开全部]", "");
|
||||||
|
const type_name = "电影";
|
||||||
|
let quark_share_url_list = [], uc_share_url_list = []
|
||||||
|
const share_url_list = document.select("div.module-row-one .module-row-info")
|
||||||
|
.map(e => {
|
||||||
|
const url = e.selectFirst(".module-row-title p").text;
|
||||||
|
const quarkMatches = url.match(this.patternQuark);
|
||||||
|
|
||||||
|
if (quarkMatches && quarkMatches[1]) {
|
||||||
|
quark_share_url_list.push(quarkMatches[1]);
|
||||||
|
}
|
||||||
|
const ucMatches = url.match(this.patternUc);
|
||||||
|
if (ucMatches && ucMatches[1]) {
|
||||||
|
uc_share_url_list.push(ucMatches[1]);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
})
|
||||||
|
.filter(url => url !== null);
|
||||||
|
let quark_episodes = await quarkFilesExtractor(quark_share_url_list, new SharedPreferences().get("quarkCookie"));
|
||||||
|
let uc_episodes = await ucFilesExtractor(uc_share_url_list, new SharedPreferences().get("ucCookie"));
|
||||||
|
let episodes = [...quark_episodes, ...uc_episodes];
|
||||||
|
return {
|
||||||
|
name, imageUrl, description, episodes
|
||||||
|
};
|
||||||
|
}
|
||||||
|
// For anime episode video list
|
||||||
|
async getVideoList(url) {
|
||||||
|
const videos = [];
|
||||||
|
const parts = url.split('++');
|
||||||
|
const type = parts[0].toLowerCase();
|
||||||
|
|
||||||
|
let vids;
|
||||||
|
if (type === 'quark') {
|
||||||
|
let cookie = new SharedPreferences().get("quarkCookie");
|
||||||
|
if (cookie == "") {
|
||||||
|
throw new Error("请先在本扩展设置中填写夸克Cookies, 需要夸克VIP账号 \n Please fill in the Quark Cookies in this extension settings first, you need a Quark VIP account");
|
||||||
|
} else {
|
||||||
|
vids = await quarkVideosExtractor(url, cookie);
|
||||||
|
}
|
||||||
|
} else if (type === 'uc') {
|
||||||
|
let cookie = new SharedPreferences().get("ucCookie");
|
||||||
|
if (cookie == "") {
|
||||||
|
throw new Error("请先在本扩展设置中填写UC云盘Cookies \n Please fill in the UC Cloud Cookies in this extension settings first");
|
||||||
|
} else {
|
||||||
|
vids = await ucVideosExtractor(url, cookie);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new Error("不支持的链接类型");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const vid of vids) {
|
||||||
|
videos.push(vid);
|
||||||
|
}
|
||||||
|
return videos;
|
||||||
|
}
|
||||||
|
getFilterList() {
|
||||||
|
return [{
|
||||||
|
type: "categories",
|
||||||
|
name: "影片類型",
|
||||||
|
type_name: "SelectFilter",
|
||||||
|
values: [
|
||||||
|
{ type_name: "SelectOption", value: "20", name: "电影" },
|
||||||
|
{ type_name: "SelectOption", value: "21", name: "剧集" },
|
||||||
|
{ type_name: "SelectOption", value: "22", name: "动漫" },
|
||||||
|
{ type_name: "SelectOption", value: "23", name: "综艺" },
|
||||||
|
{ type_name: "SelectOption", value: "24", name: "少儿" }
|
||||||
|
]
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
getSourcePreferences() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
"key": "quarkCookie",
|
||||||
|
"editTextPreference": {
|
||||||
|
"title": "夸克Cookies",
|
||||||
|
"summary": "填写获取到的夸克Cookies",
|
||||||
|
"value": "",
|
||||||
|
"dialogTitle": "Cookies",
|
||||||
|
"dialogMessage": "",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "ucCookie",
|
||||||
|
"editTextPreference": {
|
||||||
|
"title": "UC云盘Cookies",
|
||||||
|
"summary": "填写获取到的UC云盘Cookies",
|
||||||
|
"value": "",
|
||||||
|
"dialogTitle": "Cookies",
|
||||||
|
"dialogMessage": "",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "url",
|
||||||
|
"listPreference": {
|
||||||
|
"title": "Website Url",
|
||||||
|
"summary": "",
|
||||||
|
"valueIndex": 0,
|
||||||
|
"entries": [
|
||||||
|
"mucpan.cc",
|
||||||
|
"54271.fun"
|
||||||
|
],
|
||||||
|
"entryValues": [
|
||||||
|
"http://www.mucpan.cc",
|
||||||
|
"https://54271.fun"
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,7 +7,7 @@ const mangayomiSources = [{
|
|||||||
"typeSource": "single",
|
"typeSource": "single",
|
||||||
"itemType": 1,
|
"itemType": 1,
|
||||||
"isNsfw": false,
|
"isNsfw": false,
|
||||||
"version": "0.0.1",
|
"version": "0.0.2",
|
||||||
"dateFormat": "",
|
"dateFormat": "",
|
||||||
"dateFormatLocale": "",
|
"dateFormatLocale": "",
|
||||||
"pkgPath": "anime/src/zh/tiankongzy.js"
|
"pkgPath": "anime/src/zh/tiankongzy.js"
|
||||||
@@ -95,13 +95,22 @@ class DefaultExtension extends MProvider {
|
|||||||
const content = this.text(anime.vod_content);
|
const content = this.text(anime.vod_content);
|
||||||
desc = desc.length < blurb?.length ? blurb : desc;
|
desc = desc.length < blurb?.length ? blurb : desc;
|
||||||
desc = desc.length < content.length ? content : desc;
|
desc = desc.length < content.length ? content : desc;
|
||||||
const urls = anime.vod_play_url
|
|
||||||
.split("#")
|
const playLists = anime.vod_play_url.split("$$$");
|
||||||
.filter((e) => e)
|
const urls = [];
|
||||||
.map((e) => {
|
|
||||||
const s = e.split("$");
|
for (const playList of playLists) {
|
||||||
return { name: s[0], url: s[1] };
|
const episodes = playList.split("#").filter(e => e);
|
||||||
});
|
|
||||||
|
for (const episode of episodes) {
|
||||||
|
const parts = episode.split("$");
|
||||||
|
const name = parts[0];
|
||||||
|
const episodeUrl = parts[1];
|
||||||
|
if (episodeUrl.includes("m3u8")) {
|
||||||
|
urls.push({ name, url: episodeUrl });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
name: anime.vod_name,
|
name: anime.vod_name,
|
||||||
imageUrl: anime.vod_pic,
|
imageUrl: anime.vod_pic,
|
||||||
@@ -111,11 +120,13 @@ class DefaultExtension extends MProvider {
|
|||||||
}
|
}
|
||||||
// For anime episode video list
|
// For anime episode video list
|
||||||
async getVideoList(url) {
|
async getVideoList(url) {
|
||||||
return [{
|
return [
|
||||||
url: url,
|
{
|
||||||
originalUrl: url,
|
url: url,
|
||||||
quality: "HLS"
|
originalUrl: url,
|
||||||
}];
|
quality: "HLS"
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
// For manga chapter pages
|
// For manga chapter pages
|
||||||
async getPageList() {
|
async getPageList() {
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
const mangayomiSources = [{
|
const mangayomiSources = [{
|
||||||
"name": "玩偶哥哥",
|
"name": "玩偶哥哥",
|
||||||
"lang": "zh",
|
"lang": "zh",
|
||||||
"baseUrl": "https://www.wogg.net",
|
"baseUrl": "https://www.wogg.one",
|
||||||
"apiUrl": "",
|
"apiUrl": "",
|
||||||
"iconUrl": "https://imgsrc.baidu.com/forum/pic/item/4b90f603738da977d5da660af651f8198618e31f.jpg",
|
"iconUrl": "https://imgsrc.baidu.com/forum/pic/item/4b90f603738da977d5da660af651f8198618e31f.jpg",
|
||||||
"typeSource": "single",
|
"typeSource": "single",
|
||||||
"itemType": 1,
|
"itemType": 1,
|
||||||
"isNsfw": false,
|
"isNsfw": false,
|
||||||
"version": "0.0.2",
|
"version": "0.0.25",
|
||||||
"dateFormat": "",
|
"dateFormat": "",
|
||||||
"dateFormatLocale": "",
|
"dateFormatLocale": "",
|
||||||
"pkgPath": "anime/src/zh/wogg.js"
|
"pkgPath": "anime/src/zh/wogg.js"
|
||||||
@@ -198,17 +198,13 @@ class DefaultExtension extends MProvider {
|
|||||||
"summary": "",
|
"summary": "",
|
||||||
"valueIndex": 0,
|
"valueIndex": 0,
|
||||||
"entries": [
|
"entries": [
|
||||||
"wogg.net",
|
"wogg.one",
|
||||||
"wogg.xxooo.cf",
|
"wogg.xxooo.cf",
|
||||||
"wogg.888484.xyz",
|
|
||||||
"wogg.bf",
|
|
||||||
"wogg.333232.xyz"
|
"wogg.333232.xyz"
|
||||||
],
|
],
|
||||||
"entryValues": [
|
"entryValues": [
|
||||||
"https://www.wogg.net",
|
"https://www.wogg.one",
|
||||||
"https://wogg.xxooo.cf",
|
"https://wogg.xxooo.cf",
|
||||||
"https://wogg.888484.xyz",
|
|
||||||
"https://www.wogg.bf",
|
|
||||||
"https://wogg.333232.xyz"
|
"https://wogg.333232.xyz"
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user