Exemplo n.º 1
0
        /// <summary>
        /// Returns a list of shows for rating sync as show objects with season / episode hierarchy
        /// </summary>
        private TraktSyncShowsRatedEx GetRatedEpisodesForSyncEx(List<DBEpisode> localRatedEpisodes, List<TraktEpisodeRated> traktEpisodesRated)
        {
            TraktLogger.Info("Finding local episodes to add to trakt.tv ratings");

            // prepare new sync object
            var syncRatedEpisodes = new TraktSyncShowsRatedEx();
            syncRatedEpisodes.Shows = new List<TraktSyncShowRatedEx>();

            // filter out any invalid episodes or ignored series by user
            var episodes = localRatedEpisodes.Where(lre => lre[DBOnlineEpisode.cEpisodeIndex] != "" &&
                                                           lre[DBOnlineEpisode.cEpisodeIndex] != "0").ToList();

            // create a unique key to lookup and search for faster
            var onlineEpisodes = traktEpisodesRated.ToLookup(tre => CreateLookupKey(tre), tre => tre);

            foreach (var episode in episodes)
            {
                string tvdbKey = CreateLookupKey(episode);

                var traktEpisode = onlineEpisodes[tvdbKey].FirstOrDefault();

                // check if not rated on trakt and add it to sync list
                if (traktEpisode == null)
                {
                    // check if we already have the show added to our sync object
                    var syncShow = syncRatedEpisodes.Shows.FirstOrDefault(sre => sre.Ids != null && sre.Ids.Tvdb == episode[DBOnlineEpisode.cSeriesID]);
                    if (syncShow == null)
                    {
                        // get show data from episode
                        var show = Helper.getCorrespondingSeries(episode[DBOnlineEpisode.cSeriesID]);
                        if (show == null) continue;

                        // create new show
                        syncShow = new TraktSyncShowRatedEx
                        {
                            Ids = new TraktShowId
                            {
                                Tvdb = show[DBSeries.cID],
                                Imdb = BasicHandler.GetProperImdbId(show[DBOnlineSeries.cIMDBID])
                            },
                            Title = show[DBOnlineSeries.cOriginalName],
                            Year = show.Year.ToNullableInt32()
                        };

                        // add a new season collection to show object
                        syncShow.Seasons = new List<TraktSyncShowRatedEx.Season>();

                        // add show to the collection
                        syncRatedEpisodes.Shows.Add(syncShow);
                    }

                    // check if season exists in show sync object
                    var syncSeason = syncShow.Seasons.FirstOrDefault(ss => ss.Number == episode[DBOnlineEpisode.cSeasonIndex]);
                    if (syncSeason == null)
                    {
                        // create new season
                        syncSeason = new TraktSyncShowRatedEx.Season
                        {
                            Number = episode[DBOnlineEpisode.cSeasonIndex]
                        };

                        // add a new episode collection to season object
                        syncSeason.Episodes = new List<TraktSyncShowRatedEx.Season.Episode>();

                        // add season to the show
                        syncShow.Seasons.Add(syncSeason);
                    }

                    // add episode to season
                    syncSeason.Episodes.Add(new TraktSyncShowRatedEx.Season.Episode
                    {
                        Number = episode[DBOnlineEpisode.cEpisodeIndex],
                        Rating = episode[DBOnlineEpisode.cMyRating],
                        RatedAt = DateTime.UtcNow.ToISO8601()
                    });
                }
            }

            return syncRatedEpisodes;
        }
Exemplo n.º 2
0
 public static TraktSyncResponse AddShowsToRatingsEx(TraktSyncShowsRatedEx shows)
 {
     var response = PostToTrakt(TraktURIs.SyncRatingsAdd, shows.ToJSON());
     return response.FromJSON<TraktSyncResponse>();
 }
Exemplo n.º 3
0
 public static TraktSyncResponse RemoveShowsFromRatingsEx(TraktSyncShowsRatedEx shows)
 {
     var response = PostToTrakt(TraktURIs.SyncRatingsRemove, shows.ToJSON());
     return response.FromJSON<TraktSyncResponse>();
 }
Exemplo n.º 4
0
        /// <summary>
        /// Rate a single episode on trakt.tv (with show info)
        /// </summary>
        public static TraktSyncResponse AddEpisodeToRatingsEx(TraktSyncShowRatedEx item)
        {
            var episodes = new TraktSyncShowsRatedEx
            {
                Shows = new List<TraktSyncShowRatedEx>() { item }
            };

            return AddShowsToRatingsEx(episodes);
        }
Exemplo n.º 5
0
        /// <summary>
        /// UnRate a single episode on trakt.tv (with show info)
        /// </summary>
        public static TraktSyncResponse RemoveEpisodeFromRatingsEx(TraktSyncShowRatedEx item)
        {
            var episodes = new TraktSyncShowsRatedEx
            {
                Shows = new List<TraktSyncShowRatedEx>() { item }
            };

            return RemoveShowsFromRatingsEx(episodes);
        }