123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- import { Crypto, load, _ } from './lib/cat.js';
- //let siteUrl = 'https://m.xiangdao.me';
- let siteUrl ='https://v.nmvod.cn/api.php';
- 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';
- let headers = {
- 'User-Agent': MOBILE_UA,
- 'Referer': siteUrl + '/'
- };
- let jxUrl = ['https://api.cnmcom.com/webcloud/nmsvip.php?url=','https://api.cnmcom.com/webcloud/nmsssvip.php?vid=', 'https://api.cnmcom.com/webcloud/nmssvip.php?url=', 'https://api.cnmcom.com/webcloud/m3u8.php?url='];
- async function request(reqUrl, postData) {
- let res = await req(reqUrl, {
- method: 'post',
- headers: headers,
- data: postData || {},
- postType: 'form',
- });
- let content = res.content;
- return content;
- }
- async function init(cfg) {
- siteKey = cfg.skey;
- siteType = cfg.stype;
- if (cfg.ext) {
- siteUrl = cfg.ext;
- }
- }
- async function home(filter) {
- let classes = [{
- type_id: '3778678',
- type_name: '热歌榜',
- },{
- type_id: '19723756',
- type_name: '飙升榜',
- },{
- type_id: '3779629',
- type_name: '新歌榜',
- },{
- type_id: '2884035',
- type_name: '原创歌曲榜',
- },{
- type_id: '5213356842',
- type_name: '新说唱热歌榜',
- },{
- type_id: '991319590',
- type_name: '说唱榜',
- },{
- type_id: '2250011882',
- type_name: '抖音排行榜',
- },{
- type_id: '745956260',
- type_name: '韩语榜',
- },{
- type_id: '2809513713',
- type_name: '欧美热歌榜',
- },{
- type_id: '2809577409',
- type_name: '欧美新歌榜',
- },{
- type_id: '5059644681',
- type_name: '日语榜',
- },{
- type_id: '3112516681',
- type_name: '中国新乡村音乐排行榜',
- }];
- return JSON.stringify({
- class: classes,
- });
- }
- async function homeVod() {
- }
- async function category(tid, pg, filter, ext) {
- let playList = JSON.parse(await request(siteUrl, {
- 'types': 'playlist',
- 'id': tid,
- })).playlist;
- let videos = _.map(playList.tracks, n => {
- return {
- vod_id: n.id,
- vod_name: n.name,
- vod_pic: n.al.picUrl,
- vod_remarks: n.ar[0].name
- }
- });
- return JSON.stringify({
- list: videos,
- page: pg,
- total: videos.length
- });
- }
- async function detail(id) {
- try {
- let playUrl = JSON.parse(await request(siteUrl, {
- 'types': 'url',
- 'id': id,
- 'source': 'netease',
- })).url;
-
- const video = {
- vod_play_from: 'Leospring',
- vod_play_url: playUrl,
- vod_content: '该作品由leospring采集分享,公众号【蚂蚁科技杂谈】,请勿传播分享,仅供技术学习使用,请在学习后24小时内删除;由此产生的任何法律风险自行承担,与本作者无关!',
- };
- const list = [video];
- const result = { list };
- return JSON.stringify(result);
- } catch (e) {
- console.log('err', e);
- }
- return null;
- }
- async function search(wd, quick, pg) {
- let playList = JSON.parse(await request(siteUrl, {
- 'types': 'search',
- 'name': wd,
- 'source':'netease',
- 'count': '20',
- 'pages': pg
- }));
- const js2Base = await js2Proxy(true, siteType, siteKey, 'img/', {});
- let videos = _.map(playList, n => {
- return {
- vod_id: n.id,
- vod_name: n.name,
- vod_pic: js2Base + base64Encode(n.pic_id),
- vod_remarks: ''
- }
- });
- return JSON.stringify({
- list: videos,
- page: pg,
- total: videos.length
- });
- }
- async function play(flag, id, flags) {
- return JSON.stringify({
- parse: 0,
- url: id,
- });
- }
- function base64Encode(text) {
- return Crypto.enc.Base64.stringify(Crypto.enc.Utf8.parse(text));
- }
- function base64Decode(text) {
- return Crypto.enc.Utf8.stringify(Crypto.enc.Base64.parse(text));
- }
- async function proxy(segments, headers) {
- let what = segments[0];
- let url = base64Decode(segments[1]);
- if (what == 'img') {
- let picUrl = JSON.parse(await request(siteUrl, {
- 'types': 'pic',
- 'id': url,
- 'source': 'netease',
- })).url
- var resp = await req(picUrl, {
- buffer: 2,
- headers: {
- Referer: 'https://api.douban.com/',
- 'User-Agent': MOBILE_UA,
- },
- });
- return JSON.stringify({
- code: resp.code,
- buffer: 2,
- content: resp.content,
- headers: resp.headers,
- });
- }
- return JSON.stringify({
- code: 500,
- content: '',
- });
- }
- export function __jsEvalReturn() {
- return {
- init: init,
- home: home,
- homeVod: homeVod,
- category: category,
- detail: detail,
- play: play,
- proxy: proxy,
- search: search,
- };
- }
|