mirror of
https://git.sr.ht/~phw/scotty
synced 2025-05-09 18:07:03 +02:00
jspf: also set username and recording MSID in exports
This commit is contained in:
parent
a645ec5c78
commit
d757129bd7
2 changed files with 18 additions and 10 deletions
|
@ -145,7 +145,7 @@ You can help translate this project into your language with [Weblate](https://tr
|
|||
|
||||
## License
|
||||
|
||||
Scotty © 2023-2024 Philipp Wolfer <phw@uploadedlobster.com>
|
||||
Scotty © 2023-2025 Philipp Wolfer <phw@uploadedlobster.com>
|
||||
|
||||
Scotty is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
|
||||
|
|
|
@ -180,13 +180,14 @@ func listenAsTrack(l models.Listen) jspf.Track {
|
|||
}
|
||||
|
||||
func trackAsListen(t jspf.Track) (*models.Listen, error) {
|
||||
track, addedAt, err := jspfTrackAsTrack(t)
|
||||
track, ext, err := jspfTrackAsTrack(t)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
listen := models.Listen{
|
||||
ListenedAt: *addedAt,
|
||||
ListenedAt: ext.AddedAt,
|
||||
UserName: ext.AddedBy,
|
||||
Track: *track,
|
||||
}
|
||||
return &listen, err
|
||||
|
@ -212,16 +213,23 @@ func loveAsTrack(l models.Love) jspf.Track {
|
|||
}
|
||||
|
||||
func trackAsLove(t jspf.Track) (*models.Love, error) {
|
||||
track, addedAt, err := jspfTrackAsTrack(t)
|
||||
track, ext, err := jspfTrackAsTrack(t)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
love := models.Love{
|
||||
Created: *addedAt,
|
||||
Created: ext.AddedAt,
|
||||
UserName: ext.AddedBy,
|
||||
RecordingMBID: track.RecordingMBID,
|
||||
Track: *track,
|
||||
}
|
||||
|
||||
recordingMSID, ok := track.AdditionalInfo["recording_msid"].(string)
|
||||
if ok {
|
||||
love.RecordingMSID = mbtypes.MBID(recordingMSID)
|
||||
}
|
||||
|
||||
return &love, err
|
||||
}
|
||||
|
||||
|
@ -238,7 +246,7 @@ func trackAsJSPFTrack(t models.Track) jspf.Track {
|
|||
return track
|
||||
}
|
||||
|
||||
func jspfTrackAsTrack(t jspf.Track) (*models.Track, *time.Time, error) {
|
||||
func jspfTrackAsTrack(t jspf.Track) (*models.Track, *jspf.MusicBrainzTrackExtension, error) {
|
||||
track := models.Track{
|
||||
ArtistNames: []string{t.Creator},
|
||||
ReleaseName: t.Album,
|
||||
|
@ -253,12 +261,12 @@ func jspfTrackAsTrack(t jspf.Track) (*models.Track, *time.Time, error) {
|
|||
}
|
||||
}
|
||||
|
||||
addedAt, err := readMusicBrainzExtension(t, &track)
|
||||
ext, err := readMusicBrainzExtension(t, &track)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
return &track, addedAt, nil
|
||||
return &track, ext, nil
|
||||
}
|
||||
|
||||
func makeMusicBrainzExtension(t models.Track) jspf.MusicBrainzTrackExtension {
|
||||
|
@ -281,7 +289,7 @@ func makeMusicBrainzExtension(t models.Track) jspf.MusicBrainzTrackExtension {
|
|||
return extension
|
||||
}
|
||||
|
||||
func readMusicBrainzExtension(jspfTrack jspf.Track, outputTrack *models.Track) (*time.Time, error) {
|
||||
func readMusicBrainzExtension(jspfTrack jspf.Track, outputTrack *models.Track) (*jspf.MusicBrainzTrackExtension, error) {
|
||||
ext := jspf.MusicBrainzTrackExtension{}
|
||||
err := jspfTrack.Extension.Get(jspf.MusicBrainzTrackExtensionID, &ext)
|
||||
if err != nil {
|
||||
|
@ -297,7 +305,7 @@ func readMusicBrainzExtension(jspfTrack jspf.Track, outputTrack *models.Track) (
|
|||
}
|
||||
}
|
||||
|
||||
return &ext.AddedAt, nil
|
||||
return &ext, nil
|
||||
}
|
||||
|
||||
func (b *JSPFBackend) readJSPF() error {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue