From e41d3d37a3ec4168c4049c83fb0b570305b8cd81 Mon Sep 17 00:00:00 2001 From: uh wot Date: Mon, 7 Jun 2021 12:32:12 +0200 Subject: [PATCH] changed tagging param parsing --- dist/worker.js | 2 +- index.js | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/dist/worker.js b/dist/worker.js index a34be71..2258d0f 100644 --- a/dist/worker.js +++ b/dist/worker.js @@ -1,4 +1,4 @@ -!function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=0)}([function(t,e,r){(function(t){const e=r(6),n=r(7),o=r(8);addEventListener("fetch",t=>{t.respondWith(async function(t){const r=new e;r.get("/track/.*",()=>u("track",t)),r.get("/album/.*",()=>u("album",t)),r.get("/playlist/.*",()=>u("playlist",t));return await r.route(t)}(t.request))});const s=[106,111,54,97,101,121,54,104,97,105,100,50,84,101,105,104];const a={64:"10",128:"1",320:"3",flac:"9",misc:"0"};async function u(e,r){if(access_token=await KV.get("access_token"),null===access_token){const t=await fetch("https://connect.deezer.com/oauth/access_token.php?grant_type=client_credentials&client_id=447462&client_secret=a83bf7f38ad2f137e444727cfc3775cf&output=json"),e=await t.json();if(void 0!==e.error)return new Response("Couldn't get access token from Deezer",{status:500,headers:{"content-type":"text/plain"}});access_token=e.access_token,await KV.put("access_token",access_token,{expirationTtl:Number(e.expires)})}const n=new URL(r.url),i=n.pathname.split("/")[2];if(""===i)return new Response("ID needs to be specified",{status:400,headers:{"content-type":"text/plain"}});if(format=n.searchParams.get("f"),null===format)format="320";else if(format=format.toLowerCase(),void 0===a[format]){if(index=Object.values(a).indexOf(format),-1===index)return new Response("Invalid format",{status:400,headers:{"content-type":"text/plain"}});format=Object.keys(a)[index]}switch(tagging="true"===n.searchParams.get("t")&&("128"===format||"320"===format||"misc"===format),e){case"track":return await async function(e,r,n,i){const s=await fetch(`https://api.deezer.com/track/${e}?access_token=${n}`),a=await s.json();if(void 0!==a.error)return new Response(JSON.stringify(a.error),{status:403,headers:{"content-type":"application/json"}});if(result=await h(a,r),"object"==typeof result)return result;if(i){const e=await fetch(result);if(200!==e.status)return new Response("Couldn't get track stream",{status:403,headers:{"content-type":"text/plain"}});const r=new o(t.alloc(0));if(r.padding=0,r.setFrame("TIT2",a.title).setFrame("TALB",a.album.title).setFrame("TPE2",a.artist.name),void 0!==a.contributors){contr_list=[];for(const t of a.contributors)contr_list.push(t.name);r.setFrame("TPE1",contr_list)}if(void 0!==a.track_position&&r.setFrame("TRCK",a.track_position),void 0!==a.disk_number&&r.setFrame("TPOS",a.disk_number),""!==a.isrc&&r.setFrame("TSRC",a.isrc),void 0!==a.bpm&&r.setFrame("TBPM",a.bpm),void 0!==a.release_date){const t=a.release_date.split("-");r.setFrame("TYER",t[0]),r.setFrame("TDAT",t[2]+t[1])}if(""!==a.md5_image){const t=`https://cdns-images.dzcdn.net/images/cover/${a.md5_image}/1000x1000-000000-80-0-0.jpg`,e=await fetch(t),n=await e.arrayBuffer();r.setFrame("APIC",{type:3,data:n,description:"cover"})}r.addTag();let{readable:n,writable:i}=new TransformStream;const s=i.getWriter();return s.write(r.arrayBuffer),s.releaseLock(),e.body.pipeTo(i),new Response(n,{status:200,headers:{"content-type":"audio/mpeg"}})}return new Response(null,{status:302,headers:{location:result}})}(i,format,access_token,tagging);case"album":case"playlist":return await async function(t,e,r,n,i){const o=await fetch(`https://api.deezer.com/${t}/${e}?access_token=${n}&limit=-1`),s=await o.json();if(void 0!==s.error)return new Response(JSON.stringify(s.error),{status:403,headers:{"content-type":"application/json"}});var a="#EXTM3U\n";for(const t of s.tracks.data){let e;if(i)e=`https://dz.uhwot.workers.dev/track/${t.id}?f=${r}&t=true`;else if(e=await h(t,r),"object"==typeof e)return e;a+=`#EXTINF:${t.duration},${t.title}\n${e}\n`}return new Response(a,{status:200,headers:{"content-type":"audio/mpegurl"}})}(e,i,format,access_token,tagging)}}async function h(t,e){const r=t.id,o=t.md5_origin,u=t.media_version;return r<0&&(e="misc"),"0"===t["filesize_"+e]?new Response("Format unavailable",{status:403,headers:{"content-type":"text/plain"}}):(e=a[e],await async function(t,e,r,o){const a=new n.ModeOfOperation.ecb(s);for(result=[t,e,r,o].join("¤"),buf=new ArrayBuffer(result.length),result_hash=new Uint8Array(buf),i=0;i{t.respondWith(async function(t){const r=new e;r.get("/track/.*",()=>u("track",t)),r.get("/album/.*",()=>u("album",t)),r.get("/playlist/.*",()=>u("playlist",t));return await r.route(t)}(t.request))});const s=[106,111,54,97,101,121,54,104,97,105,100,50,84,101,105,104];const a={64:"10",128:"1",320:"3",flac:"9",misc:"0"};async function u(e,r){if(access_token=await KV.get("access_token"),null===access_token){const t=await fetch("https://connect.deezer.com/oauth/access_token.php?grant_type=client_credentials&client_id=447462&client_secret=a83bf7f38ad2f137e444727cfc3775cf&output=json"),e=await t.json();if(void 0!==e.error)return new Response("Couldn't get access token from Deezer",{status:500,headers:{"content-type":"text/plain"}});access_token=e.access_token,await KV.put("access_token",access_token,{expirationTtl:Number(e.expires)})}const n=new URL(r.url),i=n.pathname.split("/")[2];if(""===i)return new Response("ID needs to be specified",{status:400,headers:{"content-type":"text/plain"}});if(format=n.searchParams.get("f"),null===format)format="320";else if(format=format.toLowerCase(),void 0===a[format]){if(index=Object.values(a).indexOf(format),-1===index)return new Response("Invalid format",{status:400,headers:{"content-type":"text/plain"}});format=Object.keys(a)[index]}var s=n.searchParams.get("t");switch(s=("true"===s||"1"===s)&&"flac"!==format,e){case"track":return await async function(e,r,n,i){const s=await fetch(`https://api.deezer.com/track/${e}?access_token=${n}`),a=await s.json();if(void 0!==a.error)return new Response(JSON.stringify(a.error),{status:403,headers:{"content-type":"application/json"}});if(result=await h(a,r),"object"==typeof result)return result;if(i){const e=await fetch(result);if(200!==e.status)return new Response("Couldn't get track stream",{status:403,headers:{"content-type":"text/plain"}});const r=new o(t.alloc(0));if(r.padding=0,r.setFrame("TIT2",a.title).setFrame("TALB",a.album.title).setFrame("TPE2",a.artist.name),void 0!==a.contributors){contr_list=[];for(const t of a.contributors)contr_list.push(t.name);r.setFrame("TPE1",contr_list)}if(void 0!==a.track_position&&r.setFrame("TRCK",a.track_position),void 0!==a.disk_number&&r.setFrame("TPOS",a.disk_number),""!==a.isrc&&r.setFrame("TSRC",a.isrc),void 0!==a.bpm&&r.setFrame("TBPM",a.bpm),void 0!==a.release_date){const t=a.release_date.split("-");r.setFrame("TYER",t[0]),r.setFrame("TDAT",t[2]+t[1])}if(""!==a.md5_image){const t=`https://cdns-images.dzcdn.net/images/cover/${a.md5_image}/1000x1000-000000-80-0-0.jpg`,e=await fetch(t),n=await e.arrayBuffer();r.setFrame("APIC",{type:3,data:n,description:"cover"})}r.addTag();let{readable:n,writable:i}=new TransformStream;const s=i.getWriter();return s.write(r.arrayBuffer),s.releaseLock(),e.body.pipeTo(i),new Response(n,{status:200,headers:{"content-type":"audio/mpeg"}})}return new Response(null,{status:302,headers:{location:result}})}(i,format,access_token,s);case"album":case"playlist":return await async function(t,e,r,n,i){const o=await fetch(`https://api.deezer.com/${t}/${e}?access_token=${n}&limit=-1`),s=await o.json();if(void 0!==s.error)return new Response(JSON.stringify(s.error),{status:403,headers:{"content-type":"application/json"}});var a="#EXTM3U\n";for(const t of s.tracks.data){let e;if(i)e=`https://dz.uhwot.workers.dev/track/${t.id}?f=${r}&t=1`;else if(e=await h(t,r),"object"==typeof e)return e;a+=`#EXTINF:${t.duration},${t.title}\n${e}\n`}return new Response(a,{status:200,headers:{"content-type":"audio/mpegurl"}})}(e,i,format,access_token,s)}}async function h(t,e){const r=t.id,o=t.md5_origin,u=t.media_version;return r<0&&(e="misc"),"0"===t["filesize_"+e]?new Response("Format unavailable",{status:403,headers:{"content-type":"text/plain"}}):(e=a[e],await async function(t,e,r,o){const a=new n.ModeOfOperation.ecb(s);for(result=[t,e,r,o].join("¤"),buf=new ArrayBuffer(result.length),result_hash=new Uint8Array(buf),i=0;i