Implement originalReleaseDate in OpenSubsonic responses. (#2733)

See https://github.com/opensubsonic/open-subsonic-api/pull/80
This commit is contained in:
Deluan Quintão
2023-12-22 21:03:55 -05:00
committed by GitHub
parent 3f349b1b58
commit 15e1394fa3
8 changed files with 58 additions and 10 deletions
@@ -31,6 +31,11 @@
"title": "disc 2"
}
],
"originalReleaseDate": {
"year": 1994,
"month": 2,
"day": 4
},
"song": [
{
"id": "1",
@@ -4,6 +4,7 @@
<genres name="progressive"></genres>
<discTitles disc="1" title="disc 1"></discTitles>
<discTitles disc="2" title="disc 2"></discTitles>
<originalReleaseDate year="1994" month="2" day="4"></originalReleaseDate>
<song id="1" isDir="true" title="title" album="album" artist="artist" track="1" year="1985" genre="Rock" coverArt="1" size="8421341" contentType="audio/flac" suffix="flac" starred="2016-03-02T20:30:00Z" transcodedContentType="audio/mpeg" transcodedSuffix="mp3" duration="146" bitRate="320" isVideo="false" bpm="127" comment="a comment" sortName="sorted song" mediaType="song" musicBrainzId="4321">
<genres name="rock"></genres>
<genres name="progressive"></genres>
@@ -12,6 +12,7 @@
"musicBrainzId": "",
"isCompilation": false,
"sortName": "",
"discTitles": []
"discTitles": [],
"originalReleaseDate": {}
}
}
@@ -1,3 +1,5 @@
<subsonic-response xmlns="http://subsonic.org/restapi" status="ok" version="1.8.0" type="navidrome" serverVersion="v0.0.0" openSubsonic="true">
<album id="" name="" userRating="0" musicBrainzId="" isCompilation="false" sortName=""></album>
<album id="" name="" userRating="0" musicBrainzId="" isCompilation="false" sortName="">
<originalReleaseDate></originalReleaseDate>
</album>
</subsonic-response>
+14 -7
View File
@@ -218,13 +218,14 @@ type AlbumID3 struct {
Genre string `xml:"genre,attr,omitempty" json:"genre,omitempty"`
// OpenSubsonic extensions
Played *time.Time `xml:"played,attr,omitempty" json:"played,omitempty"`
UserRating int32 `xml:"userRating,attr" json:"userRating"`
Genres ItemGenres `xml:"genres" json:"genres"`
MusicBrainzId string `xml:"musicBrainzId,attr" json:"musicBrainzId"`
IsCompilation bool `xml:"isCompilation,attr" json:"isCompilation"`
SortName string `xml:"sortName,attr" json:"sortName"`
DiscTitles DiscTitles `xml:"discTitles" json:"discTitles"`
Played *time.Time `xml:"played,attr,omitempty" json:"played,omitempty"`
UserRating int32 `xml:"userRating,attr" json:"userRating"`
Genres ItemGenres `xml:"genres" json:"genres"`
MusicBrainzId string `xml:"musicBrainzId,attr" json:"musicBrainzId"`
IsCompilation bool `xml:"isCompilation,attr" json:"isCompilation"`
SortName string `xml:"sortName,attr" json:"sortName"`
DiscTitles DiscTitles `xml:"discTitles" json:"discTitles"`
OriginalReleaseDate ItemDate `xml:"originalReleaseDate" json:"originalReleaseDate"`
}
type ArtistWithAlbumsID3 struct {
@@ -492,3 +493,9 @@ func marshalJSONArray[T any](v []T) ([]byte, error) {
a := v
return json.Marshal(a)
}
type ItemDate struct {
Year int `xml:"year,attr,omitempty" json:"year,omitempty"`
Month int `xml:"month,attr,omitempty" json:"month,omitempty"`
Day int `xml:"day,attr,omitempty" json:"day,omitempty"`
}
+2 -1
View File
@@ -176,7 +176,8 @@ var _ = Describe("Responses", func() {
Id: "1", Name: "album", Artist: "artist", Genre: "rock",
Genres: []ItemGenre{{Name: "rock"}, {Name: "progressive"}},
MusicBrainzId: "1234", IsCompilation: true, SortName: "sorted album",
DiscTitles: DiscTitles{{Disc: 1, Title: "disc 1"}, {Disc: 2, Title: "disc 2"}},
DiscTitles: DiscTitles{{Disc: 1, Title: "disc 1"}, {Disc: 2, Title: "disc 2"}},
OriginalReleaseDate: ItemDate{Year: 1994, Month: 2, Day: 4},
}
t := time.Date(2016, 03, 2, 20, 30, 0, 0, time.UTC)
songs := []Child{{