Esempio n. 1
0
    public static void AddEpisodesToCollection(TraktSyncShowCollectedEx show)
    {
      var collectedEpisodes = (_CollectedEpisodes ?? new List<EpisodeCollected>()).ToList();
      var episodesToAdd = new List<EpisodeCollected>();

      foreach (var season in show.Seasons)
      {
        foreach (var episode in season.Episodes)
        {
          episodesToAdd.Add(new EpisodeCollected
          {
            Number = episode.Number,
            Season = season.Number,
            ShowId = show.Ids.Trakt,
            ShowImdbId = show.Ids.Imdb,
            ShowTvdbId = show.Ids.Tvdb,
            ShowTitle = show.Title,
            ShowYear = show.Year,
            CollectedAt = episode.CollectedAt ?? DateTime.UtcNow.ToISO8601()
          });
        }
      }

      collectedEpisodes.AddRange(episodesToAdd);

      _CollectedEpisodes = collectedEpisodes;
    }
Esempio n. 2
0
    /// <summary>
    /// Returns a list of shows for collection sync as show objects with season / episode hierarchy
    /// </summary>
    private TraktSyncShowsCollectedEx GetCollectedShowsForSyncEx(IList<MediaItem> localCollectedEpisodes, List<TraktCache.EpisodeCollected> traktEpisodesCollected)
    {
      TraktLogger.Info("Finding local episodes to add to trakt.tv collection");

      // prepare new sync object
      var syncCollectedEpisodes = new TraktSyncShowsCollectedEx();
      syncCollectedEpisodes.Shows = new List<TraktSyncShowCollectedEx>();

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

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

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

        // check if not collected 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 = syncCollectedEpisodes.Shows.FirstOrDefault(sce => sce.Ids != null && sce.Ids.Tvdb == GetSeriesTvdbId(episode));
          if (syncShow == null)
          {
            // get show data from episode
            var show = GetSeriesTvdbId(episode);
            if (show == 0) continue;

            // create new show
            syncShow = new TraktSyncShowCollectedEx
            {
              Ids = new TraktShowId
              {
                Tvdb = GetSeriesTvdbId(episode),
                Imdb = GetSeriesImdbId(episode)
              },
              Title = GetSeriesTitle(episode),
             // Year = GetSeriesTitleAndYear(episode, )
            };

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

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

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

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

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

          // add episode to season
          syncSeason.Episodes.Add(new TraktSyncShowCollectedEx.Season.Episode
          {
            Number = GetEpisodeIndex(episode),
            CollectedAt =  GetDateAddedToDb(episode),
            MediaType = GetVideoMediaType(episode),
            Resolution = GetVideoResolution(episode),
            AudioCodec = GetVideoAudioCodec(episode),
            AudioChannels = "",
            Is3D = false
          });
        }
      }
      return syncCollectedEpisodes;
    }