Documentation ¶
Index ¶
- func CleanExternalText(text string) string
- type Album
- type AlbumInfo
- type Albums
- type Artist
- type ArtistInfo
- type ArtistRef
- type Artists
- type Bookmark
- type Bookmarks
- type Directory
- type Error
- type Genre
- type GenreRef
- type Genres
- type Index
- type Indexes
- type InternetRadioStation
- type InternetRadioStations
- type JukeboxPlaylist
- type JukeboxStatus
- type Licence
- type Lyrics
- type MusicFolder
- type MusicFolders
- type NewestPodcasts
- type OpenSubsonicExtension
- type OpenSubsonicExtensions
- type PlayQueue
- type Playlist
- type Playlists
- type PodcastChannel
- type PodcastEpisode
- type Podcasts
- type RandomTracks
- type ReplayGain
- type Response
- type ScanStatus
- type SearchResultThree
- type SearchResultTwo
- type SimilarSongs
- type SimilarSongsTwo
- type Starred
- type StarredTwo
- type SubsonicResponse
- type TopSongs
- type TrackChild
- type TracksByGenre
- type TranscodeMeta
- type User
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CleanExternalText ¶
Types ¶
type Album ¶
type Album struct { ID *specid.ID `xml:"id,attr,omitempty" json:"id"` Created time.Time `xml:"created,attr,omitempty" json:"created,omitempty"` // legacy or single tag mode ArtistID *specid.ID `xml:"artistId,attr,omitempty" json:"artistId,omitempty"` Artist string `xml:"artist,attr" json:"artist"` Artists []*ArtistRef `xml:"artists" json:"artists"` DisplayArtist string `xml:"diplayArtist,attr" json:"displayArtist"` // folder stuff Title string `xml:"title,attr,omitempty" json:"title"` Album string `xml:"album,attr,omitempty" json:"album"` ParentID *specid.ID `xml:"parent,attr,omitempty" json:"parent,omitempty"` IsDir bool `xml:"isDir,attr,omitempty" json:"isDir,omitempty"` CoverID *specid.ID `xml:"coverArt,attr,omitempty" json:"coverArt,omitempty"` Name string `xml:"name,attr" json:"name"` TrackCount int `xml:"songCount,attr" json:"songCount"` Duration int `xml:"duration,attr" json:"duration"` PlayCount int `xml:"playCount,attr" json:"playCount"` Genre string `xml:"genre,attr,omitempty" json:"genre,omitempty"` Genres []*GenreRef `xml:"genres,omitempty" json:"genres,omitempty"` Year int `xml:"year,attr,omitempty" json:"year,omitempty"` Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"` // star / rating Starred *time.Time `xml:"starred,attr,omitempty" json:"starred,omitempty"` UserRating int `xml:"userRating,attr,omitempty" json:"userRating,omitempty"` AverageRating string `xml:"averageRating,attr,omitempty" json:"averageRating,omitempty"` }
https://opensubsonic.netlify.app/docs/responses/albumid3/
func NewAlbumByFolder ¶
type Artist ¶
type Artist struct { ID *specid.ID `xml:"id,attr,omitempty" json:"id"` Name string `xml:"name,attr" json:"name"` CoverID *specid.ID `xml:"coverArt,attr,omitempty" json:"coverArt,omitempty"` AlbumCount int `xml:"albumCount,attr" json:"albumCount"` Albums []*Album `xml:"album,omitempty" json:"album,omitempty"` // star / rating Starred *time.Time `xml:"starred,attr,omitempty" json:"starred,omitempty"` UserRating int `xml:"userRating,attr,omitempty" json:"userRating,omitempty"` AverageRating string `xml:"averageRating,attr,omitempty" json:"averageRating,omitempty"` }
func NewArtistByFolder ¶
func NewArtistByTags ¶
type ArtistInfo ¶
type ArtistInfo struct { Biography string `xml:"biography" json:"biography"` MusicBrainzID string `xml:"musicBrainzId" json:"musicBrainzId"` LastFMURL string `xml:"lastFmUrl" json:"lastFmUrl"` SmallImageURL string `xml:"smallImageUrl" json:"smallImageUrl"` MediumImageURL string `xml:"mediumImageUrl" json:"mediumImageUrl"` LargeImageURL string `xml:"largeImageUrl" json:"largeImageUrl"` ArtistImageURL string `xml:"artistImageUrl" json:"artistImageUrl"` // not sure where this comes from but other clients seem to expect it Similar []*Artist `xml:"similarArtist,omitempty" json:"similarArtist,omitempty"` }
type Bookmark ¶
type Bookmark struct { Entry *TrackChild `xml:"entry,omitempty" json:"entry,omitempty"` Username string `xml:"username,attr" json:"username"` Position int `xml:"position,attr" json:"position"` Comment string `xml:"comment,attr" json:"comment"` Created time.Time `xml:"created,attr" json:"created"` Changed time.Time `xml:"changed,attr" json:"changed"` }
type Directory ¶
type Directory struct { ID *specid.ID `xml:"id,attr,omitempty" json:"id"` ParentID *specid.ID `xml:"parent,attr,omitempty" json:"parent,omitempty"` Name string `xml:"name,attr,omitempty" json:"name"` Starred *time.Time `xml:"starred,attr,omitempty" json:"starred,omitempty"` UserRating int `xml:"userRating,attr,omitempty" json:"userRating,omitempty"` AverageRating string `xml:"averageRating,attr,omitempty" json:"averageRating,omitempty"` Children []*TrackChild `xml:"child,omitempty" json:"child,omitempty"` }
func NewDirectoryByFolder ¶
func NewDirectoryByFolder(f *db.Album, children []*TrackChild) *Directory
type Error ¶
type Error struct { Code int `xml:"code,attr" json:"code"` Message string `xml:"message,attr" json:"message"` }
Error represents a typed error
0 a generic error
10 required parameter is missing 20 incompatible subsonic rest protocol version. client must upgrade 30 incompatible subsonic rest protocol version. server must upgrade 40 wrong username or password 41 token authentication not supported for ldap users 50 user is not authorized for the given operation 60 the trial period for the subsonic server is over 70 the requested data was not found
type Genre ¶
type InternetRadioStation ¶
type InternetRadioStation struct { ID *specid.ID `xml:"id,attr" json:"id"` Name string `xml:"name,attr" json:"name"` StreamURL string `xml:"streamUrl,attr" json:"streamUrl"` HomepageURL string `xml:"homepageUrl,attr" json:"homepageUrl"` }
func NewInternetRadioStation ¶
func NewInternetRadioStation(irs *db.InternetRadioStation) *InternetRadioStation
type InternetRadioStations ¶
type InternetRadioStations struct {
List []*InternetRadioStation `xml:"internetRadioStation" json:"internetRadioStation,omitempty"`
}
type JukeboxPlaylist ¶
type JukeboxPlaylist struct { List []*TrackChild `xml:"entry,omitempty" json:"entry,omitempty"` *JukeboxStatus }
type JukeboxStatus ¶
type Licence ¶
type Licence struct {
Valid bool `xml:"valid,attr,omitempty" json:"valid,omitempty"`
}
type MusicFolder ¶
type MusicFolders ¶
type MusicFolders struct {
List []*MusicFolder `xml:"musicFolder" json:"musicFolder"`
}
type NewestPodcasts ¶
type NewestPodcasts struct {
List []*PodcastEpisode `xml:"episode" json:"episode"`
}
type OpenSubsonicExtension ¶
type OpenSubsonicExtensions ¶
type OpenSubsonicExtensions []OpenSubsonicExtension
type PlayQueue ¶
type PlayQueue struct { Current *specid.ID `xml:"current,attr,omitempty" json:"current,omitempty"` Position int `xml:"position,attr,omitempty" json:"position,omitempty"` Username string `xml:"username,attr" json:"username"` Changed time.Time `xml:"changed,attr" json:"changed"` ChangedBy string `xml:"changedBy,attr" json:"changedBy"` List []*TrackChild `xml:"entry,omitempty" json:"entry,omitempty"` }
type Playlist ¶
type Playlist struct { ID string `xml:"id,attr" json:"id"` Name string `xml:"name,attr" json:"name"` Comment string `xml:"comment,attr" json:"comment"` Owner string `xml:"owner,attr" json:"owner"` SongCount int `xml:"songCount,attr" json:"songCount"` Created time.Time `xml:"created,attr" json:"created"` Changed time.Time `xml:"changed,attr" json:"changed"` Duration int `xml:"duration,attr" json:"duration"` Public bool `xml:"public,attr" json:"public,omitempty"` List []*TrackChild `xml:"entry,omitempty" json:"entry,omitempty"` }
type PodcastChannel ¶
type PodcastChannel struct { ID *specid.ID `xml:"id,attr" json:"id"` URL string `xml:"url,attr" json:"url"` Title string `xml:"title,attr" json:"title"` Description string `xml:"description,attr" json:"description"` CoverArt *specid.ID `xml:"coverArt,attr" json:"coverArt,omitempty"` OriginalImageURL string `xml:"originalImageUrl,attr" json:"originalImageUrl,omitempty"` Status string `xml:"status,attr" json:"status"` Episode []*PodcastEpisode `xml:"episode" json:"episode,omitempty"` }
func NewPodcastChannel ¶
func NewPodcastChannel(p *db.Podcast) *PodcastChannel
type PodcastEpisode ¶
type PodcastEpisode struct { ID *specid.ID `xml:"id,attr" json:"id"` StreamID *specid.ID `xml:"streamId,attr" json:"streamId"` ChannelID *specid.ID `xml:"channelId,attr" json:"channelId"` Title string `xml:"title,attr" json:"title"` Description string `xml:"description,attr" json:"description"` PublishDate time.Time `xml:"publishDate,attr" json:"publishDate"` Status string `xml:"status,attr" json:"status"` Parent string `xml:"parent,attr" json:"parent"` IsDir bool `xml:"isDir,attr" json:"isDir"` Year int `xml:"year,attr" json:"year"` Genre string `xml:"genre,attr" json:"genre"` CoverArt *specid.ID `xml:"coverArt,attr" json:"coverArt"` Size int `xml:"size,attr" json:"size"` ContentType string `xml:"contentType,attr" json:"contentType"` Suffix string `xml:"suffix,attr" json:"suffix"` Duration int `xml:"duration,attr" json:"duration"` BitRate int `xml:"bitRate,attr" json:"bitrate"` Path string `xml:"path,attr" json:"path"` }
func NewPodcastEpisode ¶
func NewPodcastEpisode(pe *db.PodcastEpisode) *PodcastEpisode
type Podcasts ¶
type Podcasts struct {
List []*PodcastChannel `xml:"channel" json:"channel"`
}
type RandomTracks ¶
type RandomTracks struct {
List []*TrackChild `xml:"song" json:"song"`
}
type ReplayGain ¶
type Response ¶
type Response struct { Status string `xml:"status,attr" json:"status"` Version string `xml:"version,attr" json:"version"` XMLNS string `xml:"xmlns,attr" json:"-"` // https://opensubsonic.netlify.app/docs/responses/subsonic-response/ Type string `xml:"type,attr" json:"type"` ServerVersion string `xml:"serverVersion,attr" json:"serverVersion"` OpenSubsonic bool `xml:"openSubsonic,attr" json:"openSubsonic"` OpenSubsonicExtensions *OpenSubsonicExtensions `xml:"openSubsonicExtensions" json:"openSubsonicExtensions,omitempty"` Error *Error `xml:"error" json:"error,omitempty"` Albums *Albums `xml:"albumList" json:"albumList,omitempty"` AlbumsTwo *Albums `xml:"albumList2" json:"albumList2,omitempty"` Album *Album `xml:"album" json:"album,omitempty"` Track *TrackChild `xml:"song" json:"song,omitempty"` Indexes *Indexes `xml:"indexes" json:"indexes,omitempty"` Artists *Artists `xml:"artists" json:"artists,omitempty"` Artist *Artist `xml:"artist" json:"artist,omitempty"` Directory *Directory `xml:"directory" json:"directory,omitempty"` RandomTracks *RandomTracks `xml:"randomSongs" json:"randomSongs,omitempty"` TracksByGenre *TracksByGenre `xml:"songsByGenre" json:"songsByGenre,omitempty"` MusicFolders *MusicFolders `xml:"musicFolders" json:"musicFolders,omitempty"` ScanStatus *ScanStatus `xml:"scanStatus" json:"scanStatus,omitempty"` Licence *Licence `xml:"license" json:"license,omitempty"` SearchResultTwo *SearchResultTwo `xml:"searchResult2" json:"searchResult2,omitempty"` SearchResultThree *SearchResultThree `xml:"searchResult3" json:"searchResult3,omitempty"` User *User `xml:"user" json:"user,omitempty"` Playlists *Playlists `xml:"playlists" json:"playlists,omitempty"` Playlist *Playlist `xml:"playlist" json:"playlist,omitempty"` ArtistInfo *ArtistInfo `xml:"artistInfo" json:"artistInfo,omitempty"` ArtistInfoTwo *ArtistInfo `xml:"artistInfo2" json:"artistInfo2,omitempty"` AlbumInfo *AlbumInfo `xml:"albumInfo" json:"albumInfo,omitempty"` Genres *Genres `xml:"genres" json:"genres,omitempty"` PlayQueue *PlayQueue `xml:"playQueue" json:"playQueue,omitempty"` JukeboxStatus *JukeboxStatus `xml:"jukeboxStatus" json:"jukeboxStatus,omitempty"` JukeboxPlaylist *JukeboxPlaylist `xml:"jukeboxPlaylist" json:"jukeboxPlaylist,omitempty"` Podcasts *Podcasts `xml:"podcasts" json:"podcasts,omitempty"` NewestPodcasts *NewestPodcasts `xml:"newestPodcasts" json:"newestPodcasts,omitempty"` Bookmarks *Bookmarks `xml:"bookmarks" json:"bookmarks,omitempty"` Starred *Starred `xml:"starred" json:"starred,omitempty"` StarredTwo *StarredTwo `xml:"starred2" json:"starred2,omitempty"` TopSongs *TopSongs `xml:"topSongs" json:"topSongs,omitempty"` SimilarSongs *SimilarSongs `xml:"similarSongs" json:"similarSongs,omitempty"` SimilarSongsTwo *SimilarSongsTwo `xml:"similarSongs2" json:"similarSongs2,omitempty"` InternetRadioStations *InternetRadioStations `xml:"internetRadioStations" json:"internetRadioStations,omitempty"` Lyrics *Lyrics `xml:"lyrics" json:"lyrics,omitempty"` }
func NewResponse ¶
func NewResponse() *Response
type ScanStatus ¶
type SearchResultThree ¶
type SearchResultThree struct { Artists []*Artist `xml:"artist,omitempty" json:"artist,omitempty"` Albums []*Album `xml:"album,omitempty" json:"album,omitempty"` Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"` }
type SearchResultTwo ¶
type SearchResultTwo struct { Artists []*Directory `xml:"artist,omitempty" json:"artist,omitempty"` Albums []*TrackChild `xml:"album,omitempty" json:"album,omitempty"` Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"` }
type SimilarSongs ¶
type SimilarSongs struct {
Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"`
}
type SimilarSongsTwo ¶
type SimilarSongsTwo struct {
Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"`
}
type Starred ¶
type Starred struct { Artists []*Directory `xml:"artist,omitempty" json:"artist,omitempty"` Albums []*TrackChild `xml:"album,omitempty" json:"album,omitempty"` Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"` }
type StarredTwo ¶
type StarredTwo struct { Artists []*Artist `xml:"artist,omitempty" json:"artist,omitempty"` Albums []*Album `xml:"album,omitempty" json:"album,omitempty"` Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"` }
type SubsonicResponse ¶
type SubsonicResponse struct {
Response Response `xml:"subsonic-response" json:"subsonic-response"`
}
type TopSongs ¶
type TopSongs struct {
Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"`
}
type TrackChild ¶
type TrackChild struct { ID *specid.ID `xml:"id,attr,omitempty" json:"id,omitempty"` Album string `xml:"album,attr,omitempty" json:"album,omitempty"` AlbumID *specid.ID `xml:"albumId,attr,omitempty" json:"albumId,omitempty"` // legacy or single tag mode Artist string `xml:"artist,attr" json:"artist"` ArtistID *specid.ID `xml:"artistId,attr,omitempty" json:"artistId,omitempty"` Artists []*ArtistRef `xml:"artists" json:"artists"` DisplayArtist string `xml:"diplayArtist,attr" json:"displayArtist"` AlbumArtists []*ArtistRef `xml:"albumArtists" json:"albumArtists"` AlbumDisplayArtist string `xml:"diplayAlbumArtist,attr" json:"displayAlbumArtist"` Bitrate int `xml:"bitRate,attr,omitempty" json:"bitRate,omitempty"` ContentType string `xml:"contentType,attr,omitempty" json:"contentType,omitempty"` CoverID *specid.ID `xml:"coverArt,attr,omitempty" json:"coverArt,omitempty"` CreatedAt time.Time `xml:"created,attr,omitempty" json:"created,omitempty"` Duration int `xml:"duration,attr,omitempty" json:"duration,omitempty"` Genre string `xml:"genre,attr,omitempty" json:"genre,omitempty"` Genres []*GenreRef `xml:"genres,omitempty" json:"genres,omitempty"` IsDir bool `xml:"isDir,attr" json:"isDir"` IsVideo bool `xml:"isVideo,attr" json:"isVideo"` ParentID *specid.ID `xml:"parent,attr,omitempty" json:"parent,omitempty"` Path string `xml:"path,attr,omitempty" json:"path,omitempty"` Size int `xml:"size,attr,omitempty" json:"size,omitempty"` Suffix string `xml:"suffix,attr,omitempty" json:"suffix,omitempty"` Title string `xml:"title,attr" json:"title"` TrackNumber int `xml:"track,attr,omitempty" json:"track,omitempty"` DiscNumber int `xml:"discNumber,attr,omitempty" json:"discNumber,omitempty"` Type string `xml:"type,attr,omitempty" json:"type,omitempty"` Year int `xml:"year,attr,omitempty" json:"year,omitempty"` MusicBrainzID string `xml:"musicBrainzId,attr" json:"musicBrainzId"` // star / rating Starred *time.Time `xml:"starred,attr,omitempty" json:"starred,omitempty"` UserRating int `xml:"userRating,attr,omitempty" json:"userRating,omitempty"` AverageRating string `xml:"averageRating,attr,omitempty" json:"averageRating,omitempty"` ReplayGain *ReplayGain `xml:"replayGain" json:"replayGain"` TranscodeMeta }
https://opensubsonic.netlify.app/docs/responses/child/
func NewTCAlbumByFolder ¶
func NewTCAlbumByFolder(f *db.Album) *TrackChild
func NewTCPodcastEpisode ¶
func NewTCPodcastEpisode(pe *db.PodcastEpisode) *TrackChild
func NewTCTrackByFolder ¶
func NewTCTrackByFolder(t *db.Track, parent *db.Album) *TrackChild
func NewTrackByTags ¶
func NewTrackByTags(t *db.Track, album *db.Album) *TrackChild
type TracksByGenre ¶
type TracksByGenre struct {
List []*TrackChild `xml:"song" json:"song"`
}
type TranscodeMeta ¶
type User ¶
type User struct { Username string `xml:"username,attr" json:"username"` ScrobblingEnabled bool `xml:"scrobblingEnabled,attr" json:"scrobblingEnabled"` AdminRole bool `xml:"adminRole,attr" json:"adminRole"` SettingsRole bool `xml:"settingsRole,attr" json:"settingsRole"` DownloadRole bool `xml:"downloadRole,attr" json:"downloadRole"` UploadRole bool `xml:"uploadRole,attr" json:"uploadRole"` PlaylistRole bool `xml:"playlistRole,attr" json:"playlistRole"` CoverArtRole bool `xml:"coverArtRole,attr" json:"coverArtRole"` CommentRole bool `xml:"commentRole,attr" json:"commentRole"` PodcastRole bool `xml:"podcastRole,attr" json:"podcastRole"` StreamRole bool `xml:"streamRole,attr" json:"streamRole"` JukeboxRole bool `xml:"jukeboxRole,attr" json:"jukeboxRole"` VideoConversionRole bool `xml:"videoConversionRole,attr" json:"videoConversionRole"` Folder []int `xml:"folder,attr" json:"folder"` }
Click to show internal directories.
Click to hide internal directories.