update validators

This commit is contained in:
Luke Pulverenti
2016-08-06 00:38:01 -04:00
parent 407d82ea11
commit 319a956b38
10 changed files with 99 additions and 64 deletions

View File

@@ -1385,6 +1385,17 @@ namespace MediaBrowser.Server.Implementations.Library
return ItemRepository.GetMusicGenres(query);
}
public QueryResult<Tuple<BaseItem, ItemCounts>> GetAllArtists(InternalItemsQuery query)
{
if (query.User != null)
{
AddUserToQuery(query, query.User);
}
SetTopParentOrAncestorIds(query);
return ItemRepository.GetAllArtists(query);
}
public QueryResult<Tuple<BaseItem, ItemCounts>> GetArtists(InternalItemsQuery query)
{
if (query.User != null)

View File

@@ -6,6 +6,7 @@ using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Entities;
namespace MediaBrowser.Server.Implementations.Library.Validators
{
@@ -43,36 +44,39 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// <returns>Task.</returns>
public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
{
var allSongs = _libraryManager.RootFolder
.GetRecursiveChildren(i => !i.IsFolder && i is IHasArtist)
.Cast<IHasArtist>()
var items = _libraryManager.GetAllArtists(new InternalItemsQuery())
.Items
.Select(i => i.Item1)
.ToList();
var allArtists = _libraryManager.GetArtists(allSongs).ToList();
var numComplete = 0;
var numArtists = allArtists.Count;
var count = items.Count;
foreach (var artistItem in allArtists)
foreach (var item in items)
{
cancellationToken.ThrowIfCancellationRequested();
try
{
await artistItem.RefreshMetadata(cancellationToken).ConfigureAwait(false);
await item.RefreshMetadata(cancellationToken).ConfigureAwait(false);
}
catch (IOException ex)
catch (OperationCanceledException)
{
_logger.ErrorException("Error validating Artist {0}", ex, artistItem.Name);
// Don't clutter the log
break;
}
catch (Exception ex)
{
_logger.ErrorException("Error refreshing {0}", ex, item.Name);
}
// Update progress
numComplete++;
double percent = numComplete;
percent /= numArtists;
percent /= count;
percent *= 100;
progress.Report(100 * percent);
progress.Report(percent);
}
progress.Report(100);
}
}
}

View File

@@ -34,21 +34,22 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// <returns>Task.</returns>
public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
{
var items = _libraryManager.RootFolder.GetRecursiveChildren(i => i is Game)
.SelectMany(i => i.Genres)
.DistinctNames()
var items = _libraryManager.GetGameGenres(new InternalItemsQuery
{
IncludeItemTypes = new[] { typeof(Game).Name }
})
.Items
.Select(i => i.Item1)
.ToList();
var numComplete = 0;
var count = items.Count;
foreach (var name in items)
foreach (var item in items)
{
try
{
var itemByName = _libraryManager.GetGameGenre(name);
await itemByName.RefreshMetadata(cancellationToken).ConfigureAwait(false);
await item.RefreshMetadata(cancellationToken).ConfigureAwait(false);
}
catch (OperationCanceledException)
{
@@ -57,7 +58,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
}
catch (Exception ex)
{
_logger.ErrorException("Error refreshing {0}", ex, name);
_logger.ErrorException("Error refreshing {0}", ex, item.Name);
}
numComplete++;

View File

@@ -35,21 +35,22 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// <returns>Task.</returns>
public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
{
var items = _libraryManager.RootFolder.GetRecursiveChildren(i => !(i is IHasMusicGenres) && !(i is Game))
.SelectMany(i => i.Genres)
.DistinctNames()
var items = _libraryManager.GetGenres(new InternalItemsQuery
{
ExcludeItemTypes = new[] { typeof(Audio).Name, typeof(MusicArtist).Name, typeof(MusicAlbum).Name, typeof(MusicVideo).Name, typeof(Game).Name }
})
.Items
.Select(i => i.Item1)
.ToList();
var numComplete = 0;
var count = items.Count;
foreach (var name in items)
foreach (var item in items)
{
try
{
var itemByName = _libraryManager.GetGenre(name);
await itemByName.RefreshMetadata(cancellationToken).ConfigureAwait(false);
await item.RefreshMetadata(cancellationToken).ConfigureAwait(false);
}
catch (OperationCanceledException)
{
@@ -58,7 +59,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
}
catch (Exception ex)
{
_logger.ErrorException("Error refreshing {0}", ex, name);
_logger.ErrorException("Error refreshing {0}", ex, item.Name);
}
numComplete++;

View File

@@ -5,6 +5,7 @@ using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Entities;
namespace MediaBrowser.Server.Implementations.Library.Validators
{
@@ -34,21 +35,22 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// <returns>Task.</returns>
public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
{
var items = _libraryManager.RootFolder.GetRecursiveChildren(i => i is IHasMusicGenres)
.SelectMany(i => i.Genres)
.DistinctNames()
var items = _libraryManager.GetMusicGenres(new InternalItemsQuery
{
IncludeItemTypes = new[] { typeof(Audio).Name, typeof(MusicArtist).Name, typeof(MusicAlbum).Name, typeof(MusicVideo).Name }
})
.Items
.Select(i => i.Item1)
.ToList();
var numComplete = 0;
var count = items.Count;
foreach (var name in items)
foreach (var item in items)
{
try
{
var itemByName = _libraryManager.GetMusicGenre(name);
await itemByName.RefreshMetadata(cancellationToken).ConfigureAwait(false);
await item.RefreshMetadata(cancellationToken).ConfigureAwait(false);
}
catch (OperationCanceledException)
{
@@ -57,7 +59,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
}
catch (Exception ex)
{
_logger.ErrorException("Error refreshing {0}", ex, name);
_logger.ErrorException("Error refreshing {0}", ex, item.Name);
}
numComplete++;

View File

@@ -1,10 +1,10 @@
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Entities;
namespace MediaBrowser.Server.Implementations.Library.Validators
{
@@ -34,21 +34,19 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// <returns>Task.</returns>
public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
{
var items = _libraryManager.RootFolder.GetRecursiveChildren(i => true)
.SelectMany(i => i.Studios)
.DistinctNames()
var items = _libraryManager.GetStudios(new InternalItemsQuery())
.Items
.Select(i => i.Item1)
.ToList();
var numComplete = 0;
var count = items.Count;
foreach (var name in items)
foreach (var item in items)
{
try
{
var itemByName = _libraryManager.GetStudio(name);
await itemByName.RefreshMetadata(cancellationToken).ConfigureAwait(false);
await item.RefreshMetadata(cancellationToken).ConfigureAwait(false);
}
catch (OperationCanceledException)
{
@@ -57,7 +55,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
}
catch (Exception ex)
{
_logger.ErrorException("Error refreshing {0}", ex, name);
_logger.ErrorException("Error refreshing {0}", ex, item.Name);
}
numComplete++;