예제 #1
0
        private TraktEpisodeSync CreateSyncData(KeyValuePair <TraktShow, TraktWatchListEpisode.Episode> item)
        {
            var series  = item.Key;
            var episode = item.Value;

            List <TraktEpisodeSync.Episode> episodes = new List <TraktEpisodeSync.Episode>();

            TraktEpisodeSync.Episode ep = new TraktEpisodeSync.Episode
            {
                EpisodeIndex = episode.Number.ToString(),
                SeasonIndex  = episode.Season.ToString()
            };
            episodes.Add(ep);

            TraktEpisodeSync syncData = new TraktEpisodeSync
            {
                UserName    = TraktSettings.Username,
                Password    = TraktSettings.Password,
                SeriesID    = series.Tvdb,
                Title       = series.Title,
                Year        = series.Year.ToString(),
                EpisodeList = episodes
            };

            return(syncData);
        }
        private TraktEpisodeSync CreateEpisodeSyncData(TraktUserListItem item)
        {
            if (item == null)
            {
                return(null);
            }

            TraktEpisodeSync.Episode syncEpisode = new TraktEpisodeSync.Episode
            {
                EpisodeIndex = item.EpisodeNumber.ToString(),
                SeasonIndex  = item.SeasonNumber.ToString()
            };

            TraktEpisodeSync syncData = new TraktEpisodeSync
            {
                UserName    = TraktSettings.Username,
                Password    = TraktSettings.Password,
                SeriesID    = item.Show.Tvdb,
                Title       = item.Show.Title,
                Year        = item.Year,
                EpisodeList = new List <TraktEpisodeSync.Episode> {
                    syncEpisode
                }
            };

            return(syncData);
        }
예제 #3
0
        /// <summary>
        /// Creates Sync Data based on Series object and a List of Episode objects
        /// </summary>
        /// <param name="series">The series to base the object on</param>
        /// <param name="epsiodes">The list of episodes to base the object on</param>
        /// <returns>The Trakt Sync data to send</returns>
        private TraktEpisodeSync CreateSyncData(AnimeSeries series, List <FileLocal> episodes)
        {
            if (series == null || series.TvDB_ID == null)
            {
                return(null);
            }

            // set series properties for episodes
            TraktEpisodeSync traktSync = new TraktEpisodeSync
            {
                Password = TraktSettings.Password,
                UserName = TraktSettings.Username,
                SeriesID = series.TvDB_ID.ToString(),
                Year     = GetStartYear(series),
                Title    = series.SeriesName
            };

            // get list of episodes for series
            List <TraktEpisodeSync.Episode> epList = new List <TraktEpisodeSync.Episode>();

            foreach (FileLocal file in episodes.Where(e => (e.AniDB_File != null && e.AniDB_File.AnimeSeries.TvDB_ID == series.TvDB_ID)))
            {
                TraktEpisodeSync.Episode episode = new TraktEpisodeSync.Episode();

                // can have multiple episodes linked to a file?
                foreach (var ep in file.AnimeEpisodes)
                {
                    string seriesid   = series.TvDB_ID.ToString();
                    int    seasonidx  = 0;
                    int    episodeidx = 0;

                    if (GetTVDBEpisodeInfo(ep, out seriesid, out seasonidx, out episodeidx))
                    {
                        episode.SeasonIndex  = seasonidx.ToString();
                        episode.EpisodeIndex = episodeidx.ToString();
                        epList.Add(episode);
                    }
                    else
                    {
                        TraktLogger.Info("Unable to find match for episode: '{0} | airDate: {1}'", ep.ToString(), ep.AniDB_Episode.AirDateAsDate.ToString("yyyy-MM-dd"));
                    }
                }
            }

            if (epList.Count == 0)
            {
                TraktLogger.Warning("Unable to find any matching TVDb episodes for series '{0}', confirm Absolute Order and/or Episode Names and/or AirDates for episodes are correct on http://theTVDb.com and your database.", series.SeriesName);
                return(null);
            }

            traktSync.EpisodeList = epList;
            return(traktSync);
        }
예제 #4
0
        /// <summary>
        /// Removes episodes on trakt that no longer exist in users database
        /// </summary>
        /// <param name="traktShows">trakt episode collection</param>
        /// <param name="episodes">list of local episodes</param>
        /// <param name="seriesID">tvdb series id of series</param>
        /// <returns>true if episode exists</returns>
        private TraktEpisodeSync GetEpisodesForTraktRemoval(TraktLibraryShow traktShow, List <FileLocal> episodes)
        {
            List <TraktEpisodeSync.Episode> episodeList = new List <TraktEpisodeSync.Episode>();

            foreach (var season in traktShow.Seasons)
            {
                foreach (var episode in season.Episodes)
                {
                    var query = episodes.Where(e => e.AniDB_File != null && e.AniDB_File.AnimeSeries.TvDB_ID.ToString() == traktShow.SeriesId &&
                                               e.AniDB_File.AnimeSeries.TvDB_Episodes.Where(t => !string.IsNullOrEmpty(t.Filename) && t.SeasonNumber == season.Season && t.EpisodeNumber == episode).Count() == 1).ToList();

                    if (query.Count == 0)
                    {
                        // we dont have the episode anymore
                        TraktLogger.Info("{0} - {1}x{2} does not exist in local database, marked for removal from trakt", traktShow.ToString(), season.Season.ToString(), episode.ToString());

                        TraktEpisodeSync.Episode ep = new TraktEpisodeSync.Episode
                        {
                            EpisodeIndex = episode.ToString(),
                            SeasonIndex  = season.Season.ToString()
                        };
                        episodeList.Add(ep);
                    }
                }
            }

            if (episodeList.Count > 0)
            {
                TraktEpisodeSync syncData = new TraktEpisodeSync
                {
                    UserName    = TraktSettings.Username,
                    Password    = TraktSettings.Password,
                    SeriesID    = traktShow.SeriesId,
                    EpisodeList = episodeList
                };
                return(syncData);
            }
            return(null);
        }
예제 #5
0
        private TraktEpisodeSync CreateEpisodeSyncData(TraktEpisode episode)
        {
            List <TraktEpisodeSync.Episode> episodes = new List <TraktEpisodeSync.Episode>();

            TraktEpisodeSync.Episode ep = new TraktEpisodeSync.Episode
            {
                EpisodeIndex = episode.Number.ToString(),
                SeasonIndex  = episode.Season.ToString()
            };
            episodes.Add(ep);

            TraktEpisodeSync syncData = new TraktEpisodeSync
            {
                UserName    = TraktSettings.Username,
                Password    = TraktSettings.Password,
                SeriesID    = Show.Tvdb,
                Title       = Show.Title,
                Year        = Show.Year.ToString(),
                EpisodeList = episodes
            };

            return(syncData);
        }