2011-09-04 05:05:44 +02:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Diagnostics;
|
|
|
|
|
using NLog;
|
2013-03-01 08:03:41 +01:00
|
|
|
|
using NzbDrone.Core.MediaFiles;
|
2013-02-19 07:01:03 +01:00
|
|
|
|
using NzbDrone.Core.Tv;
|
2011-09-04 05:05:44 +02:00
|
|
|
|
using NzbDrone.Core.Model;
|
|
|
|
|
using NzbDrone.Core.Repository;
|
|
|
|
|
|
|
|
|
|
namespace NzbDrone.Core.Providers
|
|
|
|
|
{
|
|
|
|
|
public class MisnamedProvider
|
|
|
|
|
{
|
2013-03-01 08:03:41 +01:00
|
|
|
|
private readonly IMediaFileService _mediaFileService;
|
2013-02-22 01:47:09 +01:00
|
|
|
|
private readonly IEpisodeService _episodeService;
|
2011-09-04 05:05:44 +02:00
|
|
|
|
|
|
|
|
|
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
|
|
|
|
|
2013-03-01 08:03:41 +01:00
|
|
|
|
public MisnamedProvider(IMediaFileService mediaFileService, IEpisodeService episodeService)
|
2011-09-04 05:05:44 +02:00
|
|
|
|
{
|
2013-03-01 08:03:41 +01:00
|
|
|
|
_mediaFileService = mediaFileService;
|
2013-02-20 03:05:15 +01:00
|
|
|
|
_episodeService = episodeService;
|
2011-09-04 05:05:44 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual List<MisnamedEpisodeModel> MisnamedFiles(int pageNumber, int pageSize, out int totalItems)
|
|
|
|
|
{
|
|
|
|
|
var misnamedFiles = new List<MisnamedEpisodeModel>();
|
|
|
|
|
|
2013-02-20 03:05:15 +01:00
|
|
|
|
var episodesWithFiles = _episodeService.EpisodesWithFiles().GroupBy(e => e.EpisodeFileId).ToList();
|
2011-09-04 05:05:44 +02:00
|
|
|
|
totalItems = episodesWithFiles.Count();
|
|
|
|
|
var stopwatch = new Stopwatch();
|
|
|
|
|
stopwatch.Start();
|
|
|
|
|
|
|
|
|
|
var misnamedFilesSelect = episodesWithFiles.AsParallel().Where(
|
|
|
|
|
w =>
|
|
|
|
|
w.First().EpisodeFile.Path !=
|
2013-03-01 08:03:41 +01:00
|
|
|
|
_mediaFileService.GetNewFilename(w.Select(e => e).ToList(), w.First().Series,
|
2012-08-03 09:01:34 +02:00
|
|
|
|
w.First().EpisodeFile.Quality, w.First().EpisodeFile.Proper, w.First().EpisodeFile)).Skip(Math.Max(pageSize * (pageNumber - 1), 0)).Take(pageSize);
|
2011-09-04 05:05:44 +02:00
|
|
|
|
|
|
|
|
|
//Process the episodes
|
|
|
|
|
misnamedFilesSelect.AsParallel().ForAll(f =>
|
|
|
|
|
{
|
|
|
|
|
var episodes = f.Select(e => e).ToList();
|
|
|
|
|
var firstEpisode = episodes[0];
|
2013-03-01 08:03:41 +01:00
|
|
|
|
var properName = _mediaFileService.GetNewFilename(episodes,
|
2012-12-27 04:51:04 +01:00
|
|
|
|
firstEpisode.Series,
|
2012-08-03 09:01:34 +02:00
|
|
|
|
firstEpisode.EpisodeFile.Quality, firstEpisode.EpisodeFile.Proper, firstEpisode.EpisodeFile);
|
2011-09-04 05:05:44 +02:00
|
|
|
|
|
|
|
|
|
var currentName = Path.GetFileNameWithoutExtension(firstEpisode.EpisodeFile.Path);
|
|
|
|
|
|
|
|
|
|
if (properName != currentName)
|
|
|
|
|
{
|
|
|
|
|
misnamedFiles.Add(new MisnamedEpisodeModel
|
|
|
|
|
{
|
|
|
|
|
CurrentName = currentName,
|
|
|
|
|
EpisodeFileId = firstEpisode.EpisodeFileId,
|
|
|
|
|
ProperName = properName,
|
|
|
|
|
SeriesId = firstEpisode.SeriesId,
|
2011-09-04 09:45:58 +02:00
|
|
|
|
SeriesTitle = firstEpisode.Series.Title
|
2011-09-04 05:05:44 +02:00
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
stopwatch.Stop();
|
|
|
|
|
return misnamedFiles.OrderBy(e => e.SeriesTitle).ToList();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|