fix(subsonic): don't return concatenated genres strings for song/trackchilds
This commit is contained in:
8
db/db.go
8
db/db.go
@@ -264,14 +264,6 @@ func (t *Track) RelPath() string {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Track) GenreStrings() []string {
|
|
||||||
strs := make([]string, 0, len(t.Genres))
|
|
||||||
for _, genre := range t.Genres {
|
|
||||||
strs = append(strs, genre.Name)
|
|
||||||
}
|
|
||||||
return strs
|
|
||||||
}
|
|
||||||
|
|
||||||
type User struct {
|
type User struct {
|
||||||
ID int `gorm:"primary_key"`
|
ID int `gorm:"primary_key"`
|
||||||
CreatedAt time.Time
|
CreatedAt time.Time
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package spec
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"go.senan.xyz/gonic/db"
|
"go.senan.xyz/gonic/db"
|
||||||
)
|
)
|
||||||
@@ -69,7 +68,6 @@ func NewTCTrackByFolder(t *db.Track, parent *db.Album) *TrackChild {
|
|||||||
),
|
),
|
||||||
ParentID: parent.SID(),
|
ParentID: parent.SID(),
|
||||||
Duration: t.Length,
|
Duration: t.Length,
|
||||||
Genre: strings.Join(t.GenreStrings(), ", "),
|
|
||||||
Year: parent.TagYear,
|
Year: parent.TagYear,
|
||||||
Bitrate: t.Bitrate,
|
Bitrate: t.Bitrate,
|
||||||
IsDir: false,
|
IsDir: false,
|
||||||
@@ -92,6 +90,12 @@ func NewTCTrackByFolder(t *db.Track, parent *db.Album) *TrackChild {
|
|||||||
if t.TrackRating != nil {
|
if t.TrackRating != nil {
|
||||||
trCh.UserRating = t.TrackRating.Rating
|
trCh.UserRating = t.TrackRating.Rating
|
||||||
}
|
}
|
||||||
|
if len(t.Genres) > 0 {
|
||||||
|
trCh.Genre = t.Genres[0].Name
|
||||||
|
}
|
||||||
|
for _, g := range t.Genres {
|
||||||
|
trCh.Genres = append(trCh.Genres, &GenreRef{Name: g.Name})
|
||||||
|
}
|
||||||
return trCh
|
return trCh
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package spec
|
|||||||
import (
|
import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"go.senan.xyz/gonic/db"
|
"go.senan.xyz/gonic/db"
|
||||||
)
|
)
|
||||||
@@ -68,7 +67,6 @@ func NewTrackByTags(t *db.Track, album *db.Album) *TrackChild {
|
|||||||
),
|
),
|
||||||
Album: album.TagTitle,
|
Album: album.TagTitle,
|
||||||
AlbumID: album.SID(),
|
AlbumID: album.SID(),
|
||||||
Genre: strings.Join(t.GenreStrings(), ", "),
|
|
||||||
Duration: t.Length,
|
Duration: t.Length,
|
||||||
Bitrate: t.Bitrate,
|
Bitrate: t.Bitrate,
|
||||||
Type: "music",
|
Type: "music",
|
||||||
@@ -90,6 +88,12 @@ func NewTrackByTags(t *db.Track, album *db.Album) *TrackChild {
|
|||||||
})
|
})
|
||||||
ret.ArtistID = album.Artists[0].SID()
|
ret.ArtistID = album.Artists[0].SID()
|
||||||
}
|
}
|
||||||
|
if len(t.Genres) > 0 {
|
||||||
|
ret.Genre = t.Genres[0].Name
|
||||||
|
}
|
||||||
|
for _, g := range t.Genres {
|
||||||
|
ret.Genres = append(ret.Genres, &GenreRef{Name: g.Name})
|
||||||
|
}
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,27 +45,27 @@ type Response struct {
|
|||||||
MusicFolders *MusicFolders `xml:"musicFolders" json:"musicFolders,omitempty"`
|
MusicFolders *MusicFolders `xml:"musicFolders" json:"musicFolders,omitempty"`
|
||||||
ScanStatus *ScanStatus `xml:"scanStatus" json:"scanStatus,omitempty"`
|
ScanStatus *ScanStatus `xml:"scanStatus" json:"scanStatus,omitempty"`
|
||||||
Licence *Licence `xml:"license" json:"license,omitempty"`
|
Licence *Licence `xml:"license" json:"license,omitempty"`
|
||||||
SearchResultTwo *SearchResultTwo `xml:"searchResult2" json:"searchResult2,omitempty"`
|
SearchResultTwo *SearchResultTwo `xml:"searchResult2" json:"searchResult2,omitempty"`
|
||||||
SearchResultThree *SearchResultThree `xml:"searchResult3" json:"searchResult3,omitempty"`
|
SearchResultThree *SearchResultThree `xml:"searchResult3" json:"searchResult3,omitempty"`
|
||||||
User *User `xml:"user" json:"user,omitempty"`
|
User *User `xml:"user" json:"user,omitempty"`
|
||||||
Playlists *Playlists `xml:"playlists" json:"playlists,omitempty"`
|
Playlists *Playlists `xml:"playlists" json:"playlists,omitempty"`
|
||||||
Playlist *Playlist `xml:"playlist" json:"playlist,omitempty"`
|
Playlist *Playlist `xml:"playlist" json:"playlist,omitempty"`
|
||||||
ArtistInfo *ArtistInfo `xml:"artistInfo" json:"artistInfo,omitempty"`
|
ArtistInfo *ArtistInfo `xml:"artistInfo" json:"artistInfo,omitempty"`
|
||||||
ArtistInfoTwo *ArtistInfo `xml:"artistInfo2" json:"artistInfo2,omitempty"`
|
ArtistInfoTwo *ArtistInfo `xml:"artistInfo2" json:"artistInfo2,omitempty"`
|
||||||
Genres *Genres `xml:"genres" json:"genres,omitempty"`
|
Genres *Genres `xml:"genres" json:"genres,omitempty"`
|
||||||
PlayQueue *PlayQueue `xml:"playQueue" json:"playQueue,omitempty"`
|
PlayQueue *PlayQueue `xml:"playQueue" json:"playQueue,omitempty"`
|
||||||
JukeboxStatus *JukeboxStatus `xml:"jukeboxStatus" json:"jukeboxStatus,omitempty"`
|
JukeboxStatus *JukeboxStatus `xml:"jukeboxStatus" json:"jukeboxStatus,omitempty"`
|
||||||
JukeboxPlaylist *JukeboxPlaylist `xml:"jukeboxPlaylist" json:"jukeboxPlaylist,omitempty"`
|
JukeboxPlaylist *JukeboxPlaylist `xml:"jukeboxPlaylist" json:"jukeboxPlaylist,omitempty"`
|
||||||
Podcasts *Podcasts `xml:"podcasts" json:"podcasts,omitempty"`
|
Podcasts *Podcasts `xml:"podcasts" json:"podcasts,omitempty"`
|
||||||
NewestPodcasts *NewestPodcasts `xml:"newestPodcasts" json:"newestPodcasts,omitempty"`
|
NewestPodcasts *NewestPodcasts `xml:"newestPodcasts" json:"newestPodcasts,omitempty"`
|
||||||
Bookmarks *Bookmarks `xml:"bookmarks" json:"bookmarks,omitempty"`
|
Bookmarks *Bookmarks `xml:"bookmarks" json:"bookmarks,omitempty"`
|
||||||
Starred *Starred `xml:"starred" json:"starred,omitempty"`
|
Starred *Starred `xml:"starred" json:"starred,omitempty"`
|
||||||
StarredTwo *StarredTwo `xml:"starred2" json:"starred2,omitempty"`
|
StarredTwo *StarredTwo `xml:"starred2" json:"starred2,omitempty"`
|
||||||
TopSongs *TopSongs `xml:"topSongs" json:"topSongs,omitempty"`
|
TopSongs *TopSongs `xml:"topSongs" json:"topSongs,omitempty"`
|
||||||
SimilarSongs *SimilarSongs `xml:"similarSongs" json:"similarSongs,omitempty"`
|
SimilarSongs *SimilarSongs `xml:"similarSongs" json:"similarSongs,omitempty"`
|
||||||
SimilarSongsTwo *SimilarSongsTwo `xml:"similarSongs2" json:"similarSongs2,omitempty"`
|
SimilarSongsTwo *SimilarSongsTwo `xml:"similarSongs2" json:"similarSongs2,omitempty"`
|
||||||
InternetRadioStations *InternetRadioStations `xml:"internetRadioStations" json:"internetRadioStations,omitempty"`
|
InternetRadioStations *InternetRadioStations `xml:"internetRadioStations" json:"internetRadioStations,omitempty"`
|
||||||
Lyrics *Lyrics `xml:"lyrics" json:"lyrics,omitempty"`
|
Lyrics *Lyrics `xml:"lyrics" json:"lyrics,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewResponse() *Response {
|
func NewResponse() *Response {
|
||||||
@@ -160,28 +160,29 @@ type TranscodeMeta struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type TrackChild struct {
|
type TrackChild struct {
|
||||||
ID *specid.ID `xml:"id,attr,omitempty" json:"id,omitempty"`
|
ID *specid.ID `xml:"id,attr,omitempty" json:"id,omitempty"`
|
||||||
Album string `xml:"album,attr,omitempty" json:"album,omitempty"`
|
Album string `xml:"album,attr,omitempty" json:"album,omitempty"`
|
||||||
AlbumID *specid.ID `xml:"albumId,attr,omitempty" json:"albumId,omitempty"`
|
AlbumID *specid.ID `xml:"albumId,attr,omitempty" json:"albumId,omitempty"`
|
||||||
Artist string `xml:"artist,attr,omitempty" json:"artist,omitempty"`
|
Artist string `xml:"artist,attr,omitempty" json:"artist,omitempty"`
|
||||||
ArtistID *specid.ID `xml:"artistId,attr,omitempty" json:"artistId,omitempty"`
|
ArtistID *specid.ID `xml:"artistId,attr,omitempty" json:"artistId,omitempty"`
|
||||||
Bitrate int `xml:"bitRate,attr,omitempty" json:"bitRate,omitempty"`
|
Bitrate int `xml:"bitRate,attr,omitempty" json:"bitRate,omitempty"`
|
||||||
ContentType string `xml:"contentType,attr,omitempty" json:"contentType,omitempty"`
|
ContentType string `xml:"contentType,attr,omitempty" json:"contentType,omitempty"`
|
||||||
CoverID *specid.ID `xml:"coverArt,attr,omitempty" json:"coverArt,omitempty"`
|
CoverID *specid.ID `xml:"coverArt,attr,omitempty" json:"coverArt,omitempty"`
|
||||||
CreatedAt time.Time `xml:"created,attr,omitempty" json:"created,omitempty"`
|
CreatedAt time.Time `xml:"created,attr,omitempty" json:"created,omitempty"`
|
||||||
Duration int `xml:"duration,attr,omitempty" json:"duration,omitempty"`
|
Duration int `xml:"duration,attr,omitempty" json:"duration,omitempty"`
|
||||||
Genre string `xml:"genre,attr,omitempty" json:"genre,omitempty"`
|
Genre string `xml:"genre,attr,omitempty" json:"genre,omitempty"`
|
||||||
IsDir bool `xml:"isDir,attr" json:"isDir"`
|
Genres []*GenreRef `xml:"genres,omitempty" json:"genres,omitempty"`
|
||||||
IsVideo bool `xml:"isVideo,attr" json:"isVideo"`
|
IsDir bool `xml:"isDir,attr" json:"isDir"`
|
||||||
ParentID *specid.ID `xml:"parent,attr,omitempty" json:"parent,omitempty"`
|
IsVideo bool `xml:"isVideo,attr" json:"isVideo"`
|
||||||
Path string `xml:"path,attr,omitempty" json:"path,omitempty"`
|
ParentID *specid.ID `xml:"parent,attr,omitempty" json:"parent,omitempty"`
|
||||||
Size int `xml:"size,attr,omitempty" json:"size,omitempty"`
|
Path string `xml:"path,attr,omitempty" json:"path,omitempty"`
|
||||||
Suffix string `xml:"suffix,attr,omitempty" json:"suffix,omitempty"`
|
Size int `xml:"size,attr,omitempty" json:"size,omitempty"`
|
||||||
Title string `xml:"title,attr" json:"title"`
|
Suffix string `xml:"suffix,attr,omitempty" json:"suffix,omitempty"`
|
||||||
TrackNumber int `xml:"track,attr,omitempty" json:"track,omitempty"`
|
Title string `xml:"title,attr" json:"title"`
|
||||||
DiscNumber int `xml:"discNumber,attr,omitempty" json:"discNumber,omitempty"`
|
TrackNumber int `xml:"track,attr,omitempty" json:"track,omitempty"`
|
||||||
Type string `xml:"type,attr,omitempty" json:"type,omitempty"`
|
DiscNumber int `xml:"discNumber,attr,omitempty" json:"discNumber,omitempty"`
|
||||||
Year int `xml:"year,attr,omitempty" json:"year,omitempty"`
|
Type string `xml:"type,attr,omitempty" json:"type,omitempty"`
|
||||||
|
Year int `xml:"year,attr,omitempty" json:"year,omitempty"`
|
||||||
// star / rating
|
// star / rating
|
||||||
Starred *time.Time `xml:"starred,attr,omitempty" json:"starred,omitempty"`
|
Starred *time.Time `xml:"starred,attr,omitempty" json:"starred,omitempty"`
|
||||||
UserRating int `xml:"userRating,attr,omitempty" json:"userRating,omitempty"`
|
UserRating int `xml:"userRating,attr,omitempty" json:"userRating,omitempty"`
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-3",
|
"parent": "al-3",
|
||||||
@@ -42,6 +43,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-3",
|
"parent": "al-3",
|
||||||
@@ -65,6 +67,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-3",
|
"parent": "al-3",
|
||||||
@@ -88,6 +91,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-4",
|
"parent": "al-4",
|
||||||
@@ -111,6 +115,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-4",
|
"parent": "al-4",
|
||||||
@@ -134,6 +139,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-4",
|
"parent": "al-4",
|
||||||
@@ -157,6 +163,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-5",
|
"parent": "al-5",
|
||||||
@@ -180,6 +187,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-5",
|
"parent": "al-5",
|
||||||
@@ -203,6 +211,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-5",
|
"parent": "al-5",
|
||||||
@@ -226,6 +235,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-7",
|
"parent": "al-7",
|
||||||
@@ -249,6 +259,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-7",
|
"parent": "al-7",
|
||||||
@@ -272,6 +283,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-7",
|
"parent": "al-7",
|
||||||
@@ -295,6 +307,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-8",
|
"parent": "al-8",
|
||||||
@@ -318,6 +331,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-8",
|
"parent": "al-8",
|
||||||
@@ -341,6 +355,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-8",
|
"parent": "al-8",
|
||||||
@@ -364,6 +379,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-9",
|
"parent": "al-9",
|
||||||
@@ -387,6 +403,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-9",
|
"parent": "al-9",
|
||||||
@@ -410,6 +427,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-9",
|
"parent": "al-9",
|
||||||
@@ -433,6 +451,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-11",
|
"parent": "al-11",
|
||||||
@@ -456,6 +475,7 @@
|
|||||||
"created": "2019-11-30T00:00:00Z",
|
"created": "2019-11-30T00:00:00Z",
|
||||||
"duration": 100,
|
"duration": 100,
|
||||||
"genre": "Unknown Genre",
|
"genre": "Unknown Genre",
|
||||||
|
"genres": [{ "name": "Unknown Genre" }],
|
||||||
"isDir": false,
|
"isDir": false,
|
||||||
"isVideo": false,
|
"isVideo": false,
|
||||||
"parent": "al-11",
|
"parent": "al-11",
|
||||||
|
|||||||
Reference in New Issue
Block a user