mirror of
				https://github.com/lxhfans/catvod.git
				synced 2025-10-31 08:52:23 +00:00 
			
		
		
		
	Delete js directory
This commit is contained in:
		
							
								
								
									
										253
									
								
								js/230ts_open.js
									
									
									
									
									
								
							
							
						
						
									
										253
									
								
								js/230ts_open.js
									
									
									
									
									
								
							| @@ -1,253 +0,0 @@ | ||||
| // 网站搜索异常 | ||||
| import { load, _ } from './lib/cat.js'; | ||||
|  | ||||
| let key = '爱上你听书网'; | ||||
| let HOST = 'https://wap.230ts.net'; | ||||
| let siteKey = ''; | ||||
| let siteType = 0; | ||||
| const MOBILE_UA = 'Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36'; | ||||
|  | ||||
| async function request(reqUrl, agentSp) { | ||||
|     let res = await req(reqUrl, { | ||||
|         method: 'get', | ||||
|         headers: { | ||||
|             'User-Agent': agentSp || MOBILE_UA, | ||||
|             'Referer': HOST | ||||
|         }, | ||||
|     }); | ||||
|     return res.content; | ||||
| } | ||||
|  | ||||
| // cfg = {skey: siteKey, ext: extend} | ||||
| async function init(cfg) { | ||||
|     siteKey = cfg.skey; | ||||
|     siteType = cfg.stype; | ||||
| } | ||||
|  | ||||
| async function home(filter) { | ||||
|     const html = await request(HOST + '/sort/'); | ||||
|     const $ = load(html); | ||||
|     let filterObj = {}; | ||||
|     const class_parse = $('dl.pd-class:first > dd > a[href*=sort]'); | ||||
|     let classes = []; | ||||
|     classes = _.map(class_parse, (cls) => { | ||||
|         let typeId = cls.attribs['href']; | ||||
|         typeId = typeId.replace(/.*?\/sort\/(.*).html/g, '$1'); | ||||
|         return { | ||||
|             type_id: typeId, | ||||
|             type_name: cls.children[0].data, | ||||
|         }; | ||||
|     }); | ||||
|     const sortName = ['玄幻有声', '灵异有声', '综艺娱乐', '长篇评书', '都市有声', '军事有声', '职场有声', '其他有声']; | ||||
|     classes = _.sortBy(classes, (c) => { | ||||
|         const index = sortName.indexOf(c.type_name); | ||||
|         return index === -1 ? sortName.length : index; | ||||
|     }); | ||||
|     return JSON.stringify({ | ||||
|         class: classes, | ||||
|         filters: filterObj, | ||||
|     }); | ||||
| } | ||||
|  | ||||
| async function homeVod() { | ||||
|     const link = HOST + '/top/lastupdate/1.html'; | ||||
|     const html = await request(link); | ||||
|     const $ = load(html); | ||||
|     const items = $('ul.list-ul > li'); | ||||
|     let videos = _.map(items, (item) => { | ||||
|         const it = $(item).find('a:first')[0]; | ||||
|         const img = $(item).find('img:first')[0]; | ||||
|         const remarks = $($(item).find('p.module-slide-author')[0]).text().trim(); | ||||
|         return { | ||||
|             vod_id: it.attribs.href.replace(/.*?\/tingshu\/(.*)/g, '$1'), | ||||
|             vod_name: it.attribs.title.replace('有声小说',''), | ||||
|             vod_pic: HOST + img.attribs['data-original'], | ||||
|             vod_remarks: remarks || '', | ||||
|         }; | ||||
|     }); | ||||
|     return JSON.stringify({ | ||||
|         list: videos, | ||||
|     }); | ||||
| } | ||||
|  | ||||
| async function category(tid, pg, filter, extend) { | ||||
|     if (pg <= 0) pg = 1; | ||||
|     const link = HOST + '/sort/' + tid +'/' + (`${pg}`) + '.html'; | ||||
|     const html = await request(link); | ||||
|     const $ = load(html); | ||||
|     const items = $('ul.book-ol > li'); | ||||
|     let videos = _.map(items, (item) => { | ||||
|         const it = $(item).find('a:first')[0]; | ||||
|         const img = $(item).find('img:first')[0]; | ||||
|         const remarks = $($(item).find('div.book-meta')[0]).text().trim(); | ||||
|         return { | ||||
|             vod_id: it.attribs.href.replace(/.*?\/tingshu\/(.*)/g, '$1'), | ||||
|             vod_name: it.attribs.title.replace('有声小说',''), | ||||
|             vod_pic: HOST + img.attribs['data-original'], | ||||
|             vod_remarks: remarks.replace('佚名(著)','').replace('佚名(播)','').replace('未知(著)','').replace('未知(播)','') || '', | ||||
|         }; | ||||
|     }); | ||||
|     const hasMore = $('div.paging > a:contains(下一页)').length > 0; | ||||
|     const pgCount = hasMore ? parseInt(pg) + 1 : parseInt(pg); | ||||
|     return JSON.stringify({ | ||||
|         page: parseInt(pg), | ||||
|         pagecount: pgCount, | ||||
|         limit: 24, | ||||
|         total: 24 * pgCount, | ||||
|         list: videos, | ||||
|     }); | ||||
| } | ||||
|  | ||||
| async function detail(id) { | ||||
|     const html = await request(HOST + '/tingshu/' + id); | ||||
|     const $ = load(html); | ||||
|     const detail = $('div.book-cell:first > div'); | ||||
|     let vod = { | ||||
|         vod_id: id, | ||||
|         vod_name: $('h1:first').text().trim().replace('有声小说',''), | ||||
|         vod_pic: HOST + $('div.myui-content__thumb img:first').attr('data-original'), | ||||
|         vod_content: $('div.ellipsis').text().trim(), | ||||
|     }; | ||||
|     for (const info of detail) { | ||||
|         const i = $(info).text().trim(); | ||||
|         if (i.startsWith('类型:')) { | ||||
|             vod.vod_type = _.map($(info).find('a'), (a) => { | ||||
|                 return a.children[0].data; | ||||
|             }).join('/'); | ||||
|         } else if (i.startsWith('作者:')) { | ||||
|             vod.vod_director = _.map($(info).find('a'), (a) => { | ||||
|                 return a.children[0].data; | ||||
|             }).join('/'); | ||||
|         } else if (i.startsWith('演播:')) { | ||||
|             vod.vod_actor = _.map($(info).find('a'), (a) => { | ||||
|                 return a.children[0].data; | ||||
|             }).join('/'); | ||||
|         } else if (i.startsWith('连载中')) { | ||||
|             vod.vod_remarks = i.substring(3); | ||||
|         } | ||||
|     } | ||||
|     const playlist = _.map($('#playlist > ul > li > a'), (it) => { | ||||
|         return it.children[0].data + '$' + it.attribs.href.replace(/\/mp3\/(.*).html/g, '$1'); | ||||
|     }); | ||||
|     vod.vod_play_from = '道长在线'; | ||||
|     vod.vod_play_url = playlist.join('#'); | ||||
|     return JSON.stringify({ | ||||
|         list: [vod], | ||||
|     }); | ||||
| } | ||||
|  | ||||
| async function play(flag, id, flags) { | ||||
|     const link = HOST + '/mp3/' + id + '.html'; | ||||
|     const html = await request(link); | ||||
|     const $ = load(html); | ||||
|     const iframe = $('body iframe[src*=player]'); | ||||
|     const iframeHtml = ( | ||||
|         await req(HOST + iframe[0].attribs.src, { | ||||
|             headers: { | ||||
|                 'Referer': link, | ||||
|                 'User-Agent': MOBILE_UA, | ||||
|             }, | ||||
|         }) | ||||
|     ).content; | ||||
|     const playUrl = iframeHtml.match(/mp3:'(.*?)'/)[1]; | ||||
|     if (playUrl.indexOf('m4a') >= 0 || playUrl.indexOf('mp3') >= 0 ) { | ||||
|         return JSON.stringify({ | ||||
|             parse: 0, | ||||
|             url: playUrl, | ||||
|         }); | ||||
|     } else { | ||||
|         try { | ||||
|             const iframeHtml = ( | ||||
|                 await req(HOST + iframe[0].attribs.src, { | ||||
|                     headers: { | ||||
|                         'Referer': link, | ||||
|                         'User-Agent': MOBILE_UA, | ||||
|                     }, | ||||
|                 }) | ||||
|             ).content; | ||||
|             const playUrl = playUrl + '.m4a' + iframeHtml.match(/(\?.*?)'/)[1]; | ||||
|             if (playUrl.indexOf('http') >= 0) { | ||||
|                 return JSON.stringify({ | ||||
|                     parse: 0, | ||||
|                     url: playUrl, | ||||
|                 }); | ||||
|             } else { | ||||
|                 const iframeHtml = ( | ||||
|                     await req(HOST + iframe[0].attribs.src, { | ||||
|                         headers: { | ||||
|                             'Referer': link, | ||||
|                             'User-Agent': MOBILE_UA, | ||||
|                         }, | ||||
|                     }) | ||||
|                 ).content; | ||||
|                 const playUrl2 = iframeHtml.match(/url[\s\S]*?(http.*?)'/)[1]; | ||||
|                 if (playUrl2.indexOf('\?') >= 0) { | ||||
|                     return JSON.stringify({ | ||||
|                         parse: 0, | ||||
|                         url: playUrl2, | ||||
|                     }); | ||||
|                 } else { | ||||
|                     const playUrl3 = playUrl2 + playUrl | ||||
|                     return JSON.stringify({ | ||||
|                         parse: 0, | ||||
|                         url: playUrl3, | ||||
|                     }); | ||||
|                 } | ||||
|             } | ||||
|         } catch (e) {} | ||||
|         if (playUrl.indexOf('http') >= 0) { | ||||
|             const playUrl = playUrl + '.m4a'; | ||||
|             return JSON.stringify({ | ||||
|                 parse: 0, | ||||
|                 url: playUrl, | ||||
|             }); | ||||
|         } else { | ||||
|             const iframeHtml = ( | ||||
|                 await req(HOST + iframe[0].attribs.src, { | ||||
|                     headers: { | ||||
|                         'Referer': link, | ||||
|                         'User-Agent': MOBILE_UA, | ||||
|                     }, | ||||
|                 }) | ||||
|             ).content; | ||||
|             const playUrl4 = iframeHtml.match(/url[\s\S]*?(http.*?)'/)[1]; | ||||
|             return JSON.stringify({ | ||||
|                 parse: 0, | ||||
|                 url: playUrl4 + '.m4a', | ||||
|             }); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| async function search(wd, quick) { | ||||
|     const link = HOST + '/search.html?searchtype=name&searchword=' + wd +'&page=1'; | ||||
|     const html = await request(link); | ||||
|     const $ = load(html); | ||||
|     const items = $('ul.book-ol > li'); | ||||
|     let videos = _.map(items, (item) => { | ||||
|         const it = $(item).find('a:first')[0]; | ||||
|         const img = $(item).find('img:first')[0]; | ||||
|         const remarks = $($(item).find('div.book-meta')[0]).text().trim(); | ||||
|         return { | ||||
|             vod_id: it.attribs.href.replace(/.*?\/tingshu\/(.*)/g, '$1'), | ||||
|             vod_name: it.attribs.title.replace('有声小说',''), | ||||
|             vod_pic: img.attribs['data-original'], | ||||
|             vod_remarks: remarks.replace('佚名(著)','').replace('佚名(播)','').replace('未知(著)','').replace('未知(播)','') || '', | ||||
|         }; | ||||
|     }); | ||||
|     return JSON.stringify({ | ||||
|         list: videos, | ||||
|     }); | ||||
| } | ||||
|  | ||||
| export function __jsEvalReturn() { | ||||
|     return { | ||||
|         init: init, | ||||
|         home: home, | ||||
|         homeVod: homeVod, | ||||
|         category: category, | ||||
|         detail: detail, | ||||
|         play: play, | ||||
|         search: search, | ||||
|     }; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user