mirror of
https://github.com/Readarr/Readarr.git
synced 2026-04-25 22:36:59 -04:00
Track Parsing Code (#10)
* We now have the ability to import local tracks into Lidarr. Switching to IDv3 tag reading over custom parsing for local tracks. * Stable code for track refresh. * RefreshArtist and RescanArtist events are working correctly. Need to add potential rejection decisions in future. * Implemented code comments * PR comments and fixing some odd db bugs. * Fix some conflicts after Unit Test PR Merge Fix some conflicts after Unit Test PR Merge * Track/Album Add and Update Fixes Track/Album Add and Update Fixes * Fixed an issue with trackimport looking up trackId instead of artistId * Add Handle to TrackService for TrackAddedEvent Add Handle to TrackService for TrackAddedEvent * Update Quality Regex, Store BitRateMode in TrackFile Update Quality Regex, Store BitRateMode in TrackFile
This commit is contained in:
@@ -17,12 +17,14 @@ namespace NzbDrone.Core.Music
|
||||
public class RefreshTrackService : IRefreshTrackService
|
||||
{
|
||||
private readonly ITrackService _trackService;
|
||||
private readonly IAlbumService _albumService;
|
||||
private readonly IEventAggregator _eventAggregator;
|
||||
private readonly Logger _logger;
|
||||
|
||||
public RefreshTrackService(ITrackService trackService, IEventAggregator eventAggregator, Logger logger)
|
||||
public RefreshTrackService(ITrackService trackService, IAlbumService albumService, IEventAggregator eventAggregator, Logger logger)
|
||||
{
|
||||
_trackService = trackService;
|
||||
_albumService = albumService;
|
||||
_eventAggregator = eventAggregator;
|
||||
_logger = logger;
|
||||
}
|
||||
@@ -33,11 +35,13 @@ namespace NzbDrone.Core.Music
|
||||
var successCount = 0;
|
||||
var failCount = 0;
|
||||
|
||||
var existingTracks = _trackService.GetTracksByAlbum(album.ArtistId, album.Id); // TODO: JOE: I believe this should be string, string
|
||||
album = _albumService.FindById(album.ForeignAlbumId);
|
||||
|
||||
var existingTracks = _trackService.GetTracksByAlbum(album.ArtistId, album.Id);
|
||||
|
||||
var updateList = new List<Track>();
|
||||
var newList = new List<Track>();
|
||||
var dupeFreeRemoteTracks = remoteTracks.DistinctBy(m => new { m.AlbumId, m.TrackNumber }).ToList();
|
||||
var dupeFreeRemoteTracks = remoteTracks.DistinctBy(m => new { m.ForeignTrackId, m.TrackNumber }).ToList();
|
||||
|
||||
foreach (var track in OrderTracks(album, dupeFreeRemoteTracks))
|
||||
{
|
||||
@@ -54,21 +58,20 @@ namespace NzbDrone.Core.Music
|
||||
{
|
||||
trackToUpdate = new Track();
|
||||
trackToUpdate.Monitored = album.Monitored;
|
||||
trackToUpdate.Id = track.Id;
|
||||
newList.Add(trackToUpdate);
|
||||
}
|
||||
|
||||
// TODO: Use object mapper to automatically handle this
|
||||
trackToUpdate.ForeignTrackId = track.ForeignTrackId;
|
||||
trackToUpdate.TrackNumber = track.TrackNumber;
|
||||
trackToUpdate.Title = track.Title ?? "Unknown";
|
||||
trackToUpdate.AlbumId = album.Id;
|
||||
trackToUpdate.Album = track.Album;
|
||||
trackToUpdate.Album = track.Album ?? album;
|
||||
trackToUpdate.Explicit = track.Explicit;
|
||||
trackToUpdate.ArtistId = album.ArtistId;
|
||||
trackToUpdate.Compilation = track.Compilation;
|
||||
|
||||
// TODO: Implement rest of [RefreshTrackService] fields
|
||||
|
||||
|
||||
|
||||
successCount++;
|
||||
}
|
||||
@@ -118,7 +121,8 @@ namespace NzbDrone.Core.Music
|
||||
|
||||
private Track GetTrackToUpdate(Album album, Track track, List<Track> existingTracks)
|
||||
{
|
||||
return existingTracks.FirstOrDefault(e => e.AlbumId == track.AlbumId && e.TrackNumber == track.TrackNumber);
|
||||
var result = existingTracks.FirstOrDefault(e => e.ForeignTrackId == track.ForeignTrackId && e.TrackNumber == track.TrackNumber);
|
||||
return result;
|
||||
}
|
||||
|
||||
private IEnumerable<Track> OrderTracks(Album album, List<Track> tracks)
|
||||
|
||||
Reference in New Issue
Block a user