Skip to content

Commit

Permalink
Clean up (#225)
Browse files Browse the repository at this point in the history
  • Loading branch information
crobibero authored Nov 27, 2023
1 parent eaea912 commit 3b5a620
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 45 deletions.
14 changes: 7 additions & 7 deletions Trakt/Api/TraktApi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ public async Task<IReadOnlyList<TraktSyncResponse>> SendLibraryUpdateAsync(

var url = (eventType == EventType.Add || eventType == EventType.Update) ? TraktUris.SyncCollectionAdd : TraktUris.SyncCollectionRemove;
var responses = new List<TraktSyncResponse>();
var chunks = moviesPayload.ToChunks(100);
var chunks = moviesPayload.Chunk(100);
foreach (var chunk in chunks)
{
var data = new TraktSyncCollected
Expand Down Expand Up @@ -330,7 +330,7 @@ public async Task<IEnumerable<TraktSyncResponse>> SendLibraryUpdateAsync(
}

var responses = new List<TraktSyncResponse>();
var chunks = episodes.ToChunks(100);
var chunks = episodes.Chunk(100);
foreach (var chunk in chunks)
{
responses.Add(await SendLibraryUpdateInternalAsync(chunk, traktUser, eventType, cancellationToken).ConfigureAwait(false));
Expand All @@ -340,7 +340,7 @@ public async Task<IEnumerable<TraktSyncResponse>> SendLibraryUpdateAsync(
}

private async Task<TraktSyncResponse> SendLibraryUpdateInternalAsync(
IEnumerable<Episode> episodes,
IReadOnlyList<Episode> episodes,
TraktUser traktUser,
EventType eventType,
CancellationToken cancellationToken,
Expand Down Expand Up @@ -747,7 +747,7 @@ public async Task<List<TraktSyncResponse>> SendMoviePlaystateUpdates(
};
});

var chunks = moviesPayload.ToChunks(100).ToList();
var chunks = moviesPayload.Chunk(100).ToList();
var traktResponses = new List<TraktSyncResponse>();

foreach (var chunk in chunks)
Expand Down Expand Up @@ -792,7 +792,7 @@ public async Task<List<TraktSyncResponse>> SendEpisodePlaystateUpdates(
throw new ArgumentNullException(nameof(traktUser));
}

var chunks = episodes.ToChunks(100);
var chunks = episodes.Chunk(100);
var traktResponses = new List<TraktSyncResponse>();

foreach (var chunk in chunks)
Expand All @@ -809,7 +809,7 @@ public async Task<List<TraktSyncResponse>> SendEpisodePlaystateUpdates(
}

private async Task<TraktSyncResponse> SendEpisodePlaystateUpdatesInternalAsync(
IEnumerable<Episode> episodeChunk,
IReadOnlyList<Episode> episodeChunk,
TraktUser traktUser,
bool seen,
CancellationToken cancellationToken,
Expand Down Expand Up @@ -894,7 +894,7 @@ private async Task<TraktSyncResponse> SendEpisodePlaystateUpdatesInternalAsync(
return response;
}

private List<Episode> FindNotFoundEpisodes(IEnumerable<Episode> episodeChunk, TraktSyncResponse traktSyncResponse)
private List<Episode> FindNotFoundEpisodes(IReadOnlyList<Episode> episodeChunk, TraktSyncResponse traktSyncResponse)
{
// Episodes not found. If using ids, try again without them
List<Episode> episodes = new List<Episode>();
Expand Down
53 changes: 15 additions & 38 deletions Trakt/Extensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -336,29 +336,6 @@ public static string GetAudioChannels(this MediaStream audioStream)
}
}

/// <summary>
/// Transforms an enumerable into a list with a speciifc amount of chunks.
/// </summary>
/// <param name="enumerable">The IEnumberable{T}.</param>
/// <param name="chunkSize">Size of the Chunks.</param>
/// <returns>IList{IEnumerable{T}}.</returns>
/// <typeparam name="T">The type of IEnumerable.</typeparam>
public static IList<IEnumerable<T>> ToChunks<T>(this IEnumerable<T> enumerable, int chunkSize)
{
var itemsReturned = 0;
var list = enumerable.ToList(); // Prevent multiple execution of IEnumerable.
var count = list.Count;
var chunks = new List<IEnumerable<T>>();
while (itemsReturned < count)
{
chunks.Add(list.Take(chunkSize).ToList());
list = list.Skip(chunkSize).ToList();
itemsReturned += chunkSize;
}

return chunks;
}

/// <summary>
/// Gets a watched match for a series.
/// </summary>
Expand Down Expand Up @@ -464,16 +441,16 @@ public static IEnumerable<TraktEpisodeWatchedHistory> FindAllMatches(Episode ite
/// <param name="item">The <see cref="BaseItem"/>.</param>
/// <param name="movie">The IEnumerable of <see cref="TraktMovie"/>.</param>
/// <returns><see cref="bool"/> indicating if the <see cref="BaseItem"/> matches a <see cref="TraktMovie"/>.</returns>
public static bool IsMatch(BaseItem item, TraktMovie movie)
private static bool IsMatch(BaseItem item, TraktMovie movie)
{
var imdb = item.GetProviderId(MetadataProvider.Imdb);
if (!string.IsNullOrEmpty(imdb) && string.Equals(imdb, movie.Ids.Imdb, StringComparison.OrdinalIgnoreCase))
if (item.TryGetProviderId(MetadataProvider.Imdb, out var imdbId)
&& string.Equals(imdbId, movie.Ids.Imdb, StringComparison.Ordinal))
{
return true;
}

var tmdb = item.GetProviderId(MetadataProvider.Tmdb);
if (!string.IsNullOrEmpty(tmdb) && string.Equals(tmdb, movie.Ids.Tmdb.ToString(), StringComparison.OrdinalIgnoreCase))
if (item.TryGetProviderId(MetadataProvider.Tmdb, out var tmdbId)
&& string.Equals(tmdbId, movie.Ids.Tmdb?.ToString(CultureInfo.InvariantCulture), StringComparison.Ordinal))
{
return true;
}
Expand All @@ -487,28 +464,28 @@ public static bool IsMatch(BaseItem item, TraktMovie movie)
/// <param name="item">The <see cref="Series"/>.</param>
/// <param name="show">The <see cref="TraktShow"/>.</param>
/// <returns><see cref="bool"/> indicating if the <see cref="Series"/> matches a <see cref="TraktShow"/>.</returns>
public static bool IsMatch(Series item, TraktShow show)
private static bool IsMatch(Series item, TraktShow show)
{
var tvdb = item.GetProviderId(MetadataProvider.Tvdb);
if (!string.IsNullOrEmpty(tvdb) && string.Equals(tvdb, show.Ids.Tvdb, StringComparison.OrdinalIgnoreCase))
if (item.TryGetProviderId(MetadataProvider.Tvdb, out var tvdbId)
&& string.Equals(tvdbId, show.Ids.Tvdb, StringComparison.Ordinal))
{
return true;
}

var tmdb = item.GetProviderId(MetadataProvider.Tmdb);
if (!string.IsNullOrEmpty(tmdb) && string.Equals(tmdb, show.Ids.Tmdb.ToString(), StringComparison.OrdinalIgnoreCase))
if (item.TryGetProviderId(MetadataProvider.Tmdb, out var tmdbId)
&& string.Equals(tmdbId, show.Ids.Tmdb?.ToString(CultureInfo.InvariantCulture), StringComparison.Ordinal))
{
return true;
}

var imdb = item.GetProviderId(MetadataProvider.Imdb);
if (!string.IsNullOrEmpty(imdb) && string.Equals(imdb, show.Ids.Imdb, StringComparison.OrdinalIgnoreCase))
if (item.TryGetProviderId(MetadataProvider.Imdb, out var imdbId)
&& string.Equals(imdbId, show.Ids.Imdb, StringComparison.Ordinal))
{
return true;
}

var tvrage = item.GetProviderId(MetadataProvider.TvRage);
if (!string.IsNullOrEmpty(tvrage) && string.Equals(tvrage, show.Ids.Tvrage, StringComparison.OrdinalIgnoreCase))
if (item.TryGetProviderId(MetadataProvider.TvRage, out var tvRageId)
&& string.Equals(tvRageId, show.Ids.Tvrage, StringComparison.Ordinal))
{
return true;
}
Expand All @@ -531,7 +508,7 @@ public static bool IsMatch(Episode item, TraktEpisode episode)
}

var tmdb = item.GetProviderId(MetadataProvider.Tmdb);
if (!string.IsNullOrEmpty(tmdb) && string.Equals(tmdb, episode.Ids.Tmdb.ToString(), StringComparison.OrdinalIgnoreCase))
if (!string.IsNullOrEmpty(tmdb) && string.Equals(tmdb, episode.Ids.Tmdb?.ToString(CultureInfo.InvariantCulture), StringComparison.OrdinalIgnoreCase))
{
return true;
}
Expand Down

0 comments on commit 3b5a620

Please sign in to comment.