123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- import './dayjs.min.js'
- import './uri.min.js';
- import './crypto-js.js'
- import _ from './underscore-esm-min.js'
- let key = 'kunyu77';
- let url = 'http://api.kunyu77.com';
- let agent = 'Dalvik/2.1.0 (Linux; U; Android 6.0; ZTE BA520 Build/MRA58K)';
- let deviceId = '';
- let timeOffset = 0;
- var charStr = 'abacdefghjklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789';
- function randIndex(min, max, i) {
- let index = Math.floor(Math.random() * (max - min + 1) + min),
- numStart = charStr.length - 10;
- if (i == 0 && index >= numStart) {
- index = randIndex(min, max, i);
- }
- return index;
- }
- function randomStr(len) {
- let min = 0, max = charStr.length - 1, _str = '';
- len = len || 15;
- for (var i = 0, index; i < len; i++) {
- index = randIndex(min, max, i);
- _str += charStr[index];
- }
- return _str;
- }
- function request(reqUrl) {
- let sj = dayjs().unix() - timeOffset;
- let uri = new Uri(reqUrl);
- uri.addQueryParam()
- uri.addQueryParam('pcode', '010110004')
- uri.addQueryParam('version', '2.0.4')
- uri.addQueryParam('devid', deviceId)
- uri.addQueryParam('package', 'com.sevenVideo.app.android')
- uri.addQueryParam('sys', 'android')
- uri.addQueryParam('sysver', '6.0')
- uri.addQueryParam('brand', 'ZTE')
- uri.addQueryParam('model', 'ZTE_BA520')
- uri.addQueryParam('sj', sj);
- let keys = [];
- for (var i = 0; i < uri.queryPairs.length; i++) {
- keys.push(uri.queryPairs[i][0]);
- }
- keys = _.sortBy(keys, function (name) { return name })
- let tkSrc = uri.path();
- for (let k of keys) {
- tkSrc += uri.getQueryParamValue(k);
- }
- tkSrc += sj;
- tkSrc += 'XSpeUFjJ';
- console.log(tkSrc);
- let tk = CryptoJS.MD5(tkSrc).toString().toLowerCase();
- console.log(tk);
- let header = {
- 'user-agent': agent,
- 't': sj,
- 'TK': tk,
- };
- let res = req(uri.toString(), {
- headers: header
- });
- let serverTime = res.headers.Date;
- let content = res.content;
- let serverTimeS = dayjs(serverTime).unix();
- timeOffset = dayjs().unix() - serverTimeS;
- // console.log(content);
- return content;
- }
- function init(ext) {
- var device = local.get(key, 'device');
- if (device.length == 0) {
- device = randomStr(32).toLowerCase();
- local.set(key, 'device', device);
- }
- deviceId = device;
- console.log(dayjs().unix());
- }
- function home(filter) {
- let data = JSON.parse(request(url + '/api.php/provide/filter')).data;
- let classes = [];
- for (const key in data) {
- classes.push({
- 'type_id': key,
- 'type_name': data[key][0].cat
- });
- }
- console.log(classes);
- return JSON.stringify({
- 'class': classes
- });
- }
- function homeVod(params) {
- let data = JSON.parse(request(url + '/api.php/provide/homeBlock?type_id=0')).data;
- let blocks = data.blocks;
- let videos = [];
- for (const block of blocks) {
- let name = block.block_name;
- if (name.indexOf('热播') >= 0)
- continue;
- let contents = block.contents;
- for (const content of contents) {
- videos.push({
- 'vod_id': content.id,
- 'vod_name': content.title,
- 'vod_pic': content.videoCover,
- 'vod_remarks': content.msg,
- })
- }
- }
- return JSON.stringify({
- 'list': videos
- });
- }
- function category(tid, pg, filter, extend) {
- let data = JSON.parse(request(url + '/api.php/provide/searchFilter?type_id=' + tid + '&pagenum=' + pg + '&pagesize=24')).data;
- let videos = []
- for (const vod of data.result) {
- videos.push({
- 'vod_id': vod.id,
- 'vod_name': vod.title,
- 'vod_pic': vod.videoCover,
- 'vod_remarks': vod.msg,
- });
- }
- return JSON.stringify({
- 'page': parseInt(data.page),
- 'pagecount': data.pagesize,
- 'limit': 24,
- 'total': data.total,
- 'list': videos,
- });
- }
- function detail(id) {
- let data = JSON.parse(request(url + '/api.php/provide/videoDetail?ids=' + id)).data;
- let vod = {
- 'vod_id': data.id,
- 'vod_name': data.videoName,
- 'vod_pic': data.videoCover,
- 'type_name': data.subCategory,
- 'vod_year': data.year,
- 'vod_area': data.area,
- 'vod_remarks': data.msg,
- 'vod_actor': data.actor,
- 'vod_director': data.director,
- 'vod_content': data.brief.trim(),
- }
- let episodes = JSON.parse(request(url + '/api.php/provide/videoPlaylist?ids=' + id)).data.episodes;
- let playlist = {};
- for (const episode of episodes) {
- let playurls = episode.playurls;
- for (const playurl of playurls) {
- let from = playurl.playfrom;
- if (!playlist.hasOwnProperty(from)) {
- playlist[from] = []
- }
- playlist[from].push(playurl.title.trim() + '$' + playurl.playurl);
- }
- }
- vod.vod_play_from = _.keys(playlist).join('$$$');
- let urls = _.values(playlist)
- let vod_play_url = []
- for (const urlist of urls) {
- vod_play_url.push(urlist.join('#'))
- }
- vod.vod_play_url = vod_play_url.join('$$$')
- return JSON.stringify({
- 'list': [vod]
- });
- }
- function play(flag, id, flags) {
- let data = JSON.parse(request(url + '/api.php/provide/parserUrl?url=' + id)).data;
- let playHeader = data.playHeader;
- let jxUrl = data.url;
- let jxData = JSON.parse(request(jxUrl));
- if (flags.indexOf(flag) >= 0) {
- return JSON.stringify({
- 'parse': 1,
- 'jx': 1,
- 'url': id
- });
- } else {
- return JSON.stringify({
- 'parse': 0,
- 'url': id
- });
- }
- }
- function search(wd, quick) {
- let data = JSON.parse(request(url + '/api.php/provide/searchVideo?searchName=' + wd)).data;
- let videos = [];
- for (const vod of data) {
- videos.push({
- 'vod_id': vod.id,
- 'vod_name': vod.videoName,
- 'vod_pic': vod.videoCover,
- 'vod_remarks': vod.msg,
- })
- }
- return JSON.stringify({
- 'list': videos
- });
- }
- __JS_SPIDER__ = {
- init: init,
- home: home,
- homeVod: homeVod,
- category: category,
- detail: detail,
- play: play,
- search: search
- }
|