mirror of
https://github.com/navidrome/navidrome.git
synced 2025-05-17 10:36:37 +03:00
Fixing artwork urls
This commit is contained in:
parent
545b266c7f
commit
36dafe4889
@ -275,6 +275,14 @@ func (cds *contentDirectoryService) doMediaFiles(tracks model.MediaFiles, basePa
|
|||||||
OriginalTrackNumber: track.TrackNumber,
|
OriginalTrackNumber: track.TrackNumber,
|
||||||
Date: upnpav.Timestamp{Time:trackDateAsTimeObject},
|
Date: upnpav.Timestamp{Time:trackDateAsTimeObject},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(track.HasCoverArt) {
|
||||||
|
obj.AlbumArtURI = (&url.URL{
|
||||||
|
Scheme: "http",
|
||||||
|
Host: host,
|
||||||
|
Path: path.Join(resourcePath, resourceArtPath, track.CoverArtID().String()),
|
||||||
|
}).String()
|
||||||
|
}
|
||||||
|
|
||||||
//TODO figure out how this fits with transcoding etc
|
//TODO figure out how this fits with transcoding etc
|
||||||
var mimeType = "audio/mp3"
|
var mimeType = "audio/mp3"
|
||||||
|
@ -322,8 +322,7 @@ func (s *SSDPServer) resourceHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
http.ServeContent(w, r, remotePath, time.Now(), fileHandle)
|
http.ServeContent(w, r, remotePath, time.Now(), fileHandle)
|
||||||
break;
|
break;
|
||||||
case resourceStreamPath:
|
case resourceStreamPath: //TODO refactor this with stream.go:52?
|
||||||
//Copypasta stream.go:52
|
|
||||||
|
|
||||||
fileId := components[1]
|
fileId := components[1]
|
||||||
|
|
||||||
@ -331,8 +330,7 @@ func (s *SSDPServer) resourceHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
stream, err := s.ms.NewStream(r.Context(), fileId, "mp3", 0, 0)
|
stream, err := s.ms.NewStream(r.Context(), fileId, "mp3", 0, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Error streaming file", "id", fileId, err)
|
log.Error("Error streaming file", "id", fileId, err)
|
||||||
//TODO throw 500
|
return
|
||||||
//eturn nil, err
|
|
||||||
}
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := stream.Close(); err != nil && log.IsGreaterOrEqualTo(log.LevelDebug) {
|
if err := stream.Close(); err != nil && log.IsGreaterOrEqualTo(log.LevelDebug) {
|
||||||
@ -343,19 +341,22 @@ func (s *SSDPServer) resourceHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
w.Header().Set("X-Content-Duration", strconv.FormatFloat(float64(stream.Duration()), 'G', -1, 32))
|
w.Header().Set("X-Content-Duration", strconv.FormatFloat(float64(stream.Duration()), 'G', -1, 32))
|
||||||
http.ServeContent(w, r, stream.Name(), stream.ModTime(), stream)
|
http.ServeContent(w, r, stream.Name(), stream.ModTime(), stream)
|
||||||
break;
|
break;
|
||||||
case resourceArtPath:
|
case resourceArtPath: //TODO refactor this with handle_images.go:39?
|
||||||
log.Debug("1a")
|
artId, err := model.ParseArtworkID(components[1])
|
||||||
//copy pasta handle_images.go:39
|
if err != nil {
|
||||||
artId, _ := model.ParseArtworkID(components[1])
|
log.Error("Failure to parse ArtworkId", "inputString", components[1], err)
|
||||||
imgReader, lastUpdate, _ := s.art.Get(r.Context(), artId, 250, true)
|
return
|
||||||
log.Debug("2a")
|
}
|
||||||
|
//TODO size (250)
|
||||||
|
imgReader, lastUpdate, err := s.art.Get(r.Context(), artId, 250, true)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Failure to retrieve artwork", "artid", artId, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
defer imgReader.Close()
|
defer imgReader.Close()
|
||||||
log.Debug("3a")
|
|
||||||
w.Header().Set("Cache-Control", "public, max-age=315360000")
|
w.Header().Set("Cache-Control", "public, max-age=315360000")
|
||||||
w.Header().Set("Last-Modified", lastUpdate.Format(time.RFC1123))
|
w.Header().Set("Last-Modified", lastUpdate.Format(time.RFC1123))
|
||||||
log.Debug("4a")
|
|
||||||
io.Copy(w, imgReader)
|
io.Copy(w, imgReader)
|
||||||
log.Debug("5a")
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user