Documentation
¶
Index ¶
- Constants
- func Cover(r Release, size string) string
- func CoverArtArchiveImage(r Release) string
- func FuzzyName(name string) string
- type Artist
- type ArtistBackground
- type ArtistImage
- type ArtistTag
- type Media
- type Music
- func (m *Music) Artist(artist string) *Artist
- func (m *Music) ArtistBackground(artist *Artist) string
- func (m *Music) ArtistDeep(artist Artist, depth int) []Track
- func (m *Music) ArtistImage(artist *Artist) string
- func (m *Music) ArtistLike(artist string) *Artist
- func (m *Music) ArtistPopularTracks(a Artist, limit ...int) []Track
- func (m *Music) ArtistRadio(artist Artist) []Track
- func (m *Music) ArtistReleases(a *Artist) []Release
- func (m *Music) ArtistShuffle(artist Artist, depth int) []Track
- func (m *Music) ArtistSimilar(artist Artist, depth int, breadth int) []Track
- func (m *Music) ArtistSingleTracks(a Artist, limit ...int) []Track
- func (m *Music) ArtistTracks(a Artist) []Track
- func (m *Music) Artists() []Artist
- func (m *Music) ClearStations()
- func (m *Music) Close()
- func (m *Music) CoverSmall(o interface{}) string
- func (m *Music) CreatePlaylist(p *Playlist) error
- func (m *Music) CreateStation(s *Station) error
- func (m *Music) CreateStations()
- func (m *Music) DeleteStation(s *Station) error
- func (m *Music) FindArtist(identifier string) (Artist, error)
- func (m *Music) FindRelease(identifier string) (Release, error)
- func (m *Music) FindStation(identifier string) (Station, error)
- func (m *Music) FindTrack(identifier string) (Track, error)
- func (m *Music) FindTracks(identifiers []string) []Track
- func (m *Music) HasMusic() bool
- func (m *Music) LastModified() time.Time
- func (m *Music) LookupARID(arid string) (Artist, error)
- func (m *Music) LookupArtist(id int) (Artist, error)
- func (m *Music) LookupETag(etag string) (*Track, error)
- func (m *Music) LookupPlaylist(user *auth.User) *Playlist
- func (m *Music) LookupREID(reid string) (Release, error)
- func (m *Music) LookupRID(rid string) (Track, error)
- func (m *Music) LookupRelease(id int) (Release, error)
- func (m *Music) LookupStation(id int) (Station, error)
- func (m *Music) LookupTrack(id int) (Track, error)
- func (m *Music) LookupUUID(uuid string) (Track, error)
- func (m *Music) Open() (err error)
- func (m *Music) Query(query string) ([]Artist, []Release, []Track, []Station)
- func (m *Music) RecentlyAdded() []Release
- func (m *Music) RecentlyReleased() []Release
- func (m *Music) ReleasePopular(release Release) []Track
- func (m *Music) ReleaseSingles(release Release) []Track
- func (m *Music) ReleaseTracks(release Release) []Track
- func (m *Music) ReleasesLike(name string) []Release
- func (m *Music) Search(q string, limit ...int) []Track
- func (m *Music) SearchTracks(title, artist, album string) []Track
- func (m *Music) SimilarArtists(a *Artist, limit ...int) []Artist
- func (m *Music) SimilarReleases(a *Artist, r Release) []Release
- func (m *Music) Stations(user *auth.User) []Station
- func (m *Music) Sync(options SyncOptions)
- func (m *Music) SyncCovers(c client.Getter) error
- func (m *Music) SyncFanArt(c client.Getter) error
- func (m *Music) TrackCount() int64
- func (m *Music) TrackCover(t Track, size string) string
- func (m *Music) TrackImage(t Track) *url.URL
- func (m *Music) TrackLookup(etag string) *Track
- func (m *Music) TrackURL(t *Track) *url.URL
- func (m *Music) UnmatchedTracks() []Track
- func (m *Music) UpdatePlaylist(p *Playlist) error
- func (m *Music) UpdateStation(s *Station) error
- func (m *Music) WantArtistReleases(a Artist) []Release
- func (m *Music) WantList() []Release
- type Playlist
- type Popular
- type Release
- type Similar
- type Station
- type SyncOptions
- type Track
Constants ¶
const ( FieldArtist = "artist" FieldAsin = "asin" FieldDate = "date" FieldFirstDate = "first_date" FieldGenre = "genre" FieldLabel = "label" FieldLength = "length" FieldMedia = "media" FieldMediaTitle = "media_title" FieldPopularity = "popularity" FieldRating = "rating" FieldRelease = "release" FieldReleaseDate = "release_date" FieldSeries = "series" FieldStatus = "status" FieldTag = "tag" FieldTitle = "title" FieldTrack = "track" FieldType = "type" FieldBass = "base" FieldClarinet = "clarinet" FieldDrums = "drums" FieldFlute = "flute" FieldGuitar = "guitar" FieldPiano = "piano" FieldSaxophone = "saxophone" FieldVocals = "vocals" TypePopular = "popular" TypeSingle = "single" TypeCover = "cover" TypeLive = "live" )
const ( TakeoutUser = "takeout" VariousArtists = "Various Artists" )
const ( // rename to Radio* or Station* TypeArtist = "artist" // Songs by single artist TypeGenre = "genre" // Songs from one or more genres TypeSimilar = "similar" // Songs from similar artists TypePeriod = "period" // Songs from one or more time periods TypeSeries = "series" // Songs from one or more series (chart) TypeStream = "stream" // Internet radio stream TypeOther = "other" )
Variables ¶
This section is empty.
Functions ¶
func CoverArtArchiveImage ¶
Get the URL for the release cover from The Cover Art Archive. Use REID front cover.
Types ¶
type Artist ¶
type Artist struct { gorm.Model Name string `gorm:"uniqueIndex:idx_artist_name"` SortName string ARID string `gorm:"uniqueIndex:idx_artist_arid"` Disambiguation string Country string Area string Date time.Time EndDate time.Time Genre string }
Artist info from MusicBrainz.
type ArtistBackground ¶
type ArtistImage ¶
type ArtistTag ¶
type ArtistTag struct { gorm.Model Artist string `gorm:"uniqueIndex:idx_tag"` Tag string `gorm:"uniqueIndex:idx_tag"` Count int }
Artist tags from MusicBrainz.
type Media ¶
type Media struct { gorm.Model REID string `gorm:"uniqueIndex:idx_media"` Name string `gorm:"uniqueIndex:idx_media"` Position int `gorm:"uniqueIndex:idx_media"` Format string TrackCount int }
Release Media from MusicBrainz.
type Music ¶
type Music struct {
// contains filtered or unexported fields
}
func (*Music) ArtistBackground ¶
func (*Music) ArtistImage ¶
func (*Music) ArtistLike ¶
Find an artist by name.
func (*Music) ArtistPopularTracks ¶
func (*Music) ArtistRadio ¶
func (*Music) ArtistReleases ¶
All releases for an artist that have corresponing tracks.
func (*Music) ArtistSimilar ¶
func (*Music) ArtistSingleTracks ¶
func (*Music) ArtistTracks ¶
func (*Music) ClearStations ¶
func (m *Music) ClearStations()
func (*Music) CoverSmall ¶
func (*Music) CreatePlaylist ¶
func (*Music) CreateStation ¶
func (*Music) CreateStations ¶
func (m *Music) CreateStations()
func (*Music) DeleteStation ¶
func (*Music) FindTracks ¶
func (*Music) LastModified ¶
func (*Music) LookupARID ¶
Lookup an artist given the MusicBrainz ARID.
func (*Music) LookupArtist ¶
Lookup an artist given the internal record ID.
func (*Music) LookupETag ¶
Lookup a track given the etag from the S3 bucket object. Etag can be used as a good external identifier (for playlists) since the interal record ID can change.
func (*Music) LookupPlaylist ¶
Lookup user playlist.
func (*Music) LookupREID ¶
Lookup a release given the MusicBrainz REID.
func (*Music) LookupRelease ¶
Lookup a release given the internal record ID.
func (*Music) LookupStation ¶
Obtain user station by id.
func (*Music) LookupTrack ¶
Lookup a track given the internal record ID.
func (*Music) LookupUUID ¶
Lookup a track given the UUID.
func (*Music) Query ¶
Simple sql search for artists, releases, tracks and stations. Use config SearchLimit to change the result count.
func (*Music) RecentlyAdded ¶
Recently added releases are ordered by LastModified which comes from the track object in the S3 bucket. Use config Recent and RecentLimit to tune the result count.
func (*Music) RecentlyReleased ¶
Recently released releases are ordered by the MusicBrainz first release date of the release, newest first. Use config Recent and RecentLimit to tune the result count.
func (*Music) ReleasePopular ¶
func (*Music) ReleaseSingles ¶
func (*Music) ReleaseTracks ¶
Obtain all the tracks for this release, ordered by disc and track number.
func (*Music) ReleasesLike ¶
func (*Music) SearchTracks ¶
func (*Music) SimilarArtists ¶
Similar artists based on similarity rank from Last.fm.
func (*Music) SimilarReleases ¶
Similar releases based on releases from similar artists in the previous and following year.
func (*Music) Sync ¶
func (m *Music) Sync(options SyncOptions)
func (*Music) TrackCount ¶
func (*Music) TrackCover ¶
Track cover based on assigned release.
func (*Music) TrackLookup ¶
Find track using the etag from the S3 bucket.
func (*Music) TrackURL ¶
URL to stream track from the S3 bucket. This will be signed and expired based on config.
func (*Music) UnmatchedTracks ¶
func (*Music) WantArtistReleases ¶
type Popular ¶
type Popular struct { gorm.Model Artist string `gorm:"uniqueIndex:idx_popular"` Title string `gorm:"uniqueIndex:idx_popular"` Rank int }
Popular tracks for an artist from Last.fm.
type Release ¶
type Release struct { gorm.Model Artist string `gorm:"uniqueIndex:idx_release"` Name string `gorm:"uniqueIndex:idx_release;index:idx_release_name" sql:"collate:nocase"` RGID string `gorm:"index:idx_release_rgid"` REID string `gorm:"uniqueIndex:idx_release;index:idx_release_reid"` Disambiguation string Asin string Country string Type string `gorm:"index:idx_release_type"` SecondaryType string Date time.Time `gorm:"index:idx_release_rgdate"` // rg first release ReleaseDate time.Time `gorm:"index:idx_release_redate"` // re release date Status string TrackCount int DiscCount int Artwork bool FrontArtwork bool BackArtwork bool OtherArtwork string GroupArtwork bool Media []Media `gorm:"-"` SingleName string `gorm:"index:idx_release_single_name"` }
Release info from MusicBrainz.
func (Release) CoverSmall ¶
type Similar ¶
type Similar struct { gorm.Model Artist string `gorm:"uniqueIndex:idx_similar"` ARID string `gorm:"uniqueIndex:idx_similar"` Rank int }
Similar artist info from Last.fm
type Station ¶
type SyncOptions ¶
type SyncOptions struct { Since time.Time Tracks bool Releases bool Popular bool Similar bool Index bool Artwork bool Artist string Resolve bool }
func NewSyncOptions ¶
func NewSyncOptions() SyncOptions
func NewSyncPopular ¶
func NewSyncPopular() SyncOptions
func NewSyncSimilar ¶
func NewSyncSimilar() SyncOptions
type Track ¶
type Track struct { gorm.Model UUID string `gorm:"index:idx_track_uuid"` Artist string `spiff:"creator" gorm:"index:idx_track_artist"` Release string `gorm:"index:idx_track_release"` Date string `gorm:"index:idx_track_date"` TrackNum int `spiff:"tracknum"` DiscNum int Title string `spiff:"title" gorm:"index:idx_track_title"` Key string // TODO - unique constraint Size int64 ETag string LastModified time.Time TrackCount int DiscCount int REID string `gorm:"index:idx_track_reid"` RGID string `gorm:"index:idx_track_rgid"` RID string `gorm:"index:idx_track_rid"` // recording id MediaTitle string ReleaseTitle string `spiff:"album"` TrackArtist string // artist with featured artists ReleaseDate time.Time Artwork bool FrontArtwork bool BackArtwork bool OtherArtwork string GroupArtwork bool }
Tracks from S3 bucket object names. Naming is adjusted based on data from MusicBrainz.
func (Track) PreferredArtist ¶
Prefer A feat. B instead of just A.