diff --git a/.gitignore b/.gitignore index 1b3c88f..8be1755 100644 --- a/.gitignore +++ b/.gitignore @@ -37,4 +37,8 @@ report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json tmp localstorage.json localStorage.sqlite -downloaded \ No newline at end of file +downloaded +duplicates.name.json +duplicates.isrc.json +.gitignore +unavailable.json diff --git a/index.ts b/index.ts index 4a9c686..32095dc 100644 --- a/index.ts +++ b/index.ts @@ -146,19 +146,18 @@ for (const track of tracks.items) { } } */ -/* Remove all tracks that are unavailable -for (const track of tracks.items) { - if (track.item.streamReady) { - continue - } +/* Remove all tracks that are unavailable*/ +let unavailableTracks = tracks.items.filter(track => !track.item.streamReady); +/*for (const track of unavailableTracks) { await utils.fetch("/users/199235629/favorites/tracks/" + track.item.id, { method: "DELETE", }) console.log("Removed from favorites", track.item.id) -} -*/ -/* +}*/ + +Bun.write("unavailable.json", JSON.stringify(unavailableTracks, null, 2)) + function findDuplicateTracksByName(tracks: typeof tracks.items) { const seen = new Map(); @@ -214,29 +213,28 @@ function findDuplicateTracksByISRC(tracks: typeof tracks.items) { })); } -*/ -/* + // Usage: const duplicatesByISRC = findDuplicateTracksByISRC(tracks.items); + +let duplicatesISRCText = {}; + duplicatesByISRC.forEach(({ name, isrc, count, duplicates }) => { - console.log(`Name: ${name} ISRC: "${isrc}" - Count: ${count}`); - duplicates.forEach((trackObj) => { - //console.log(` - Track ID: ${trackObj.item.id}, Created: ${trackObj.created}`); - }); + duplicatesISRCText[isrc] = { name, count, duplicates }; }); -*/ -/* -// Usage: + +await Bun.write("duplicates.isrc.json", JSON.stringify(duplicatesISRCText, null, 2)); + + const duplicates = findDuplicateTracksByName(tracks.items); -console.log("Duplicate tracks:"); +let duplicatesNamesText = {}; + duplicates.forEach(({ normalizedTitle, count, duplicates }) => { - console.log(`Title: "${normalizedTitle}" - Count: ${count}`); - duplicates.forEach((trackObj) => { - //console.log(` - Track ID: ${trackObj.item.id}, Created: ${trackObj.created}`); - }); + duplicatesNamesText[normalizedTitle] = { count, duplicates }; }); -*/ + +await Bun.write("duplicates.name.json", JSON.stringify(duplicatesNamesText, null, 2)); diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index ce54e17..ce1fe52 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -41,7 +41,13 @@ export default class { }) if (!response.ok) { - throw new Error(`Failed to fetch ${url}: ${response.status} ${response.statusText}`) + //throw new Error(`Failed to fetch ${url}: ${response.status} ${response.statusText}\n${await response.text()}`); + return { + status: response.status, + statusText: response.statusText, + url: parsedUrl.toString(), + error: await response.text(), + } } return await response.json() as Object;