mirror of https://github.com/qist/tvbox.git
parent
7f7c284e35
commit
711c6061ec
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
d80c5c5f48a2111372fc72c6e27bb531
|
||||
94123f38ce5fc594eb342b13d983bb6f
|
||||
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
944282601a1c78f978b6e07949cb420c
|
||||
b8fe79b4b4a7b7895c46a5588e73a49f
|
||||
@ -0,0 +1,181 @@
|
||||
/*
|
||||
* @File : mhdq.js
|
||||
* @Author : jade
|
||||
* @Date : 2024/1/24 9:15
|
||||
* @Email : jadehh@1ive.com
|
||||
* @Software : Samples
|
||||
* @Desc : 18+韩漫
|
||||
*/
|
||||
import {Spider} from "./spider.js";
|
||||
import {BookDetail, BookShort} from "../lib/book.js";
|
||||
|
||||
class MHDQSpider extends Spider {
|
||||
constructor() {
|
||||
super();
|
||||
this.siteUrl = 'https://www.18hanman.com';
|
||||
}
|
||||
|
||||
getName() {
|
||||
return "🖌︎|韩漫18|🖌︎"
|
||||
}
|
||||
|
||||
getAppName() {
|
||||
return "韩漫18"
|
||||
}
|
||||
|
||||
getJSName() {
|
||||
return "mhdq"
|
||||
}
|
||||
|
||||
getType() {
|
||||
return 20
|
||||
}
|
||||
|
||||
async setClasses() {
|
||||
this.classes = []
|
||||
let $ = await this.getHtml(this.siteUrl + "/category/")
|
||||
for (const a of $('div.classopen ul.duzhe a[href!="/"]')) {
|
||||
this.classes.push({
|
||||
type_id: a.attribs.href,
|
||||
type_name: a.children[0].data.trim()
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async parseVodShortListFromDocByCategory($) {
|
||||
const list = eval($('div[class="row exemptComic-box"]')[0].attribs.list);
|
||||
let books = [];
|
||||
for (const book of list) {
|
||||
let bookShort = this.parseVodShortFromJson(book)
|
||||
books.push(bookShort)
|
||||
}
|
||||
return books
|
||||
}
|
||||
|
||||
parseVodShortFromElement($, element) {
|
||||
let bookShort = new BookShort()
|
||||
const a = $(element).find('a:first')[0];
|
||||
const img = $(element).find('img:first-child')[0];
|
||||
bookShort.book_id = a.attribs.href
|
||||
bookShort.book_name = $($(element).find("a").slice(-1)[0]).html()
|
||||
bookShort.book_pic = img.attribs.src
|
||||
bookShort.book_remarks = $($(element).find("span")).text()
|
||||
return bookShort
|
||||
|
||||
}
|
||||
|
||||
async parseVodShortListFromDoc($) {
|
||||
let vodElements = $('ul.catagory-list li')
|
||||
let books = []
|
||||
for (const vodElement of vodElements) {
|
||||
let bookShort = await this.parseVodShortFromElement($, vodElement)
|
||||
books.push(bookShort)
|
||||
}
|
||||
return books
|
||||
}
|
||||
|
||||
async parseVodShortListFromDocBySearch($) {
|
||||
let vodElements = $('ul.u_list')
|
||||
let books = []
|
||||
for (const vodElement of vodElements) {
|
||||
let bookShort = await this.parseVodShortFromElement($, vodElement)
|
||||
books.push(bookShort)
|
||||
}
|
||||
return books
|
||||
}
|
||||
|
||||
async parseVodDetailFromDoc($, id) {
|
||||
let html = $.html()
|
||||
let bookDetail = new BookDetail()
|
||||
bookDetail.book_id = id
|
||||
bookDetail.book_name = $('div.title:first').text().trim()
|
||||
bookDetail.pic = $($('div.img:first-child')).find("img")[0].attribs.src
|
||||
let contentElements = $('div.info ').find("p")
|
||||
for (const contentElelent of contentElements) {
|
||||
if ($(contentElelent).text().indexOf("更新至")) {
|
||||
bookDetail.book_remarks = $(contentElelent).text().replaceAll("更新至:","")
|
||||
}
|
||||
if ($(contentElelent).text().indexOf("作者")) {
|
||||
bookDetail.book_director = $(contentElelent).text().replaceAll("作者:","")
|
||||
}
|
||||
}
|
||||
bookDetail.book_content = $("[class=\"text\"]").text()
|
||||
let urls = [];
|
||||
const links = $('ul.list a[href!="/"]');
|
||||
for (const l of links) {
|
||||
let name = l.children[0].data;
|
||||
let link = l.attribs.href;
|
||||
urls.push(name + '$' + link);
|
||||
}
|
||||
bookDetail.volumes = '全卷';
|
||||
bookDetail.urls = urls.join('#');
|
||||
return bookDetail
|
||||
}
|
||||
|
||||
async setCategory(tid, pg, filter, extend) {
|
||||
const $ = await this.getHtml(this.siteUrl + `${tid}/page/${pg}`)
|
||||
this.vodList = await this.parseVodShortListFromDoc($)
|
||||
|
||||
}
|
||||
|
||||
async setDetail(id) {
|
||||
let $ = await this.getHtml(this.siteUrl + `${id}`)
|
||||
this.vodDetail = await this.parseVodDetailFromDoc($, id)
|
||||
}
|
||||
|
||||
async setPlay(flag, id, flags) {
|
||||
const $ = await this.getHtml(this.siteUrl + id);
|
||||
let content = [];
|
||||
for (const l of $('div.chapterbox img')) {
|
||||
const img = $(l).attr('src');
|
||||
content.push(img);
|
||||
}
|
||||
this.playUrl = {
|
||||
"content": content,
|
||||
}
|
||||
}
|
||||
|
||||
async setSearch(wd, quick) {
|
||||
const $ = await this.getHtml(this.siteUrl + `/index.php/search?key=${wd}`);
|
||||
this.vodList = await this.parseVodShortListFromDocBySearch($)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
let spider = new MHDQSpider()
|
||||
|
||||
async function init(cfg) {
|
||||
await spider.init(cfg)
|
||||
}
|
||||
|
||||
async function home(filter) {
|
||||
return await spider.home(filter)
|
||||
}
|
||||
|
||||
async function homeVod() {
|
||||
return await spider.homeVod()
|
||||
}
|
||||
|
||||
async function category(tid, pg, filter, extend) {
|
||||
return await spider.category(tid, pg, filter, extend)
|
||||
}
|
||||
|
||||
async function detail(id) {
|
||||
return await spider.detail(id)
|
||||
}
|
||||
|
||||
async function play(flag, id, flags) {
|
||||
return await spider.play(flag, id, flags)
|
||||
}
|
||||
|
||||
async function search(wd, quick) {
|
||||
return await spider.search(wd, quick)
|
||||
}
|
||||
|
||||
export function __jsEvalReturn() {
|
||||
return {
|
||||
init: init, home: home, homeVod: homeVod, category: category, detail: detail, play: play, search: search,
|
||||
};
|
||||
}
|
||||
|
||||
export {spider}
|
||||
Loading…
Reference in new issue