fix scanning of new libraries

This commit is contained in:
Luke Pulverenti 2016-11-23 01:54:09 -05:00
parent c418f94c98
commit 8bc4d49c89
7 changed files with 75 additions and 49 deletions

View File

@ -194,7 +194,6 @@ namespace Emby.Server.Implementations.Data
using (var statement = connection.PrepareStatement("select ResultId, OriginalPath, TargetPath, FileLength, OrganizationDate, Status, OrganizationType, StatusMessage, ExtractedName, ExtractedYear, ExtractedSeasonNumber, ExtractedEpisodeNumber, ExtractedEndingEpisodeNumber, DuplicatePaths from FileOrganizerResults where ResultId=@ResultId")) using (var statement = connection.PrepareStatement("select ResultId, OriginalPath, TargetPath, FileLength, OrganizationDate, Status, OrganizationType, StatusMessage, ExtractedName, ExtractedYear, ExtractedSeasonNumber, ExtractedEpisodeNumber, ExtractedEndingEpisodeNumber, DuplicatePaths from FileOrganizerResults where ResultId=@ResultId"))
{ {
statement.TryBind("@ResultId", id.ToGuidParamValue()); statement.TryBind("@ResultId", id.ToGuidParamValue());
statement.MoveNext();
foreach (var row in statement.ExecuteQuery()) foreach (var row in statement.ExecuteQuery())
{ {

View File

@ -638,25 +638,30 @@ namespace Emby.Server.Implementations.Data
CheckDisposed(); CheckDisposed();
var tuples = new List<Tuple<BaseItem, List<Guid>>>();
foreach (var item in items)
{
var ancestorIds = item.SupportsAncestors ?
item.GetAncestorIds().Distinct().ToList() :
null;
tuples.Add(new Tuple<BaseItem, List<Guid>>(item, ancestorIds));
}
using (var connection = CreateConnection()) using (var connection = CreateConnection())
{ {
using (WriteLock.Write()) using (WriteLock.Write())
{ {
connection.RunInTransaction(db => connection.RunInTransaction(db =>
{ {
SaveItemsInTranscation(db, items); SaveItemsInTranscation(db, tuples);
}); });
} }
} }
} }
private void SaveItemsInTranscation(IDatabaseConnection db, List<BaseItem> items) private void SaveItemsInTranscation(IDatabaseConnection db, List<Tuple<BaseItem, List<Guid>>> tuples)
{ {
if (items == null)
{
throw new ArgumentNullException("items");
}
var requiresReset = false; var requiresReset = false;
using (var saveItemStatement = db.PrepareStatement(GetSaveItemCommandText())) using (var saveItemStatement = db.PrepareStatement(GetSaveItemCommandText()))
@ -665,19 +670,21 @@ namespace Emby.Server.Implementations.Data
{ {
using (var updateAncestorsStatement = db.PrepareStatement("insert into AncestorIds (ItemId, AncestorId, AncestorIdText) values (@ItemId, @AncestorId, @AncestorIdText)")) using (var updateAncestorsStatement = db.PrepareStatement("insert into AncestorIds (ItemId, AncestorId, AncestorIdText) values (@ItemId, @AncestorId, @AncestorIdText)"))
{ {
foreach (var item in items) foreach (var tuple in tuples)
{ {
if (requiresReset) if (requiresReset)
{ {
saveItemStatement.Reset(); saveItemStatement.Reset();
} }
var item = tuple.Item1;
SaveItem(item, saveItemStatement); SaveItem(item, saveItemStatement);
//Logger.Debug(_saveItemCommand.CommandText); //Logger.Debug(_saveItemCommand.CommandText);
if (item.SupportsAncestors) if (item.SupportsAncestors)
{ {
UpdateAncestors(item.Id, item.GetAncestorIds().Distinct().ToList(), db, deleteAncestorsStatement, updateAncestorsStatement); UpdateAncestors(item.Id, tuple.Item2, db, deleteAncestorsStatement, updateAncestorsStatement);
} }
UpdateItemValues(item.Id, GetItemValuesToSave(item), db); UpdateItemValues(item.Id, GetItemValuesToSave(item), db);
@ -802,7 +809,7 @@ namespace Emby.Server.Implementations.Data
saveItemStatement.TryBind("@IsHD", item.IsHD); saveItemStatement.TryBind("@IsHD", item.IsHD);
saveItemStatement.TryBind("@ExternalEtag", item.ExternalEtag); saveItemStatement.TryBind("@ExternalEtag", item.ExternalEtag);
if (item.DateLastRefreshed == default(DateTime)) if (item.DateLastRefreshed != default(DateTime))
{ {
saveItemStatement.TryBind("@DateLastRefreshed", item.DateLastRefreshed); saveItemStatement.TryBind("@DateLastRefreshed", item.DateLastRefreshed);
} }
@ -811,9 +818,9 @@ namespace Emby.Server.Implementations.Data
saveItemStatement.TryBindNull("@DateLastRefreshed"); saveItemStatement.TryBindNull("@DateLastRefreshed");
} }
if (item.DateLastSaved == default(DateTime)) if (item.DateLastSaved != default(DateTime))
{ {
saveItemStatement.TryBind("@DateLastSaved", item.DateLastRefreshed); saveItemStatement.TryBind("@DateLastSaved", item.DateLastSaved);
} }
else else
{ {
@ -948,7 +955,7 @@ namespace Emby.Server.Implementations.Data
var hasSeries = item as IHasSeries; var hasSeries = item as IHasSeries;
if (hasSeries != null) if (hasSeries != null)
{ {
saveItemStatement.TryBind("@SeriesName", hasSeries.FindSeriesName()); saveItemStatement.TryBind("@SeriesName", hasSeries.SeriesName);
} }
else else
{ {
@ -960,8 +967,8 @@ namespace Emby.Server.Implementations.Data
var episode = item as Episode; var episode = item as Episode;
if (episode != null) if (episode != null)
{ {
saveItemStatement.TryBind("@SeasonName", episode.FindSeasonName()); saveItemStatement.TryBind("@SeasonName", episode.SeasonName);
saveItemStatement.TryBind("@SeasonId", episode.FindSeasonId()); saveItemStatement.TryBind("@SeasonId", episode.SeasonId);
} }
else else
{ {
@ -971,8 +978,8 @@ namespace Emby.Server.Implementations.Data
if (hasSeries != null) if (hasSeries != null)
{ {
saveItemStatement.TryBind("@SeriesId", hasSeries.FindSeriesId()); saveItemStatement.TryBind("@SeriesId", hasSeries.SeriesId);
saveItemStatement.TryBind("@SeriesSortName", hasSeries.FindSeriesSortName()); saveItemStatement.TryBind("@SeriesSortName", hasSeries.SeriesSortName);
} }
else else
{ {

View File

@ -25,10 +25,10 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
{ {
_cancellationToken = cancellationToken; _cancellationToken = cancellationToken;
byte[] buffer = new byte[BufferSize];
while (!cancellationToken.IsCancellationRequested) while (!cancellationToken.IsCancellationRequested)
{ {
byte[] buffer = new byte[BufferSize];
var bytesRead = await source.ReadAsync(buffer, 0, buffer.Length, cancellationToken).ConfigureAwait(false); var bytesRead = await source.ReadAsync(buffer, 0, buffer.Length, cancellationToken).ConfigureAwait(false);
if (bytesRead > 0) if (bytesRead > 0)

View File

@ -19,6 +19,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
public Action<QueueStream> OnFinished { get; set; } public Action<QueueStream> OnFinished { get; set; }
private readonly ILogger _logger; private readonly ILogger _logger;
private bool _isActive;
public QueueStream(Stream outputStream, ILogger logger) public QueueStream(Stream outputStream, ILogger logger)
{ {
@ -29,7 +30,10 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
public void Queue(byte[] bytes) public void Queue(byte[] bytes)
{ {
_queue.Enqueue(bytes); if (_isActive)
{
_queue.Enqueue(bytes);
}
} }
public void Start(CancellationToken cancellationToken) public void Start(CancellationToken cancellationToken)
@ -57,6 +61,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
{ {
while (!cancellationToken.IsCancellationRequested) while (!cancellationToken.IsCancellationRequested)
{ {
_isActive = true;
var bytes = Dequeue(); var bytes = Dequeue();
if (bytes != null) if (bytes != null)
{ {
@ -83,6 +89,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
} }
finally finally
{ {
_isActive = false;
if (OnFinished != null) if (OnFinished != null)
{ {
OnFinished(this); OnFinished(this);

View File

@ -418,6 +418,11 @@ namespace MediaBrowser.Providers.Manager
// If any remote providers changed, run them all so that priorities can be honored // If any remote providers changed, run them all so that priorities can be honored
if (i is IRemoteMetadataProvider) if (i is IRemoteMetadataProvider)
{ {
if (options.MetadataRefreshMode == MetadataRefreshMode.ValidationOnly)
{
return false;
}
return anyRemoteProvidersChanged; return anyRemoteProvidersChanged;
} }

View File

@ -20,40 +20,39 @@ namespace MediaBrowser.Providers.TV
{ {
var updateType = await base.BeforeSave(item, isFullRefresh, currentUpdateType).ConfigureAwait(false); var updateType = await base.BeforeSave(item, isFullRefresh, currentUpdateType).ConfigureAwait(false);
if (updateType <= ItemUpdateType.None) var seriesName = item.FindSeriesName();
if (!string.Equals(item.SeriesName, seriesName, StringComparison.Ordinal))
{ {
if (!string.Equals(item.SeriesName, item.FindSeriesName(), StringComparison.Ordinal)) item.SeriesName = seriesName;
{ updateType |= ItemUpdateType.MetadataImport;
updateType |= ItemUpdateType.MetadataImport;
}
} }
if (updateType <= ItemUpdateType.None)
var seriesSortName = item.FindSeriesSortName();
if (!string.Equals(item.SeriesSortName, seriesSortName, StringComparison.Ordinal))
{ {
if (!string.Equals(item.SeriesSortName, item.FindSeriesSortName(), StringComparison.Ordinal)) item.SeriesSortName = seriesSortName;
{ updateType |= ItemUpdateType.MetadataImport;
updateType |= ItemUpdateType.MetadataImport;
}
} }
if (updateType <= ItemUpdateType.None)
var seasonName = item.FindSeasonName();
if (!string.Equals(item.SeasonName, seasonName, StringComparison.Ordinal))
{ {
if (!string.Equals(item.SeasonName, item.FindSeasonName(), StringComparison.Ordinal)) item.SeasonName = seasonName;
{ updateType |= ItemUpdateType.MetadataImport;
updateType |= ItemUpdateType.MetadataImport;
}
} }
if (updateType <= ItemUpdateType.None)
var seriesId = item.FindSeriesId();
if (item.SeriesId != seriesId)
{ {
if (item.SeriesId != item.FindSeriesId()) item.SeriesId = seriesId;
{ updateType |= ItemUpdateType.MetadataImport;
updateType |= ItemUpdateType.MetadataImport;
}
} }
if (updateType <= ItemUpdateType.None)
var seasonId = item.FindSeasonId();
if (item.SeasonId != seasonId)
{ {
if (item.SeasonId != item.FindSeasonId()) item.SeasonId = seasonId;
{ updateType |= ItemUpdateType.MetadataImport;
updateType |= ItemUpdateType.MetadataImport;
}
} }
return updateType; return updateType;

View File

@ -37,16 +37,24 @@ namespace MediaBrowser.Providers.TV
updateType |= SaveIsVirtualItem(item, episodes); updateType |= SaveIsVirtualItem(item, episodes);
} }
if (!string.Equals(item.SeriesName, item.FindSeriesName(), StringComparison.Ordinal)) var seriesName = item.FindSeriesName();
if (!string.Equals(item.SeriesName, seriesName, StringComparison.Ordinal))
{ {
item.SeriesName = seriesName;
updateType |= ItemUpdateType.MetadataImport; updateType |= ItemUpdateType.MetadataImport;
} }
if (!string.Equals(item.SeriesSortName, item.FindSeriesSortName(), StringComparison.Ordinal))
var seriesSortName = item.FindSeriesSortName();
if (!string.Equals(item.SeriesSortName, seriesSortName, StringComparison.Ordinal))
{ {
item.SeriesSortName = seriesSortName;
updateType |= ItemUpdateType.MetadataImport; updateType |= ItemUpdateType.MetadataImport;
} }
if (item.SeriesId != item.FindSeriesId())
var seriesId = item.FindSeriesId();
if (item.SeriesId != seriesId)
{ {
item.SeriesId = seriesId;
updateType |= ItemUpdateType.MetadataImport; updateType |= ItemUpdateType.MetadataImport;
} }