higher image qualities for unreleased + fallbacks

This commit is contained in:
edideaur 2026-03-07 10:12:59 +00:00
parent 016d3d76b8
commit 0b17fb1b4b

View file

@ -47,7 +47,7 @@ async function loadArtistsPopularity() {
async function loadArtistsData() { async function loadArtistsData() {
try { try {
const response = await fetch('https://sheets.artistgrid.cx/artists.ndjson'); const response = await fetch('https://assets.artistgrid.cx/artists.ndjson');
if (!response.ok) throw new Error('Network response was not ok'); if (!response.ok) throw new Error('Network response was not ok');
const text = await response.text(); const text = await response.text();
artistsData = text artistsData = text
@ -89,15 +89,49 @@ function getSheetId(url) {
return match ? match[1] : null; return match ? match[1] : null;
} }
async function fetchTrackerData(sheetId) { function transformImageUrl(url) {
try { if (!url) return url;
const response = await fetch(`https://tracker.israeli.ovh/get/${sheetId}`); return url.replace('https://s3.sad.ovh/trackerapi/', 'https://r2.artistgrid.cx/');
if (!response.ok) return null; }
return await response.json();
} catch (e) { function transformErasImages(eras) {
console.error('Failed to fetch tracker data', e); if (!eras) return eras;
return null; for (const eraName in eras) {
const era = eras[eraName];
if (era.image) {
era.image = transformImageUrl(era.image);
}
} }
return eras;
}
async function fetchTrackerData(sheetId) {
const endpoints = [
'https://tracker.israeli.ovh/get/',
'https://tracker.thug.surf/get/',
'https://trackerapi-2.artistgrid.cx/get/',
];
let lastError = null;
for (const baseUrl of endpoints) {
try {
const response = await fetch(`${baseUrl}${sheetId}`);
if (!response.ok) {
lastError = new Error(`HTTP ${response.status}`);
continue;
}
const data = await response.json();
if (data.eras) {
transformErasImages(data.eras);
}
return data;
} catch (e) {
lastError = e;
console.warn(`Failed to fetch from ${baseUrl}, trying next...`);
}
}
console.error('Failed to fetch tracker data from all endpoints', lastError);
return null;
} }
function parseDuration(durationStr) { function parseDuration(durationStr) {