begin defining a generic MediaProvider interface and model
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
package mediaprovider
|
||||
|
||||
import "image"
|
||||
|
||||
type AlbumFilter struct {
|
||||
MinYear int
|
||||
MaxYear int // 0 == unset/match any
|
||||
Genres []string // len(0) == unset/match any
|
||||
|
||||
ExcludeFavorited bool // mut. exc. with ExcludeUnfavorited
|
||||
ExcludeUnfavorited bool // mut. exc. with ExcludeFavorited
|
||||
}
|
||||
|
||||
type AlbumIterator interface {
|
||||
Next() *Album
|
||||
}
|
||||
|
||||
type TrackIterator interface {
|
||||
Next() *Track
|
||||
}
|
||||
|
||||
type RatingFavoriteParameters struct {
|
||||
AlbumIDs []string
|
||||
ArtistIDs []string
|
||||
TrackIDs []string
|
||||
}
|
||||
|
||||
type Favorites struct {
|
||||
Albums []Album
|
||||
Artists []Artist
|
||||
Tracks []Track
|
||||
}
|
||||
|
||||
type MediaProvider interface {
|
||||
GetAlbum(albumID string) (*AlbumWithTracks, error)
|
||||
|
||||
GetArtist(artistID string) (*Artist, error)
|
||||
|
||||
GetPlaylist(playlistID string) (*PlaylistWithTracks, error)
|
||||
|
||||
GetCoverArt(coverArtID string, size int) (image.Image, error)
|
||||
|
||||
AlbumSortOrders() []string
|
||||
|
||||
IterateAlbums(sortOrder string, searchQuery string, filter AlbumFilter) AlbumIterator
|
||||
|
||||
IterateTracks(searchQuery string) TrackIterator
|
||||
|
||||
GetRandomTracks(genre string, count int) ([]Track, error)
|
||||
|
||||
GetSimilarTracks(artistID string, count int) ([]Track, error)
|
||||
|
||||
GetArtists() ([]Artist, error)
|
||||
|
||||
GetGenres() ([]Genre, error)
|
||||
|
||||
GetFavorites() (Favorites, error)
|
||||
|
||||
GetPlaylists() ([]Playlist, error)
|
||||
|
||||
SetFavorite(params RatingFavoriteParameters) error
|
||||
|
||||
SetRating(params RatingFavoriteParameters) error
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package mediaprovider
|
||||
|
||||
type Album struct {
|
||||
ID string
|
||||
CoverArtID string
|
||||
Name string
|
||||
Duration int
|
||||
ArtistIDs []string
|
||||
ArtistNames []string
|
||||
Year int
|
||||
Genres []string
|
||||
TrackCount int
|
||||
Favorite bool
|
||||
}
|
||||
|
||||
type AlbumWithTracks struct {
|
||||
Album
|
||||
Tracks []Track
|
||||
}
|
||||
|
||||
type Artist struct {
|
||||
ID string
|
||||
Name string
|
||||
Albums []Album
|
||||
}
|
||||
|
||||
type Genre struct {
|
||||
Name string
|
||||
AlbumCount int
|
||||
TrackCount int
|
||||
}
|
||||
|
||||
type Track struct {
|
||||
ID string
|
||||
CoverArtID string
|
||||
ParentID string
|
||||
Name string
|
||||
Duration int
|
||||
Genre string
|
||||
ArtistIDs []string
|
||||
ArtistNames []string
|
||||
Rating int
|
||||
Favorite bool
|
||||
Size int64
|
||||
PlayCount int64
|
||||
FilePath string
|
||||
}
|
||||
|
||||
type Playlist struct {
|
||||
ID string
|
||||
CoverArtID string
|
||||
Name string
|
||||
Description string
|
||||
Public bool
|
||||
Owner string
|
||||
}
|
||||
|
||||
type PlaylistWithTracks struct {
|
||||
Playlist
|
||||
Tracks []Track
|
||||
}
|
||||
Reference in New Issue
Block a user