Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | 7x 3x 2x 2x 1x 1x 1x | interface SetListArtistInfo {
mbid: string;
tmid: number;
name: string;
sortName: string;
disambiguation: string;
url: string;
}
export interface SetLists {
setlist: {
artist: SetListArtistInfo[];
venue?: {
city: {
coords: {
lat: number;
lng: number;
};
country: {
code: string;
name: string;
};
id: string;
name: string;
state: string;
stateCode: string;
};
url: string;
id: string;
name: string;
};
tour?: {
name: string;
};
sets?: {
set: {
name: string;
encore: number;
song: { name: string; info?: string }[];
}[];
url: string;
};
info: string;
url: string;
id: string;
versionId: string;
eventDate: string;
lastUpdated: string;
}[];
total: number;
page: number;
itemsPerPage: number;
}
export async function getSetLists(
artistName?: string,
apiKey?: string
): Promise<SetLists | null> {
if (!artistName || !apiKey) return null;
const res = await fetch(
`https://api.setlist.fm/rest/1.0/search/setlists?artistName=${artistName}&p=1&sort=relevance`,
{
method: "GET",
headers: {
accept: "application/json",
"x-api-key": apiKey,
},
}
);
if (res.ok) {
const data = (await res.json()) as SetLists;
return data;
}
return null;
}
|