mirror of
https://github.com/gabehf/Koito.git
synced 2026-03-15 18:35:55 -07:00
fix: associate tracks with release when scrobbling (#118)
This commit is contained in:
parent
d327729bff
commit
c346c7cb31
12 changed files with 58 additions and 1794 deletions
|
|
@ -39,7 +39,7 @@ func AssociateTrack(ctx context.Context, d db.DB, opts AssociateTrackOpts) (*mod
|
|||
return matchTrackByMbzID(ctx, d, opts)
|
||||
} else {
|
||||
l.Debug().Msgf("Associating track '%s' by title and artist", opts.TrackName)
|
||||
return matchTrackByTitleAndArtist(ctx, d, opts)
|
||||
return matchTrackByTrackInfo(ctx, d, opts)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -56,7 +56,7 @@ func matchTrackByMbzID(ctx context.Context, d db.DB, opts AssociateTrackOpts) (*
|
|||
return nil, fmt.Errorf("matchTrackByMbzID: %w", err)
|
||||
} else {
|
||||
l.Debug().Msgf("Track '%s' could not be found by MusicBrainz ID", opts.TrackName)
|
||||
track, err := matchTrackByTitleAndArtist(ctx, d, opts)
|
||||
track, err := matchTrackByTrackInfo(ctx, d, opts)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("matchTrackByMbzID: %w", err)
|
||||
}
|
||||
|
|
@ -73,28 +73,30 @@ func matchTrackByMbzID(ctx context.Context, d db.DB, opts AssociateTrackOpts) (*
|
|||
}
|
||||
}
|
||||
|
||||
func matchTrackByTitleAndArtist(ctx context.Context, d db.DB, opts AssociateTrackOpts) (*models.Track, error) {
|
||||
func matchTrackByTrackInfo(ctx context.Context, d db.DB, opts AssociateTrackOpts) (*models.Track, error) {
|
||||
l := logger.FromContext(ctx)
|
||||
// try provided track title
|
||||
track, err := d.GetTrack(ctx, db.GetTrackOpts{
|
||||
Title: opts.TrackName,
|
||||
ReleaseID: opts.AlbumID,
|
||||
ArtistIDs: opts.ArtistIDs,
|
||||
})
|
||||
if err == nil {
|
||||
l.Debug().Msgf("Track '%s' found by title and artist match", track.Title)
|
||||
l.Debug().Msgf("Track '%s' found by title, release and artist match", track.Title)
|
||||
return track, nil
|
||||
} else if !errors.Is(err, pgx.ErrNoRows) {
|
||||
return nil, fmt.Errorf("matchTrackByTitleAndArtist: %w", err)
|
||||
return nil, fmt.Errorf("matchTrackByTrackInfo: %w", err)
|
||||
} else {
|
||||
if opts.TrackMbzID != uuid.Nil {
|
||||
mbzTrack, err := opts.Mbzc.GetTrack(ctx, opts.TrackMbzID)
|
||||
if err == nil {
|
||||
track, err := d.GetTrack(ctx, db.GetTrackOpts{
|
||||
Title: mbzTrack.Title,
|
||||
ReleaseID: opts.AlbumID,
|
||||
ArtistIDs: opts.ArtistIDs,
|
||||
})
|
||||
if err == nil {
|
||||
l.Debug().Msgf("Track '%s' found by MusicBrainz title and artist match", opts.TrackName)
|
||||
l.Debug().Msgf("Track '%s' found by MusicBrainz title, release and artist match", opts.TrackName)
|
||||
return track, nil
|
||||
}
|
||||
}
|
||||
|
|
@ -108,7 +110,7 @@ func matchTrackByTitleAndArtist(ctx context.Context, d db.DB, opts AssociateTrac
|
|||
Duration: opts.Duration,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("matchTrackByTitleAndArtist: %w", err)
|
||||
return nil, fmt.Errorf("matchTrackByTrackInfo: %w", err)
|
||||
}
|
||||
if opts.TrackMbzID == uuid.Nil {
|
||||
l.Info().Msgf("Created track '%s' with title and artist", opts.TrackName)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue