Refactor localStorage import and update .gitignore for localstorage.json

This commit is contained in:
wont-stream 2025-04-16 22:57:56 -04:00
parent 67dce9ddc0
commit 43667b79f0
4 changed files with 61 additions and 30 deletions

2
.gitignore vendored
View file

@ -35,5 +35,5 @@ report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
tmp tmp
localstorage localstorage.json
downloaded downloaded

View file

@ -1,4 +1,4 @@
import "../localstorage"; import "./localStorage";
import { init, initializeDeviceLogin, finalizeDeviceLogin, credentialsProvider } from "@tidal-music/auth"; import { init, initializeDeviceLogin, finalizeDeviceLogin, credentialsProvider } from "@tidal-music/auth";

View file

@ -0,0 +1,29 @@
const database = Bun.file('localStorage.json');
if (!await database.exists()) {
await Bun.write(database, JSON.stringify({}));
}
let data = {};
data = await database.json() || {};
globalThis.localStorage = {
getItem: (key) => {
return data[key] || null;
},
setItem: (key, value) => {
data[key] = value;
Bun.write(database, JSON.stringify(data));
},
removeItem: (key) => {
delete data[key];
Bun.write(database, JSON.stringify(data));
},
clear: () => {
data = {};
Bun.write(database, JSON.stringify(data));
}
};
export { }

View file

@ -36,7 +36,7 @@ export default class {
return await tracks.json(); return await tracks.json();
} }
async downloadFlac(manifestMimeType:string, manifest: string) { async downloadFlac(manifestMimeType: string, manifest: string) {
const id = Bun.nanoseconds().toString(36); const id = Bun.nanoseconds().toString(36);
if (manifestMimeType === "application/dash+xml") { if (manifestMimeType === "application/dash+xml") {
await Bun.write(`tmp/${id}.mpd`, Buffer.from(manifest, "base64").toString("utf-8")) await Bun.write(`tmp/${id}.mpd`, Buffer.from(manifest, "base64").toString("utf-8"))
@ -113,24 +113,26 @@ export default class {
], ],
} }
console.log(track)
return FlacStreamTagger.fromBuffer(Buffer.from(audioBuffer), { return FlacStreamTagger.fromBuffer(Buffer.from(audioBuffer), {
tagMap: { tagMap: {
title: track.title, title: track.title,
trackNumber: track.trackNumber.toString(), trackNumber: track.trackNumber.toString(),
discNumber: track.volumeNumber.toString(), discNumber: track.volumeNumber.toString(),
bpm: track.bpm.toString(), bpm: (track.bpm || 0).toString(),
date: track.streamStartDate, date: track.streamStartDate,
copyright: track.copyright, copyright: track.copyright,
REPLAYGAIN_TRACK_GAIN: track.replayGain.toString(), REPLAYGAIN_TRACK_GAIN: track.replayGain.toString(),
REPLAYGAIN_TRACK_PEAK: track.peak.toString(), REPLAYGAIN_TRACK_PEAK: track.peak.toString(),
comment: track.url, comment: track.url,
isrc: track.isrc, isrc: track.isrc,
upc: album.upc, upc: album.upc,
artist: track.artists.map((a) => a.name), artist: track.artists.map((a) => a.name),
album: album.title, album: album.title,
albumArtist: album.artists.map((a) => a.name), albumArtist: album.artists.map((a) => a.name),
totalTracks: album.numberOfTracks.toString(), totalTracks: album.numberOfTracks.toString(),
year: album.releaseDate.split("-")[0] || "", year: album.releaseDate.split("-")[0] || "",
}, },
picture: { picture: {
buffer: Buffer.from(await (await fetch(`https://resources.tidal.com/images/${album.cover.replaceAll("-", "/")}/1280x1280.jpg`)).arrayBuffer()), buffer: Buffer.from(await (await fetch(`https://resources.tidal.com/images/${album.cover.replaceAll("-", "/")}/1280x1280.jpg`)).arrayBuffer()),