Add Bandcamp discovery via public API (no scraping) - browse new releases by genre tag

This commit is contained in:
root
2026-03-31 09:58:28 -05:00
parent be30a47bbb
commit 152f217675
7 changed files with 295 additions and 301 deletions

View File

@@ -256,30 +256,20 @@ export const getBillingStatus = () =>
api.get<BillingStatusResponse>('/billing/status').then((r) => r.data)
// Bandcamp
export interface BandcampResult {
export interface BandcampRelease {
title: string
artist: string
art_url: string | null
bandcamp_url: string
genre: string
item_type: string
}
export interface BandcampEmbed {
embed_url: string
title: string
artist: string
art_url: string | null
}
export const discoverBandcamp = (tags: string, sort: string = 'new', page: number = 1) =>
api.get<BandcampRelease[]>('/bandcamp/discover', { params: { tags, sort, page } }).then((r) => r.data)
export async function searchBandcamp(query: string, type: string = 't'): Promise<BandcampResult[]> {
const { data } = await api.get('/bandcamp/search', { params: { q: query, type } })
return data
}
export async function getBandcampEmbed(url: string): Promise<BandcampEmbed> {
const { data } = await api.get('/bandcamp/embed', { params: { url } })
return data
}
export const getBandcampTags = () =>
api.get<string[]>('/bandcamp/tags').then((r) => r.data)
// Playlist Fix
export interface OutlierTrack {