123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- /*
- * @File : bookan.js
- * @Author : jade
- * @Date : 2024/1/31 13:44
- * @Email : jadehh@1ive.com
- * @Software : Samples
- * @Desc :
- */
- import {_} from '../lib/cat.js';
- import {Spider} from "./spider.js";
- function formatPlayUrl(name) {
- return name
- .trim()
- .replace(/<|>|《|》/g, '')
- .replace(/\$|#/g, ' ')
- .trim();
- }
- class BooKanSpider extends Spider {
- constructor() {
- super();
- this.siteUrl = "https://api.bookan.com.cn";
- }
- getName() {
- return "🎵┃看书┃🎵"
- }
- getAppName() {
- return "看书"
- }
- getJSName() {
- return "bookan"
- }
- getType() {
- return 10
- }
- async parseVodShortListFromJson(obj) {
- let books = [];
- for (const book of obj.list) {
- books.push({
- book_id: book.id, book_name: book.name, book_pic: book.cover, book_remarks: book.extra.author,
- });
- }
- return books
- }
- async setClasses() {
- {
- this.classes = [{type_id: '1305', type_name: '少年读物'}, {
- type_id: '1304', type_name: '儿童文学'
- }, {type_id: '1320', type_name: '国学经典'}, {type_id: '1306', type_name: '文艺少年'}, {
- type_id: '1309', type_name: '育儿心经'
- }, {type_id: '1310', type_name: '心理哲学'}, {type_id: '1307', type_name: '青春励志'}, {
- type_id: '1312', type_name: '历史小说'
- }, {type_id: '1303', type_name: '故事会'}, {type_id: '1317', type_name: '音乐戏剧'}, {
- type_id: '1319', type_name: '相声评书'
- },]
- }
- }
- async setCategory(tid, pg, filter, extend) {
- let content = await this.fetch(`${this.siteUrl}/voice/book/list?instance_id=25304&page=${pg}&category_id=${tid}&num=24`, null, this.getHeader());
- let data = JSON.parse(content).data;
- this.vodList = await this.parseVodShortListFromJson(data)
- }
- async parseVodDetailfromJson(obj) {
- let book = {
- audio: 1,
- type_name: '',
- book_year: '',
- book_area: '',
- book_remarks: '',
- book_actor: '',
- book_director: '',
- book_content: '',
- };
- let us = _.map(obj.list, function (b) {
- return formatPlayUrl(b.title) + '$' + b.file;
- }).join('#');
- book.volumes = '书卷';
- book.urls = us;
- return book
- }
- async setDetail(id) {
- let content = await this.fetch(`${this.siteUrl}/voice/album/units?album_id=${id}&page=1&num=200&order=1`, null, this.getHeader());
- let data = JSON.parse(content).data;
- this.vodDetail = await this.parseVodDetailfromJson(data)
- this.vodDetail.book_id = id
- }
- async play(flag, id, flags) {
- return JSON.stringify({
- parse: 0, url: id,
- });
- }
- async setSearch(wd, quick) {
- let content = await this.fetch(`https://es.bookan.com.cn/api/v3/voice/book?instanceId=25304&keyword=${wd}&pageNum=1&limitNum=20`,null,this.getHeader());
- let data = JSON.parse(content).data;
- this.vodList = await this.parseVodShortListFromJson(data)
- }
- }
- let spider = new BooKanSpider()
- 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}
|