Add YouTube Music playlist import support
- Add ytmusicapi dependency for fetching public YouTube Music playlists - Create youtube_music service with playlist fetching and track search - Add /api/youtube-music/import and /api/youtube-music/search endpoints - Add importYouTubePlaylist and searchYouTubeMusic API client functions - Update Playlists page with YouTube Music import button and URL input modal
This commit is contained in:
@@ -156,4 +156,35 @@ export const getSavedRecommendations = () =>
|
||||
export const toggleSaveRecommendation = (id: string) =>
|
||||
api.post<{ saved: boolean }>(`/recommendations/${id}/toggle-save`).then((r) => r.data)
|
||||
|
||||
// YouTube Music Import
|
||||
export interface YouTubeTrackResult {
|
||||
title: string
|
||||
artist: string
|
||||
album: string | null
|
||||
youtube_id: string | null
|
||||
image_url: string | null
|
||||
}
|
||||
|
||||
export const importYouTubePlaylist = (url: string) =>
|
||||
api.post<PlaylistDetailResponse>('/youtube-music/import', { url }).then((r) => r.data)
|
||||
|
||||
export const searchYouTubeMusic = (query: string) =>
|
||||
api.post<YouTubeTrackResult[]>('/youtube-music/search', { query }).then((r) => r.data)
|
||||
|
||||
// Billing
|
||||
export interface BillingStatusResponse {
|
||||
is_pro: boolean
|
||||
subscription_status: string | null
|
||||
current_period_end: number | null
|
||||
}
|
||||
|
||||
export const createCheckout = () =>
|
||||
api.post<{ url: string }>('/billing/create-checkout').then((r) => r.data)
|
||||
|
||||
export const createBillingPortal = () =>
|
||||
api.post<{ url: string }>('/billing/portal').then((r) => r.data)
|
||||
|
||||
export const getBillingStatus = () =>
|
||||
api.get<BillingStatusResponse>('/billing/status').then((r) => r.data)
|
||||
|
||||
export default api
|
||||
|
||||
Reference in New Issue
Block a user