switched to wrangler 2.0, fixed NaN check on track id, updated compat date
This commit is contained in:
parent
0dcc61196f
commit
58884fb608
|
@ -1,10 +1,8 @@
|
||||||
/target
|
|
||||||
/dist
|
|
||||||
**/*.rs.bk
|
**/*.rs.bk
|
||||||
Cargo.lock
|
|
||||||
bin/
|
|
||||||
pkg/
|
|
||||||
wasm-pack.log
|
|
||||||
worker/
|
|
||||||
node_modules/
|
node_modules/
|
||||||
.cargo-ok
|
|
||||||
|
wasm/pkg/
|
||||||
|
wasm/target
|
||||||
|
wasm/Cargo.lock
|
||||||
|
wasm/wasm-pack.log
|
||||||
|
wasm/.cargo-ok
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"trailingComma": "es5",
|
|
||||||
"tabWidth": 4,
|
|
||||||
"semi": false,
|
|
||||||
"singleQuote": true
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
{
|
|
||||||
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
|
||||||
// for the documentation about the tasks.json format
|
|
||||||
"version": "2.0.0",
|
|
||||||
"tasks": [
|
|
||||||
{
|
|
||||||
"label": "build",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "wrangler build",
|
|
||||||
"problemMatcher": [],
|
|
||||||
"group": {
|
|
||||||
"kind": "build",
|
|
||||||
"isDefault": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "dev",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "wrangler dev",
|
|
||||||
"problemMatcher": [],
|
|
||||||
"group": {
|
|
||||||
"kind": "test",
|
|
||||||
"isDefault": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "publish",
|
|
||||||
"type": "shell",
|
|
||||||
"command": "wrangler publish"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,8 @@
|
||||||
|
import html from './index.html'
|
||||||
|
import { Cipher, legacy_stream_url } from './wasm/pkg'
|
||||||
|
|
||||||
import { Router } from 'itty-router'
|
import { Router } from 'itty-router'
|
||||||
const ID3Writer = require('browser-id3-writer');
|
import ID3Writer from 'browser-id3-writer'
|
||||||
|
|
||||||
const router = Router()
|
const router = Router()
|
||||||
|
|
||||||
|
@ -55,8 +58,7 @@ async function gw_api_call(method, params) {
|
||||||
checkForm = json.results.checkForm
|
checkForm = json.results.checkForm
|
||||||
await KV.put('checkForm', checkForm)
|
await KV.put('checkForm', checkForm)
|
||||||
|
|
||||||
sid = response.headers.get('set-cookie').split(',').map(v => v.trimStart())[0]
|
sid = json.results.SESSION_ID
|
||||||
sid = sid.match(/^sid=(fr[\da-f]+)/)[1]
|
|
||||||
await KV.put('sid', sid)
|
await KV.put('sid', sid)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,7 +74,7 @@ router.get('/:type/:id', async request => {
|
||||||
}
|
}
|
||||||
|
|
||||||
id = parseInt(id)
|
id = parseInt(id)
|
||||||
if (id === NaN || (type !== 'track' && id < 0)) {
|
if (isNaN(id) || (type !== 'track' && id < 0)) {
|
||||||
return new Response("Invalid ID", { status: 400, headers: { 'content-type': 'text/plain' } })
|
return new Response("Invalid ID", { status: 400, headers: { 'content-type': 'text/plain' } })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,8 +204,6 @@ async function track(id, format, tagging, range_header) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const wasm = await import('./pkg')
|
|
||||||
|
|
||||||
let track_url
|
let track_url
|
||||||
let use_legacy_url = !['320', 'flac'].includes(format)
|
let use_legacy_url = !['320', 'flac'].includes(format)
|
||||||
if (!use_legacy_url) { // server-side stream url
|
if (!use_legacy_url) { // server-side stream url
|
||||||
|
@ -249,7 +249,7 @@ async function track(id, format, tagging, range_header) {
|
||||||
return new Response("Couldn't get stream URL", { status: 403, headers: { 'content-type': 'text/plain' } })
|
return new Response("Couldn't get stream URL", { status: 403, headers: { 'content-type': 'text/plain' } })
|
||||||
}
|
}
|
||||||
} else { // legacy stream url
|
} else { // legacy stream url
|
||||||
track_url = await legacy_track_url(json, format, wasm.legacy_stream_url)
|
track_url = legacy_track_url(json, format)
|
||||||
}
|
}
|
||||||
|
|
||||||
let title = json.SNG_TITLE
|
let title = json.SNG_TITLE
|
||||||
|
@ -268,7 +268,7 @@ async function track(id, format, tagging, range_header) {
|
||||||
let id3_buffer
|
let id3_buffer
|
||||||
let id3_len = 0
|
let id3_len = 0
|
||||||
if (tagging) {
|
if (tagging) {
|
||||||
let id3 = new ID3Writer(Buffer.alloc(0));
|
let id3 = new ID3Writer(new Uint8Array());
|
||||||
id3.padding = 0
|
id3.padding = 0
|
||||||
|
|
||||||
id3.setFrame('TIT2', title)
|
id3.setFrame('TIT2', title)
|
||||||
|
@ -426,7 +426,7 @@ async function track(id, format, tagging, range_header) {
|
||||||
id = json.FALLBACK.SNG_ID
|
id = json.FALLBACK.SNG_ID
|
||||||
}
|
}
|
||||||
|
|
||||||
const cipher = new wasm.Cipher(String(id))
|
const cipher = new Cipher(String(id))
|
||||||
|
|
||||||
pipeDecryptedStream(writer, track.body, trk_range_end, cipher, trk_range_start, bytes_remove_start, bytes_remove_end)
|
pipeDecryptedStream(writer, track.body, trk_range_end, cipher, trk_range_start, bytes_remove_start, bytes_remove_end)
|
||||||
} else {
|
} else {
|
||||||
|
@ -466,7 +466,7 @@ async function pipeDecryptedStream(writer, body, length, cipher, byte_count, byt
|
||||||
writer.close()
|
writer.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
function legacy_track_url(json, format, url_func) {
|
function legacy_track_url(json, format) {
|
||||||
// needed if track has fallback, like https://www.deezer.com/track/11835714
|
// needed if track has fallback, like https://www.deezer.com/track/11835714
|
||||||
if (json.FALLBACK) {
|
if (json.FALLBACK) {
|
||||||
json = json.FALLBACK
|
json = json.FALLBACK
|
||||||
|
@ -478,7 +478,7 @@ function legacy_track_url(json, format, url_func) {
|
||||||
|
|
||||||
format = formats[format].num
|
format = formats[format].num
|
||||||
|
|
||||||
return url_func(md5_origin, format, id, media_version)
|
return legacy_stream_url(md5_origin, format, id, media_version)
|
||||||
}
|
}
|
||||||
|
|
||||||
async function m3u8(type, id, format, tagging, host) {
|
async function m3u8(type, id, format, tagging, host) {
|
||||||
|
@ -495,7 +495,7 @@ async function m3u8(type, id, format, tagging, host) {
|
||||||
if (track.id < 0) { // user-uploaded track
|
if (track.id < 0) { // user-uploaded track
|
||||||
format_tmp = 'misc'
|
format_tmp = 'misc'
|
||||||
}
|
}
|
||||||
let result = `https://${host}/track/${track.id}?f=${format_tmp}&t=${+ tagging}`
|
const result = `https://${host}/track/${track.id}?f=${format_tmp}&t=${+ tagging}`
|
||||||
list += `#EXTINF:${track.duration},${track.title}\n${result}\n`
|
list += `#EXTINF:${track.duration},${track.title}\n${result}\n`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -503,7 +503,7 @@ async function m3u8(type, id, format, tagging, host) {
|
||||||
}
|
}
|
||||||
|
|
||||||
router.get('/', () => {
|
router.get('/', () => {
|
||||||
return new Response(require('./index.html'), { status: 200, headers: { 'content-type': 'text/html' } })
|
return new Response(html, { status: 200, headers: { 'content-type': 'text/html' } })
|
||||||
})
|
})
|
||||||
|
|
||||||
router.all("*", () => new Response("not found", { status: 404, headers: { 'content-type': 'text/plain' } }))
|
router.all("*", () => new Response("not found", { status: 404, headers: { 'content-type': 'text/plain' } }))
|
13
package.json
13
package.json
|
@ -4,19 +4,18 @@
|
||||||
"description": "worker for getting deezer track urls",
|
"description": "worker for getting deezer track urls",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1",
|
"dev": "wrangler dev",
|
||||||
"format": "prettier --write '**/*.{js,css,json,md}'"
|
"dev_local": "wrangler dev --local",
|
||||||
|
"publish": "wrangler publish",
|
||||||
|
"wasm_build": "node wasm_build.mjs"
|
||||||
},
|
},
|
||||||
"author": "uh_wot <uhwot@protonmail.com>",
|
"author": "uh_wot <uhwot@protonmail.com>",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@wasm-tool/wasm-pack-plugin": "^1.6.0",
|
"wrangler": "^2.0.3"
|
||||||
"html-loader": "^1.3.2",
|
|
||||||
"prettier": "^2.6.2"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"browser-id3-writer": "^4.4.0",
|
"browser-id3-writer": "^4.4.0",
|
||||||
"itty-router": "^2.6.1",
|
"itty-router": "^2.6.1"
|
||||||
"serverless-cloudflare-workers": "^1.2.0"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
import * as fs from 'fs'
|
||||||
|
import { execSync } from 'child_process'
|
||||||
|
import { chdir } from 'process'
|
||||||
|
|
||||||
|
chdir('wasm')
|
||||||
|
|
||||||
|
execSync('wasm-pack build -t nodejs')
|
||||||
|
|
||||||
|
const pkg_name = JSON.parse(fs.readFileSync('pkg/package.json', 'utf8'))['name']
|
||||||
|
|
||||||
|
const js_path = `pkg/${pkg_name}.js`
|
||||||
|
let loader_js = fs.readFileSync(js_path, 'utf8')
|
||||||
|
|
||||||
|
loader_js = `import wasmModule from './${pkg_name}_bg.wasm'\n\n` + loader_js
|
||||||
|
loader_js = loader_js.replace('const { TextDecoder, TextEncoder } = require(String.raw`util`);\n', '')
|
||||||
|
loader_js = loader_js.replace(`const path = require('path').join(__dirname, '${pkg_name}_bg.wasm');\n`, '')
|
||||||
|
loader_js = loader_js.replace("const bytes = require('fs').readFileSync(path);\n\n", '')
|
||||||
|
loader_js = loader_js.replace('const wasmModule = new WebAssembly.Module(bytes);\n', '')
|
||||||
|
|
||||||
|
fs.writeFileSync(js_path, loader_js)
|
|
@ -1,21 +0,0 @@
|
||||||
const path = require("path");
|
|
||||||
const WasmPackPlugin = require("@wasm-tool/wasm-pack-plugin");
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
entry: {
|
|
||||||
index: "./index.js"
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
new WasmPackPlugin({
|
|
||||||
crateDirectory: __dirname,
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
module: {
|
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
test: /\.html$/i,
|
|
||||||
loader: 'html-loader'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,12 +1,14 @@
|
||||||
name = "dz"
|
name = "dz"
|
||||||
type = "webpack"
|
|
||||||
webpack_config = "webpack.config.js"
|
|
||||||
account_id = "03479b0523a52b140e0dabac40cb0fc8"
|
|
||||||
workers_dev = true
|
workers_dev = true
|
||||||
kv_namespaces = [
|
kv_namespaces = [
|
||||||
{ binding = "KV", id = "974c0967a84e415daa054bbbcc7f80c6", preview_id = "cfcc6491f3484cbca664913836635113" }
|
{ binding = "KV", id = "974c0967a84e415daa054bbbcc7f80c6", preview_id = "cfcc6491f3484cbca664913836635113" }
|
||||||
]
|
]
|
||||||
compatibility_date = "2022-04-30"
|
main = "./main.js"
|
||||||
|
compatibility_date = "2022-05-12"
|
||||||
|
|
||||||
|
[build]
|
||||||
|
command = "yarn run wasm_build"
|
||||||
|
watch_dir = "./wasm/src"
|
||||||
|
|
||||||
# [secrets]
|
# [secrets]
|
||||||
# ARL
|
# ARL
|
Loading…
Reference in New Issue