internal static void AddEpisodeToWatchHistory(TraktShow show, TraktEpisode episode) { var watchedEpisodes = (_WatchedEpisodes ?? new List<EpisodeWatched>()).ToList(); var existingWatchedEpisode = watchedEpisodes.FirstOrDefault(e => (((e.ShowId == show.Ids.Trakt) && e.ShowId != null) || ((e.ShowTvdbId == show.Ids.Tvdb) && e.ShowTvdbId != null)) && e.Season == episode.Season && e.Number == episode.Number); // if it exists already, increment the play count only if (existingWatchedEpisode != null) { existingWatchedEpisode.Plays++; existingWatchedEpisode.WatchedAt = DateTime.UtcNow.ToISO8601(); } else { watchedEpisodes.Add(new EpisodeWatched { Number = episode.Number, Season = episode.Season, ShowId = show.Ids.Trakt, ShowImdbId = show.Ids.Imdb, ShowTvdbId = show.Ids.Tvdb, ShowTitle = show.Title, ShowYear = show.Year, Plays = 1, WatchedAt = DateTime.UtcNow.ToISO8601() }); } _WatchedEpisodes = watchedEpisodes; // now remove from watchlist and paused state since it will be removed from online in these cases RemoveEpisodeFromWatchlist(episode); RemoveEpisodeFromPausedData(show, episode); RemoveShowFromWatchlist(show); }
internal static void AddSeasonToWatchlist(TraktShow show, TraktSeason season) { var watchlistSeasons = (_WatchListSeasons ?? new List<TraktSeasonWatchList>()).ToList(); watchlistSeasons.Add(new TraktSeasonWatchList { ListedAt = DateTime.UtcNow.ToISO8601(), Show = new TraktShowSummary { Ids = show.Ids, Title = show.Title, Year = show.Year }, Season = new TraktSeasonSummary { Ids = season.Ids, Number = season.Number } }); _WatchListSeasons = watchlistSeasons; }
internal static void AddSeasonToRatings(TraktShow show, TraktSeason season, int rating) { var ratedSeasons = (_RatedSeasons ?? new List<TraktSeasonRated>()).ToList(); ratedSeasons.Add(new TraktSeasonRated { RatedAt = DateTime.UtcNow.ToISO8601(), Rating = rating, Show = new TraktShow { Ids = show.Ids, Title = show.Title, Year = show.Year }, Season = new TraktSeason { Ids = season.Ids, Number = season.Number } }); _RatedSeasons = ratedSeasons; }
internal static void RemoveEpisodeFromCollection(TraktShow show, TraktEpisode episode) { if (_CollectedEpisodes == null || show.Ids == null) return; var collectedEpisodes = _CollectedEpisodes.ToList(); collectedEpisodes.RemoveAll(e => (((e.ShowId == show.Ids.Trakt) && e.ShowId != null) || ((e.ShowTvdbId == show.Ids.Tvdb) && e.ShowTvdbId != null)) && e.Season == episode.Season && e.Number == episode.Number); // remove using Title + Year if (show.Ids.Trakt == null && show.Ids.Tvdb == null) { collectedEpisodes.RemoveAll(e => e.ShowTitle.ToLowerInvariant() == show.Title.ToLowerInvariant() && e.ShowYear == show.Year && e.Season == episode.Season && e.Number == episode.Number); } _CollectedEpisodes = collectedEpisodes; }
public static TraktSyncResponse RemoveShowFromCollection(TraktShow show) { var shows = new TraktSyncShows { Shows = new List<TraktShow>() { show } }; return RemoveShowsFromCollecton(shows); }
internal static void AddEpisodeToPausedData(TraktShow show, TraktEpisode episode, float progress) { var pausedEpisodes = (_PausedEpisodes ?? new List<TraktSyncPausedEpisode>()).ToList(); var existingPausedEpisode = pausedEpisodes.FirstOrDefault(e => (((e.Show.Ids.Trakt == show.Ids.Trakt) && e.Show.Ids.Trakt != null) || ((e.Show.Ids.Tvdb == show.Ids.Tvdb) && e.Show.Ids.Tvdb != null)) && e.Episode.Season == episode.Season && e.Episode.Number == episode.Number); // if it exists already, increment the play count only if (existingPausedEpisode != null) { existingPausedEpisode.Progress = progress; existingPausedEpisode.PausedAt = DateTime.UtcNow.ToISO8601(); } else { pausedEpisodes.Add(new TraktSyncPausedEpisode { PausedAt = DateTime.UtcNow.ToISO8601(), Progress = progress, Show = new TraktShow { Ids = show.Ids, Title = show.Title, Year = show.Year }, Episode = new TraktEpisode { Ids = episode.Ids, Number = episode.Number, Season = episode.Season, Title = episode.Title } }); } _PausedEpisodes = pausedEpisodes; }
internal static void RemoveShowFromCollection(TraktShow show) { if (_CollectedEpisodes == null || show.Ids == null) return; var collectedEpisodes = _CollectedEpisodes.ToList(); collectedEpisodes.RemoveAll(s => ((s.ShowId == show.Ids.Trakt) && s.ShowId != null) || ((s.ShowImdbId == show.Ids.Imdb) && s.ShowImdbId.ToNullIfEmpty() != null) || ((s.ShowTvdbId == show.Ids.Tvdb) && s.ShowTvdbId != null)); // remove using Title + Year if (show.Ids.Trakt == null && show.Ids.Imdb.ToNullIfEmpty() == null && show.Ids.Tvdb == null) { collectedEpisodes.RemoveAll(e => e.ShowTitle.ToLowerInvariant() == show.Title.ToLower() && e.ShowYear == show.Year); } _CollectedEpisodes = collectedEpisodes; }
public static int? UserRating(this TraktEpisode episode, TraktShow show) { if (RatedEpisodes == null) return null; // either match by episode id or if not available in cache (which could occur when added by sync caching) by show id and episode/season numbers var ratedEpisode = RatedEpisodes.FirstOrDefault(re => ((re.Episode.Ids.Trakt == episode.Ids.Trakt) && re.Episode.Ids.Trakt != null) || (((re.Show.Ids.Tvdb == show.Ids.Tvdb) && show.Ids.Tvdb != null) && re.Episode.Season == episode.Season && re.Episode.Number == episode.Number)); if (ratedEpisode == null) return null; return ratedEpisode.Rating; }
public static int Plays(this TraktEpisode episode, TraktShow show) { if (WatchedEpisodes == null || show == null) return 0; // we may added a play from a real-time scrobble or added a new play from a sync var watchedEpisodes = WatchedEpisodes.Where(e => (((e.ShowId == show.Ids.Trakt) && e.ShowId != null) || ((e.ShowTvdbId == show.Ids.Tvdb) && show.Ids.Tvdb != null)) && e.Season == episode.Season && e.Number == episode.Number); if (watchedEpisodes == null) return 0; return watchedEpisodes.Sum(e => e.Plays); }
public static bool IsCollected(this TraktEpisode episode, TraktShow show) { if (CollectedEpisodes == null || show == null) return false; return CollectedEpisodes.Any(e => (((e.ShowId == show.Ids.Trakt) && e.ShowId != null) || ((e.ShowTvdbId == show.Ids.Tvdb) && show.Ids.Tvdb != null)) && e.Season == episode.Season && e.Number == episode.Number); }
public static bool IsWatchlisted(this TraktEpisode episode, TraktShow show) { if (WatchListEpisodes == null || show == null) return false; return WatchListEpisodes.Any(e => (((e.Show.Ids.Trakt == show.Ids.Trakt) && e.Show.Ids.Trakt != null) || ((e.Show.Ids.Tvdb == show.Ids.Tvdb) && show.Ids.Tvdb != null)) && e.Episode.Season == episode.Season && e.Episode.Number == episode.Number); }
public static TraktSyncResponse RemoveShowFromWatchlist(TraktShow show) { var shows = new TraktSyncShows { Shows = new List<TraktShow>() { show } }; return RemoveShowsFromWatchlist(shows); }
public static TraktSyncResponse AddShowToWatchlist(TraktShow show) { var shows = new TraktSyncShows { Shows = new List<TraktShow>() { show } }; return AddShowsToWatchlist(shows); }
/// <summary> /// UnRate a single show on trakt.tv /// </summary> public static TraktSyncResponse RemoveShowFromRatings(TraktShow show) { var shows = new TraktSyncShows { Shows = new List<TraktShow>() { new TraktShow { Ids = show.Ids } } }; return RemoveShowsFromRatings(shows); }
internal static void AddEpisodeToCollection(TraktShow show, TraktEpisode episode) { var collectedEpisodes = (_CollectedEpisodes ?? new List<EpisodeCollected>()).ToList(); collectedEpisodes.Add(new EpisodeCollected { Number = episode.Number, Season = episode.Season, ShowId = show.Ids.Trakt, ShowImdbId = show.Ids.Imdb, ShowTvdbId = show.Ids.Tvdb, ShowTitle = show.Title, ShowYear = show.Year, CollectedAt = DateTime.UtcNow.ToISO8601() }); _CollectedEpisodes = collectedEpisodes; }
internal static void AddShowToWatchedHistory(TraktShow show, List<TraktEpisode> episodes) { return; }
internal static void AddEpisodeToRatings(TraktShow show, TraktEpisode episode, int rating) { var ratedEpisodes = (_RatedEpisodes ?? new List<TraktEpisodeRated>()).ToList(); ratedEpisodes.Add(new TraktEpisodeRated { RatedAt = DateTime.UtcNow.ToISO8601(), Rating = rating, Show = new TraktShow { Ids = show.Ids, Title = show.Title, Year = show.Year }, Episode = new TraktEpisode { Ids = episode.Ids, Number = episode.Number, Season = episode.Season, Title = episode.Title } }); _RatedEpisodes = ratedEpisodes; }
internal static void AddShowToWatchlist(TraktShow show) { var watchlistShows = (_WatchListShows ?? new List<TraktShowWatchList>()).ToList(); watchlistShows.Add(new TraktShowWatchList { ListedAt = DateTime.UtcNow.ToISO8601(), Show = new TraktShowSummary { Ids = show.Ids, Title = show.Title, Year = show.Year } }); _WatchListShows = watchlistShows; }
internal static void RemoveShowFromWatchlist(TraktShow show) { if (_WatchListShows == null || show.Ids == null) return; var watchlistShows = _WatchListShows.ToList(); watchlistShows.RemoveAll(s => ((s.Show.Ids.Trakt == show.Ids.Trakt) && s.Show.Ids.Trakt != null) || ((s.Show.Ids.Imdb == show.Ids.Imdb) && s.Show.Ids.Imdb.ToNullIfEmpty() != null) || ((s.Show.Ids.Tvdb == show.Ids.Tvdb) && s.Show.Ids.Tvdb != null)); // remove using Title + Year if (show.Ids.Trakt == null && show.Ids.Imdb.ToNullIfEmpty() == null && show.Ids.Tvdb == null) { watchlistShows.RemoveAll(s => s.Show.Title.ToLowerInvariant() == show.Title.ToLower() && s.Show.Year == show.Year); } _WatchListShows = watchlistShows; }
internal static void AddShowToCollection(TraktShow show, List<TraktEpisode> episodes) { return; }
internal static void RemoveSeasonFromRatings(TraktShow show, TraktSeason season) { if (_RatedSeasons == null || show.Ids == null) return; var ratedSeasons = _RatedSeasons.ToList(); ratedSeasons.RemoveAll(s => (((s.Show.Ids.Trakt == show.Ids.Trakt) && s.Show.Ids.Trakt != null) || ((s.Show.Ids.Imdb == show.Ids.Imdb) && s.Show.Ids.Imdb.ToNullIfEmpty() != null) || ((s.Show.Ids.Tvdb == show.Ids.Tvdb) && s.Show.Ids.Tvdb != null)) && s.Season.Number == season.Number); // remove using Title + Year if (show.Ids.Trakt == null && show.Ids.Imdb.ToNullIfEmpty() == null && show.Ids.Tvdb == null) { ratedSeasons.RemoveAll(s => s.Show.Title.ToLowerInvariant() == show.Title.ToLower() && s.Show.Year == show.Year && s.Season.Number == season.Number); } _RatedSeasons = ratedSeasons; }
internal static void AddShowToRatings(TraktShow show, int rating) { var ratedShows = (_RatedShows ?? new List<TraktShowRated>()).ToList(); ratedShows.Add(new TraktShowRated { RatedAt = DateTime.UtcNow.ToISO8601(), Rating = rating, Show = new TraktShow { Ids = show.Ids, Title = show.Title, Year = show.Year } }); _RatedShows = ratedShows; }
internal static void RemoveEpisodeFromPausedData(TraktShow show, TraktEpisode episode) { if (_PausedEpisodes == null || show.Ids == null) return; var pausedEpisodes = _PausedEpisodes.ToList(); pausedEpisodes.RemoveAll(e => (((e.Show.Ids.Trakt == show.Ids.Trakt) && e.Show.Ids.Trakt != null) || ((e.Show.Ids.Tvdb == show.Ids.Tvdb) && e.Show.Ids.Tvdb != null)) && e.Episode.Season == episode.Season && e.Episode.Number == episode.Number); // remove using Title + Year if (show.Ids.Trakt == null && show.Ids.Tvdb == null) { pausedEpisodes.RemoveAll(e => e.Show.Title.ToLowerInvariant() == show.Title.ToLowerInvariant() && e.Show.Year == show.Year && e.Episode.Season == episode.Season && e.Episode.Number == episode.Number); } _PausedEpisodes = pausedEpisodes; }
public static TraktSyncResponse AddShowToCollection(TraktShow show) { var shows = new TraktSyncShows { Shows = new List<TraktShow>() { show } }; return AddShowsToCollecton(shows); }