From 7ec9da91bd73811061d172fdc0cc464c109e7cfa Mon Sep 17 00:00:00 2001 From: src48597962 <48597962@qq.com> Date: Wed, 15 Mar 2023 16:05:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20'SrcJyAliPublic.js'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SrcJyAliPublic.js | 206 +--------------------------------------------- 1 file changed, 3 insertions(+), 203 deletions(-) diff --git a/SrcJyAliPublic.js b/SrcJyAliPublic.js index 95d51fb4..ef14d288 100644 --- a/SrcJyAliPublic.js +++ b/SrcJyAliPublic.js @@ -65,206 +65,6 @@ function SortList(v1, v2) { } } -function aliSharePlayUrl(share_id,file_id,alitoken,share_pwd){ - try{ - function getNowTime() { - const yy = new Date().getFullYear() - const MM = (new Date().getMonth() + 1) < 10 ? '0' + (new Date().getMonth() + 1) : (new Date().getMonth() + 1) - const dd = new Date().getDate() < 10 ? '0' + new Date().getDate() : new Date().getDate() - const HH = new Date().getHours() < 10 ? '0' + new Date().getHours() : new Date().getHours() - const mm = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes() - return yy + '' + dd + '' + HH + '' + MM + '' + mm - } - share_pwd = share_pwd&&share_pwd.length==4?share_pwd:""; - let sharetoken = JSON.parse(request('https://api.aliyundrive.com/v2/share_link/get_share_token', { body: { "share_pwd": share_pwd, "share_id": share_id }, method: 'POST', timeout: 3000 })).share_token; - let headers = { - 'content-type': 'application/json;charset=UTF-8', - "origin": "https://www.aliyundrive.com", - "referer": "https://www.aliyundrive.com/", - "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.41", - "x-canary": "client=web,app=adrive,version=v3.1.0" - }; - let nowtime = Date.now(); - let oldtime = parseInt(getMyVar('userinfoChecktime','0').replace('time','')); - let userinfo; - let aliuserinfo = storage0.getMyVar('aliuserinfo'); - if (aliuserinfo && aliuserinfo.user_id && nowtime < (oldtime+2*60*60*1000)) { - userinfo = aliuserinfo; - } else { - userinfo = JSON.parse(request('https://auth.aliyundrive.com/v2/account/token', { headers: headers, body: { "refresh_token": alitoken, "grant_type": "refresh_token" }, method: 'POST', timeout: 3000 })); - storage0.putMyVar('aliuserinfo', userinfo); - putMyVar('userinfoChecktime', nowtime+'time'); - } - let authorization = 'Bearer ' + userinfo.access_token; - let deviceId = userinfo.device_id; - let userId = userinfo.user_id; - let signature; - let public_key; - let getaliecc = JSON.parse(request('http://124.221.241.174:87/api', { body: 'did=' + deviceId + '&uid=' + userId + '&token=' + md5(getNowTime()), method: 'POST', timeout: 3000 })); - if (getaliecc.code == 200) { - signature = getaliecc.sign; - public_key = getaliecc.key; - } - /* - let a = justTestSign('5dde4e1bdf9e4966b387ba58f4b3fdc3',deviceId,userId); - signature = a.split('##')[0]; - public_key = a.split('##')[1]; - */ - headers['authorization'] = authorization; - headers['x-device-id'] = deviceId; - headers['x-signature'] = signature; - let data = { - "deviceName": "Edge浏览器", - "modelName": "Windows网页版", - "pubKey": public_key, - } - let aliyunUrl = []; - if (signature && public_key) { - let req = JSON.parse(request("https://api.aliyundrive.com/users/v1/users/device/create_session", { headers: headers, body: data, timeout: 3000 })); - if (req.success) { - headers['x-share-token'] = sharetoken; - headers['fileid'] = userId; - data = { - "category": "live_transcoding", - "file_id": file_id, - "get_preview_url": true, - "share_id": share_id, - "template_id": "", - "get_subtitle_info": true - } - let json = JSON.parse(request('https://api.aliyundrive.com/v2/file/get_share_link_video_preview_play_info', { headers: headers, body: data, method: 'POST', timeout: 3000 })); - aliyunUrl = json.video_preview_play_info.live_transcoding_task_list; - aliyunUrl.reverse(); - } - } - return aliyunUrl; - }catch(e){ - log('根据共享链接获取播放地址失败,挂载的阿里分享应有密码>'+e.message); - return ""; - } -} - -function getAliUrl(share_id, file_id, alitoken,share_pwd) { - try { - let urls = []; - let names = []; - let heads = []; - let u = startProxyServer($.toString((aliSharePlayUrl,share_id,file_id,alitoken,share_pwd) => { - function geturl(fileid,line){ - //预加载时会变file_id,所以ts过期更新时还取原来的id - let playUrlList = aliSharePlayUrl(share_id,fileid,alitoken,share_pwd) || []; - let aliurl; - playUrlList.forEach((item) => { - if(item.template_id == line){ - aliurl = JSON.parse(request(item.url, { headers: { 'Referer': 'https://www.aliyundrive.com/' }, onlyHeaders: true, redirect: false, timeout: 3000 })).headers.location[0]; - } - }) - //上面是获取阿里的播放地址 - //log("我在代理" + aliurl); - let home = aliurl.split('media.m3u8')[0]; - let f = fetch(aliurl, { headers: { 'Referer': 'https://www.aliyundrive.com/' }, timeout: 3000}).split("\n"); - let ff = f.map(it => { - if (it.startsWith("media-")) { - return "/proxy?url=" + base64Encode(home+it); - } - return it; - }).join("\n"); - //log('ufid-'+fileid); - writeFile('hiker://files/cache/_fileSelect_'+fileid+'.m3u8',ff); - return ff; - } - let url = base64Decode(MY_PARAMS.url); - if(url.includes(".ts")){ - let fid = url.split('&f=')[1].split('&')[0]; - //log('sfid-'+fid); - let f = fetch('hiker://files/cache/_fileSelect_'+fid+'.m3u8').split("\n"); - f.forEach(it => { - if(it&&it.startsWith('/proxy?url=')){ - let furl = base64Decode(it.replace('/proxy?url=','')); - if(url.substr(url.indexOf('/media-'),url.indexOf('.ts')) == furl.substr(furl.indexOf('/media-'),furl.indexOf('.ts'))){ - url = furl; - } - } - }) - let expires = url.split('x-oss-expires=')[1].split('&')[0]; - const lasttime = parseInt(expires) - Date.now() / 1000; - if(lasttime < 40){ - //log('过期更新') - let line = url.split('/media')[0];//取之前播放的ts段线路 - line = line.substring(line.lastIndexOf('/')+1); - let f = geturl(fid,line).split("\n"); - f.forEach(it => { - if(it&&it.startsWith('/proxy?url=')){ - let furl = base64Decode(it.replace('/proxy?url=','')); - if(url.substr(url.indexOf('/media-'),url.indexOf('.ts')) == furl.substr(furl.indexOf('/media-'),furl.indexOf('.ts'))){ - url = furl; - } - } - }) - - }else{ - //log('未过期') - //log("代理ts:" + url); - } - return JSON.stringify({ - statusCode: 302, - headers: { - "Location": url, - 'Referer': 'https://www.aliyundrive.com/' - } - }); - }else{ - //log('首次更新') - let line = url.split('|')[1]; - let ff = geturl(file_id,line); - return ff; - } - },aliSharePlayUrl,share_id,file_id,alitoken,share_pwd)); - - let playUrlList = aliSharePlayUrl(share_id,file_id,alitoken,share_pwd) || []; - if(playUrlList.length>0){ - playUrlList.forEach((item) => { - urls.push(u + "?url=" + base64Encode(item.url+"|"+item.template_id) + "#.m3u8#pre#"); - names.push(transcoding[item.template_id] ? transcoding[item.template_id] : item.template_height); - heads.push({ 'Referer': 'https://www.aliyundrive.com/' }); - }) - return { - urls: urls, - names: names, - headers: heads - }; - }else{ - log('未获取阿里播放地址,建议重进软件再试一次') - return {}; - } - } catch (e) { - log('获取共享链接播放地址失败>' + e.message); - return {}; - } -} - -function getSubtitle(share_id,sub_file_id,share_pwd){ - try{ - share_pwd = share_pwd&&share_pwd.length==4?share_pwd:""; - let sharetoken = JSON.parse(request('https://api.aliyundrive.com/v2/share_link/get_share_token', { body: { "share_pwd": share_pwd, "share_id": share_id }, method: 'POST', timeout: 3000 })).share_token; - let userinfo = storage0.getMyVar('aliuserinfo'); - let headers = { - 'content-type': 'application/json;charset=UTF-8', - "origin": "https://www.aliyundrive.com", - "referer": "https://www.aliyundrive.com/", - "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.41", - "authorization": userinfo.access_token, - "x-share-token":sharetoken - }; - let data = {"expire_sec":600,"file_id":sub_file_id,"share_id":share_id}; - let downurl = JSON.parse(request("https://api.aliyundrive.com/v2/file/get_share_link_download_url", { headers: headers, body: data, timeout: 3000 })).download_url; - let substr = fetch(downurl, {headers:{"referer": "https://www.aliyundrive.com/"},timeout:3000}); - if(substr){ - writeFile("hiker://files/cache/src/subtitles.srt",substr); - return getPath("hiker://files/cache/src/subtitles.srt"); - } - }catch(e){ - log('获取字幕失败>'+e.message); - } - return ""; -} \ No newline at end of file +evalPrivateJS('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') +evalPrivateJS('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') +evalPrivateJS('rhiz2Ll8wYnkCoIzJ/nTsBjQ/xZMODzvvtPniw+kAOLskUtISUP3bxLpce3nKwueKIRVgYJSl08ETl80Jugl4F61PEurKDXlGxDMMHTL7RX8xTEGMNCtr0CEz49SZNWjtFkzEGIq6pS3iLCILVd6h1sXtv/FScNv6NQQYlEIjW7WckFOqjGXn5HhlATkGQmmbAMBJ0g/ouwqhIYNv1nH7aM4kSMYV2Nhe5VOaRJSBslqZw1YGcjXBGsYZxkC5TAkNDhSCR42A5to1wbVLxZKSf3fgoHgw+KOnjR8TJQCUbpri8ThGahcNNwT6KOSNgCmj51XEqoS0TCPxASkthcPtwtXvqepUwN0J4Yw+u9NTlvflx/heN21C99lmN6yaas6yJsPThBcAo3jemTHDB7XMnQ+kKPA/ewnSU7+1H4yZwcBUB10+Nc8wgA9X4E0J+ewWT3CC4n2ddz0yVaWhB02GD8/sXY/erKYlkMNllUMO/tRR8wA8p1CqY87D1eOQre3Ln/6UYQ4eQBFrTFnWDEVtSlO3lQOONCJtvhec3Y+Tvfsb9GqxlsJkr7qd0w0Ku07zEsFA2KuAWGTf+Pfrj4u9tXR/L5wwU5FKkgzTJ5Xt5udWXRH6tVJO+NGBjGHc1nPkz7vf6CTDT3sHcDcq1T2kfgMQiffp8Qt+YFtqc3edYOeHrS021HMiZSM+UfvIladVikqIaAWJmJsVDes/e0MXCywPa7nW/oo/dLs1OBSlu2JyWeQKZCyz2D8fR4uXW4TJpRBwtFb9LnIqOoWG8fPr6tgGpg8IBoR20jUNlCoZS6SEg8dGj6mK5dbG2gfAZy+h/PjmnT250+WI5IPrhmaUQSAAzsNwaulwF+jY1ChD6pp13JA0X1ZUjZsu3fbzB0C2cUxfLKxsRBbKzPXQTOxjETcs1G+7BaRDQG48LkgDade5GYodD4MC5F7XGTp54meDr1ARH+BoASZpOvo3hzDVZnbzSj2YHC4zTdCKjLQpeUGXBaGUPp9AUAnwCznGYJq3DF7wKfqrMJmss8CkwTaTtPP++2FUsWyM/EWk027B+6vVaL0wraDb6Qpc5JCpKrel3Goapl/9jvECh5oNDPd4OEpyKs08UvVh+YyUedVw1pcn9MHbupj1zhOTRDqWNIInL7rKK5xcanifPdYEsnILzT+0U6c0zAzh0ugsN4rzmlU/ocybsjdXo/1ZBafoGAD3Pdwh4aqi9a/MYmx12UHBRlMSrNqLKK8ah+ofCBx487N8EQo5R4D0KJ2Of3zR0vwcmdrnoyEe2MeFPdeu7jTC06BFMlvwkbDwGcwffhMhoj54COAEw8iFY+Rw+zqwlgcT27eaKeTHbQvLmfvzQ3LlJPgxTTIgjvgUANGA9VMjZDtVY0oaK0UW1aXh9CjeVYCZaNd0FCD0+96xwxnH+yDxhh65NQLpTpHvLJFtc8etfsJ3u8ixOrNa2ETjXptlVNTnmnk5OfqWnVlTlCkvcCto7pqj3zbzvj9YDUSXvUHyR+inqUfPFlPmaByzfIRLg5P2MDZ9uOcaLILVDNpf033eBLd+5QiCHfty5d/O7PQ5y+0Vqzxem8jqwvy7MzejT/giPj0bKTTnaTOGCSt8ptfOCqNOy9l7E11q8eRkSbdCiK36Nd9n4ufvKE/btH/1/GKFdQFLgPAGvCzau2IxpPurB05i+mKRKaK4OiijSTP4R72b/5B4ukIzIEuk6QjDcMKfFh5GQO8rSrWMiwPv8uEEJueAUqqkm5rLJj+qs4QwtDuA43MVLkI6uw31y8VxO6CiNF6Xn+yyZA3KCOsDJqi+cMWg9hUUSUARnuQaYFd8P49UPKJWqcl+sgNE0ZYv4WKW1H5aYnliFclRfuBo8Lq2pV6sy7A6Kx5YfkT98np9idah5WRAJ4/fYUyUDVEr01L')