Add Bandcamp discovery via public API (no scraping) - browse new releases by genre tag
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user