コード例 #1
0
        /// <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);
        }
コード例 #2
0
 public static void CheckAndPlayFirstUnwatched(TraktShow show)
 {
     CheckAndPlayFirstUnwatched(show, false);
 }
コード例 #3
0
        public static void MarkShowAsSeen(TraktShow show)
        {
            TraktShowSeen seenShow = new TraktShowSeen
            {
                Tvdb = show.Tvdb,
                Imdb = show.Imdb,
                Title = show.Title,
                Year = show.Year,
                Username = TraktSettings.Username,
                Password = TraktSettings.Password
            };

            Thread seenThread = new Thread(o =>
                {
                    var oShow = o as TraktShowSeen;
                    TraktLogger.Info("Marking {0} as seen", oShow.Title);
                    var response = TraktAPI.TraktAPI.SyncShowAsSeen(oShow);
                    TraktAPI.TraktAPI.LogTraktResponse(response);
                })
                {
                    IsBackground = true,
                    Name = "MarkWatched"
                };

            seenThread.Start(seenShow);
        }
コード例 #4
0
        internal static void SetShowProperties(TraktShow show)
        {
            if (show == null) return;

            SetProperty("#Trakt.Show.Imdb", show.Imdb);
            SetProperty("#Trakt.Show.Tvdb", show.Tvdb);
            SetProperty("#Trakt.Show.TvRage", show.TvRage);
            SetProperty("#Trakt.Show.Title", show.Title.RemapHighOrderChars());
            SetProperty("#Trakt.Show.Url", show.Url);
            SetProperty("#Trakt.Show.AirDay", show.AirDay);
            SetProperty("#Trakt.Show.AirTime", show.AirTime);
            SetProperty("#Trakt.Show.AirTimeLocalized", show.AirTimeLocalized);
            SetProperty("#Trakt.Show.Certification", show.Certification);
            SetProperty("#Trakt.Show.Country", show.Country);
            SetProperty("#Trakt.Show.FirstAired", show.FirstAired.FromEpoch().ToShortDateString());
            SetProperty("#Trakt.Show.Network", show.Network);
            SetProperty("#Trakt.Show.Overview", string.IsNullOrEmpty(show.Overview) ? Translation.NoShowSummary : show.Overview.RemapHighOrderChars());
            SetProperty("#Trakt.Show.Runtime", show.Runtime.ToString());
            SetProperty("#Trakt.Show.Year", show.Year.ToString());
            SetProperty("#Trakt.Show.Genres", string.Join(", ", show.Genres.ToArray()));
            SetProperty("#Trakt.Show.InWatchList", show.InWatchList.ToString());
            SetProperty("#Trakt.Show.Watched", show.Watched.ToString());
            SetProperty("#Trakt.Show.Plays", show.Plays.ToString());
            SetProperty("#Trakt.Show.Rating", show.Rating);
            SetProperty("#Trakt.Show.RatingAdvanced", show.RatingAdvanced.ToString());
            SetProperty("#Trakt.Show.Ratings.Icon", (show.Ratings.LovedCount > show.Ratings.HatedCount) ? "love" : "hate");
            SetProperty("#Trakt.Show.Ratings.HatedCount", show.Ratings.HatedCount.ToString());
            SetProperty("#Trakt.Show.Ratings.LovedCount", show.Ratings.LovedCount.ToString());
            SetProperty("#Trakt.Show.Ratings.Percentage", show.Ratings.Percentage.ToString());
            SetProperty("#Trakt.Show.Ratings.Votes", show.Ratings.Votes.ToString());
            SetProperty("#Trakt.Show.FanartImageFilename", show.Images.FanartImageFilename);
            SetProperty("#Trakt.Show.PosterImageFilename", show.Images.PosterImageFilename);
            SetProperty("#Trakt.Show.BannerImageFilename", show.Images.BannerImageFilename);
        }
コード例 #5
0
        public static void AddShowToLibrary(TraktShow show)
        {
            TraktShowLibrary libShow = new TraktShowLibrary
            {
                Tvdb = show.Tvdb,
                Imdb = show.Imdb,
                Title = show.Title,
                Year = show.Year,
                Username = TraktSettings.Username,
                Password = TraktSettings.Password
            };

            Thread libThread = new Thread(o =>
            {
                var oShow = o as TraktShowLibrary;
                TraktLogger.Info("Adding {0} to library", oShow.Title);
                var response = TraktAPI.TraktAPI.SyncShowAsLibrary(oShow);
                TraktAPI.TraktAPI.LogTraktResponse(response);
            })
            {
                IsBackground = true,
                Name = "AddLibrary"
            };

            libThread.Start(libShow);
        }
コード例 #6
0
        private void RemoveShowFromWatchList(TraktShow show)
        {
            Thread syncThread = new Thread(delegate(object obj)
            {
                TraktAPI.TraktAPI.SyncShowWatchList(CreateSyncData(obj as TraktShow), TraktSyncModes.unwatchlist);
            })
            {
                IsBackground = true,
                Name = "Removing Show from Watch List"
            };

            syncThread.Start(show);
        }
コード例 #7
0
        internal static void CreateTrendingShowsContextMenu(ref IDialogbox dlg, TraktShow show, bool dashboard)
        {
            GUIListItem listItem = null;

            // Add/Remove Watch List
            if (!show.InWatchList)
            {
                listItem = new GUIListItem(Translation.AddToWatchList);
                dlg.Add(listItem);
                listItem.ItemId = (int)TrendingContextMenuItem.AddToWatchList;
            }
            else
            {
                listItem = new GUIListItem(Translation.RemoveFromWatchList);
                dlg.Add(listItem);
                listItem.ItemId = (int)TrendingContextMenuItem.RemoveFromWatchList;
            }

            // Show Season Information
            listItem = new GUIListItem(Translation.ShowSeasonInfo);
            dlg.Add(listItem);
            listItem.ItemId = (int)TrendingContextMenuItem.ShowSeasonInfo;

            // Mark Show as Watched
            listItem = new GUIListItem(Translation.MarkAsWatched);
            dlg.Add(listItem);
            listItem.ItemId = (int)TrendingContextMenuItem.MarkAsWatched;

            // Add Show to Library
            listItem = new GUIListItem(Translation.AddToLibrary);
            dlg.Add(listItem);
            listItem.ItemId = (int)TrendingContextMenuItem.AddToLibrary;

            // Add to Custom List
            listItem = new GUIListItem(Translation.AddToList + "...");
            dlg.Add(listItem);
            listItem.ItemId = (int)TrendingContextMenuItem.AddToList;

            if (TraktHelper.IsOnlineVideosAvailableAndEnabled)
            {
                listItem = new GUIListItem(Translation.Trailers);
                dlg.Add(listItem);
                listItem.ItemId = (int)TrendingContextMenuItem.Trailers;
            }

            // Filters
            if (!dashboard)
            {
                listItem = new GUIListItem(Translation.Filters + "...");
                dlg.Add(listItem);
                listItem.ItemId = (int)TrendingContextMenuItem.Filters;
            }

            // Related Shows
            listItem = new GUIListItem(Translation.RelatedShows + "...");
            dlg.Add(listItem);
            listItem.ItemId = (int)TrendingContextMenuItem.Related;

            // Rate Show
            listItem = new GUIListItem(Translation.RateShow);
            dlg.Add(listItem);
            listItem.ItemId = (int)TrendingContextMenuItem.Rate;

            // Shouts
            listItem = new GUIListItem(Translation.Shouts + "...");
            dlg.Add(listItem);
            listItem.ItemId = (int)TrendingContextMenuItem.Shouts;

            // Change Layout
            if (GUIWindowManager.ActiveWindow == (int)TraktGUIWindows.TrendingShows)
            {
                listItem = new GUIListItem(Translation.ChangeLayout);
                dlg.Add(listItem);
                listItem.ItemId = (int)TrendingContextMenuItem.ChangeLayout;
            }

            if (TraktHelper.IsMpNZBAvailableAndEnabled)
            {
                // Search for show with mpNZB
                listItem = new GUIListItem(Translation.SearchWithMpNZB);
                dlg.Add(listItem);
                listItem.ItemId = (int)TrendingContextMenuItem.SearchWithMpNZB;
            }

            if (TraktHelper.IsMyTorrentsAvailableAndEnabled)
            {
                // Search for show with MyTorrents
                listItem = new GUIListItem(Translation.SearchTorrent);
                dlg.Add(listItem);
                listItem.ItemId = (int)TrendingContextMenuItem.SearchTorrent;
            }
        }
コード例 #8
0
 private bool ShowMatch(DBSeries localShow, TraktShow onlineShow)
 {
     if (onlineShow.Ids.Tvdb != null && onlineShow.Ids.Tvdb > 0)
     {
         return localShow[DBSeries.cID] == onlineShow.Ids.Tvdb;
     }
     else if (BasicHandler.IsValidImdb(onlineShow.Ids.Imdb) && BasicHandler.IsValidImdb(localShow[DBOnlineSeries.cIMDBID]))
     {
         return localShow[DBOnlineSeries.cIMDBID] == onlineShow.Ids.Imdb;
     }
     else
     {
         return BasicHandler.IsTitleMatch(localShow[DBOnlineSeries.cOriginalName], onlineShow.Title, onlineShow.Year) &&
                localShow.Year.ToNullableInt32() == onlineShow.Year;
     }
 }
コード例 #9
0
        private bool GetLoadingParameter()
        {
            if (_loadParameter == null)
            {
                // maybe re-loading, so check previous window id
                if (Show != null && !string.IsNullOrEmpty(Show.Tvdb))
                    return true;

                return false;
            }

            Show = _loadParameter.FromJSON<TraktShow>();
            if (Show == null || string.IsNullOrEmpty(Show.Tvdb)) return false;

            return true;
        }
コード例 #10
0
        private void DismissRecommendation(TraktShow show)
        {
            Thread syncThread = new Thread(delegate(object obj)
            {
                TraktShow dismissShow = obj as TraktShow;

                var response = TraktAPI.TraktAPI.DismissRecommendedShow(dismissShow.Ids.Trakt.ToString());
            })
            {
                IsBackground = true,
                Name = "DismissRecommendation"
            };

            syncThread.Start(show);
        }
コード例 #11
0
        private bool EpisodeMatch(DBEpisode localEpisode, TraktEpisode onlineEpisode, TraktShow onlineShow)
        {
            // episode ids are unreliable on themoviedb.org, they seem to be wrong for quite a few episodes!

            //if (onlineEpisode.Ids.TvdbId != null && onlineEpisode.Ids.TvdbId > 0)
            //{
            //    return localEpisode[DBOnlineEpisode.cID] == onlineEpisode.Ids.TvdbId;
            //}

            //else if (BasicHandler.IsValidImdb(onlineEpisode.Ids.ImdbId) && BasicHandler.IsValidImdb(localEpisode[DBOnlineEpisode.cIMDBID]))
            //{
            //    return BasicHandler.GetProperImdbId(localEpisode[DBOnlineEpisode.cIMDBID]) == onlineEpisode.Ids.ImdbId;
            //}

            if (onlineShow.Ids.Tvdb != null && onlineShow.Ids.Tvdb > 0)
            {
                return localEpisode[DBOnlineEpisode.cSeriesID] == onlineShow.Ids.Tvdb &&
                       localEpisode[DBOnlineEpisode.cSeasonIndex] == onlineEpisode.Season &&
                       localEpisode[DBOnlineEpisode.cEpisodeIndex] == onlineEpisode.Number;
            }
            else if (BasicHandler.IsValidImdb(onlineShow.Ids.Imdb))
            {
                var show = Helper.getCorrespondingSeries(localEpisode[DBOnlineEpisode.cSeriesID]);
                if (show == null) return false;

                return BasicHandler.GetProperImdbId(show[DBOnlineSeries.cIMDBID]) == onlineShow.Ids.Imdb &&
                       localEpisode[DBOnlineEpisode.cSeasonIndex] == onlineEpisode.Season &&
                       localEpisode[DBOnlineEpisode.cEpisodeIndex] == onlineEpisode.Number;
            }
            else
            {
                var show = Helper.getCorrespondingSeries(localEpisode[DBOnlineEpisode.cSeriesID]);
                if (show == null) return false;

                return BasicHandler.IsTitleMatch(show[DBOnlineSeries.cOriginalName], onlineShow.Title, onlineShow.Year) &&
                       show.Year.ToNullableInt32() == onlineShow.Year &&
                       localEpisode[DBOnlineEpisode.cSeasonIndex] == onlineEpisode.Season &&
                       localEpisode[DBOnlineEpisode.cEpisodeIndex] == onlineEpisode.Number;
            }
        }
コード例 #12
0
        public static TraktSyncResponse AddShowToWatchlist(TraktShow show)
        {
            var shows = new TraktSyncShows
            {
                Shows = new List<TraktShow>() { show }
            };

            return AddShowsToWatchlist(shows);
        }
コード例 #13
0
        public static TraktSyncResponse AddShowToCollection(TraktShow show)
        {
            var shows = new TraktSyncShows
            {
                Shows = new List<TraktShow>() { show }
            };

            return AddShowsToCollecton(shows);
        }
コード例 #14
0
        public static TraktSyncResponse RemoveShowFromWatchlist(TraktShow show)
        {
            var shows = new TraktSyncShows
            {
                Shows = new List<TraktShow>() { show }
            };

            return RemoveShowsFromWatchlist(shows);
        }
コード例 #15
0
        private void DismissRecommendation(TraktShow show)
        {
            Thread syncThread = new Thread(delegate(object obj)
            {
                TraktShow dismissShow = obj as TraktShow;

                TraktShowSlug syncShow = new TraktShowSlug
                {
                    UserName = TraktSettings.Username,
                    Password = TraktSettings.Password,
                    IMDbId = dismissShow.Imdb,
                    TVDbId = dismissShow.Tvdb,
                    Title = dismissShow.Title,
                    Year = dismissShow.Year.ToString()
                };

                TraktResponse response = TraktAPI.TraktAPI.DismissShowRecommendation(syncShow);
                TraktAPI.TraktAPI.LogTraktResponse<TraktResponse>(response);
            })
            {
                IsBackground = true,
                Name = "Dismiss Recommendation"
            };

            syncThread.Start(show);
        }
コード例 #16
0
        internal static void CreateShowsContextMenu(ref IDialogbox dlg, TraktShow show, bool dashboard)
        {
            GUIListItem listItem = null;

            // Add/Remove Watchlist
            if (!show.IsWatchlisted())
            {
                listItem = new GUIListItem(Translation.AddToWatchList);
                dlg.Add(listItem);
                listItem.ItemId = (int)MediaContextMenuItem.AddToWatchList;
            }
            else
            {
                listItem = new GUIListItem(Translation.RemoveFromWatchList);
                dlg.Add(listItem);
                listItem.ItemId = (int)MediaContextMenuItem.RemoveFromWatchList;
            }

            // Show Season Information
            listItem = new GUIListItem(Translation.ShowSeasonInfo);
            dlg.Add(listItem);
            listItem.ItemId = (int)MediaContextMenuItem.ShowSeasonInfo;

            // Mark Show as Watched
            listItem = new GUIListItem(Translation.MarkAsWatched);
            dlg.Add(listItem);
            listItem.ItemId = (int)MediaContextMenuItem.MarkAsWatched;

            // Add Show to Library
            listItem = new GUIListItem(Translation.AddToLibrary);
            dlg.Add(listItem);
            listItem.ItemId = (int)MediaContextMenuItem.AddToLibrary;

            // Add to Custom List
            listItem = new GUIListItem(Translation.AddToList);
            dlg.Add(listItem);
            listItem.ItemId = (int)MediaContextMenuItem.AddToList;

            if (TraktHelper.IsTrailersAvailableAndEnabled)
            {
                listItem = new GUIListItem(Translation.Trailers);
                dlg.Add(listItem);
                listItem.ItemId = (int)MediaContextMenuItem.Trailers;
            }

            // Filters
            if (TraktSettings.FilterTrendingOnDashboard || !dashboard)
            {
                listItem = new GUIListItem(Translation.Filters + "...");
                dlg.Add(listItem);
                listItem.ItemId = (int)MediaContextMenuItem.Filters;
            }

            // Related Shows
            listItem = new GUIListItem(Translation.RelatedShows);
            dlg.Add(listItem);
            listItem.ItemId = (int)MediaContextMenuItem.Related;

            // Rate Show
            listItem = new GUIListItem(Translation.RateShow);
            dlg.Add(listItem);
            listItem.ItemId = (int)MediaContextMenuItem.Rate;

            // Comments
            listItem = new GUIListItem(Translation.Comments);
            dlg.Add(listItem);
            listItem.ItemId = (int)MediaContextMenuItem.Shouts;

            // Cast & Crew
            listItem = new GUIListItem(Translation.Cast);
            dlg.Add(listItem);
            listItem.ItemId = (int)MediaContextMenuItem.Cast;

            listItem = new GUIListItem(Translation.Crew);
            dlg.Add(listItem);
            listItem.ItemId = (int)MediaContextMenuItem.Crew;

            // Change Layout
            if (!dashboard)
            {
                listItem = new GUIListItem(Translation.ChangeLayout);
                dlg.Add(listItem);
                listItem.ItemId = (int)MediaContextMenuItem.ChangeLayout;
            }

            if (TraktHelper.IsMpNZBAvailableAndEnabled)
            {
                // Search for show with mpNZB
                listItem = new GUIListItem(Translation.SearchWithMpNZB);
                dlg.Add(listItem);
                listItem.ItemId = (int)MediaContextMenuItem.SearchWithMpNZB;
            }

            if (TraktHelper.IsMyTorrentsAvailableAndEnabled)
            {
                // Search for show with MyTorrents
                listItem = new GUIListItem(Translation.SearchTorrent);
                dlg.Add(listItem);
                listItem.ItemId = (int)MediaContextMenuItem.SearchTorrent;
            }
        }
コード例 #17
0
 private void PublishShowSkinProperties(TraktShow show)
 {
     GUICommon.SetShowProperties(show);
 }
コード例 #18
0
        public static void AddSeasonToLibrary(TraktShow show, int season)
        {
            if (!GUICommon.CheckLogin(false)) return;

            var seenThread = new Thread(obj =>
            {
                var objShow = obj as TraktShow;

                var syncData = new TraktSyncShowEx
                {
                    Ids = new TraktShowId
                    {
                        Trakt = objShow.Ids.Trakt,
                        Imdb = objShow.Ids.Imdb.ToNullIfEmpty(),
                        Tmdb = objShow.Ids.Tmdb,
                        Tvdb = objShow.Ids.Tvdb,
                        TvRage = objShow.Ids.TvRage
                    },
                    Title = show.Title,
                    Year = show.Year,
                    Seasons = new List<TraktSyncShowEx.Season>()
                };

                var seasonObj = new TraktSyncShowEx.Season
                {
                    Number = season
                };
                syncData.Seasons.Add(seasonObj);

                TraktLogger.Info("Adding all episodes in season from show to trakt.tv collection. Title = '{0}', Year = '{1}', IMDb ID = '{2}', TVDb ID = '{3}', TMDb ID = '{4}', Season = '{5}'",
                                    show.Title, show.Year.ToLogString(), show.Ids.Imdb.ToLogString(), show.Ids.Tvdb.ToLogString(), show.Ids.Tmdb.ToLogString(), season);

                var response = TraktAPI.TraktAPI.AddShowToCollectionEx(syncData);
                TraktLogger.LogTraktResponse(response);
            })
            {
                IsBackground = true,
                Name = "AddCollection"
            };

            seenThread.Start(show);
        }
コード例 #19
0
        private TraktSyncAll GetSyncItems(TraktListItem listItem)
        {
            var syncItems = new TraktSyncAll();

            switch (listItem.Type)
            {
                case "movie":
                    var movie = new TraktMovie
                    {
                        Ids = new TraktMovieId { Trakt = listItem.Movie.Ids.Trakt }
                    };
                    syncItems.Movies = new List<TraktMovie>();
                    syncItems.Movies.Add(movie);
                    break;

                case "show":
                    var show = new TraktShow
                    {
                        Ids = new TraktShowId { Trakt = listItem.Show.Ids.Trakt }
                    };
                    syncItems.Shows = new List<TraktShow>();
                    syncItems.Shows.Add(show);
                    break;

                case "season":
                    var season = new TraktSeason
                    {
                        Ids = new TraktSeasonId { Trakt = listItem.Season.Ids.Trakt }
                    };
                    syncItems.Seasons = new List<TraktSeason>();
                    syncItems.Seasons.Add(season);
                    break;

                case "episode":
                    var episode = new TraktEpisode
                    {
                        Ids = new TraktEpisodeId { Trakt = listItem.Episode.Ids.Trakt }
                    };
                    syncItems.Episodes = new List<TraktEpisode>();
                    syncItems.Episodes.Add(episode);
                    break;

                case "person":
                    var person = new TraktPerson
                    {
                        Ids = new TraktPersonId { Trakt = listItem.Person.Ids.Trakt }
                    };
                    syncItems.People = new List<TraktPerson>();
                    syncItems.People.Add(person);
                    break;
            }

            return syncItems;
        }
コード例 #20
0
        public static void MarkShowAsWatched(TraktShow show)
        {
            if (!GUICommon.CheckLogin(false)) return;

            var seenThread = new Thread(obj =>
            {
                var objShow = obj as TraktShow;

                var syncData = new TraktShow
                {
                    Ids = new TraktShowId
                    {
                        Trakt = objShow.Ids.Trakt,
                        Imdb = objShow.Ids.Imdb.ToNullIfEmpty(),
                        Tmdb = objShow.Ids.Tmdb,
                        Tvdb = objShow.Ids.Tvdb,
                        TvRage = objShow.Ids.TvRage
                    },
                    Title = show.Title,
                    Year = show.Year
                };

                TraktLogger.Info("Adding all episodes from show to trakt.tv watched history. Title = '{0}', Year = '{1}', IMDb ID = '{2}', TVDb ID = '{3}', TMDb ID = '{4}'",
                                    show.Title, show.Year.ToLogString(), show.Ids.Imdb.ToLogString(), show.Ids.Tvdb.ToLogString(), show.Ids.Tmdb.ToLogString());

                var response = TraktAPI.TraktAPI.AddShowToWatchedHistory(syncData);
                TraktLogger.LogTraktResponse(response);
            })
            {
                IsBackground = true,
                Name = "MarkWatched"
            };

            seenThread.Start(show);
        }
コード例 #21
0
        internal static bool RateShow(TraktShow show)
        {
            TraktRateSeries rateObject = new TraktRateSeries
            {
                SeriesID = show.Tvdb,
                Title = show.Title,
                Year = show.Year.ToString(),
                Rating = show.RatingAdvanced.ToString(),
                UserName = TraktSettings.Username,
                Password = TraktSettings.Password
            };

            int prevRating = show.RatingAdvanced;
            int newRating = int.Parse(GUIUtils.ShowRateDialog<TraktRateSeries>(rateObject));
            if (newRating == -1) return false;

            // If previous rating not equal to current rating then
            // update skin properties to reflect changes
            // This is not really needed but saves waiting for response
            // from server to calculate fields...we can do it ourselves

            if (prevRating != newRating)
            {
                show.RatingAdvanced = newRating;

                // if not rated previously bump up the votes
                if (prevRating == 0)
                {
                    show.Ratings.Votes++;
                    if (show.RatingAdvanced > 5)
                    {
                        show.Rating = "love";
                        show.Ratings.LovedCount++;
                    }
                    else
                    {
                        show.Rating = "hate";
                        show.Ratings.HatedCount++;
                    }
                }

                if (prevRating != 0 && prevRating > 5 && newRating <= 5)
                {
                    show.Rating = "hate";
                    show.Ratings.LovedCount--;
                    show.Ratings.HatedCount++;
                }

                if (prevRating != 0 && prevRating <= 5 && newRating > 5)
                {
                    show.Rating = "love";
                    show.Ratings.LovedCount++;
                    show.Ratings.HatedCount--;
                }

                if (newRating == 0)
                {
                    if (prevRating <= 5) show.Ratings.HatedCount++;
                    show.Ratings.Votes--;
                    show.Rating = "false";
                }

                // Could be in-accurate, best guess
                if (prevRating == 0)
                {
                    show.Ratings.Percentage = (int)Math.Round(((show.Ratings.Percentage * (show.Ratings.Votes - 1)) + (10 * newRating)) / (float)show.Ratings.Votes);
                }
                else
                {
                    show.Ratings.Percentage = (int)Math.Round(((show.Ratings.Percentage * (show.Ratings.Votes)) + (10 * newRating) - (10 * prevRating)) / (float)show.Ratings.Votes);
                }

                return true;
            }

            return false;
        }
コード例 #22
0
        private TraktShowSync CreateShowSyncData(TraktShow show)
        {
            TraktShowSync.Show showToSync = new TraktShowSync.Show
            {
                Title = show.Title,
                TVDBID = show.Tvdb,
                Year = show.Year
            };

            TraktShowSync syncData = new TraktShowSync
            {
                UserName = TraktSettings.Username,
                Password = TraktSettings.Password,
                Shows = new List<TraktShowSync.Show> { showToSync }
            };
            return syncData;
        }
コード例 #23
0
        public static void AddSeasonToLibrary(TraktShow show, int season)
        {
            TraktSeasonLibrary libSeason = new TraktSeasonLibrary
            {
                Season = season,
                Tvdb = show.Tvdb,
                Imdb = show.Imdb,
                Title = show.Title,
                Year = show.Year,
                Username = TraktSettings.Username,
                Password = TraktSettings.Password
            };

            Thread libThread = new Thread(o =>
            {
                var oSeason = o as TraktSeasonLibrary;
                TraktLogger.Info("Adding {0} season {1} to library", oSeason.Title, oSeason.Season);
                var response = TraktAPI.TraktAPI.SyncSeasonAsLibrary(oSeason);
                TraktAPI.TraktAPI.LogTraktResponse(response);
            })
            {
                IsBackground = true,
                Name = "AddLibrary"
            };

            libThread.Start(libSeason);
        }
コード例 #24
0
        private bool GetLoadingParameter()
        {
            if (_loadParameter == null)
            {
                // maybe re-loading, so check previous window id
                if (Show != null && !string.IsNullOrEmpty(Show.Tvdb) && Season != null)
                    return true;

                return false;
            }

            var loadingParam = _loadParameter.FromJSON<SeasonLoadingParameter>();
            if (loadingParam == null) return false;

            // reset previous selected index
            if (Show != null && Season != null)
            {
                if (Show.Title != loadingParam.Show.Title || Season.Season != loadingParam.Season.Season)
                    PreviousSelectedIndex = 0;
            }

            Show = loadingParam.Show;
            Season = loadingParam.Season;
            if (Show == null || string.IsNullOrEmpty(Show.Tvdb) || Season == null) return false;

            return true;
        }
コード例 #25
0
 public static void CheckAndPlayEpisode(TraktShow show, TraktEpisode episode)
 {
     if (show == null || episode == null) return;
     CheckAndPlayEpisode(Convert.ToInt32(show.Tvdb), string.IsNullOrEmpty(show.Imdb) ? show.Title : show.Imdb, episode.Season, episode.Number, show.Title);
 }
コード例 #26
0
        private void AddShowToWatchList(TraktShow show)
        {
            Thread syncThread = new Thread(delegate(object obj)
            {
                TraktAPI.TraktAPI.SyncShowWatchList(CreateSyncData(obj as TraktShow), TraktSyncModes.watchlist);
            })
            {
                IsBackground = true,
                Name = "Adding Show to Watch List"
            };

            syncThread.Start(show);
        }
コード例 #27
0
 public static void CheckAndPlayFirstUnwatched(TraktShow show, bool jumpTo)
 {
     if (show == null) return;
     CheckAndPlayFirstUnwatched(Convert.ToInt32(show.Tvdb), string.IsNullOrEmpty(show.Imdb) ? show.Title : show.Imdb, jumpTo, show.Title);
 }
コード例 #28
0
        private TraktShowSync CreateSyncData(TraktShow show)
        {
            if (show == null) return null;

            List<TraktShowSync.Show> shows = new List<TraktShowSync.Show>();

            TraktShowSync.Show syncShow = new TraktShowSync.Show
            {
                TVDBID = show.Tvdb,
                Title = show.Title,
                Year = show.Year
            };
            shows.Add(syncShow);

            TraktShowSync syncData = new TraktShowSync
            {
                UserName = TraktSettings.Username,
                Password = TraktSettings.Password,
                Shows = shows
            };

            return syncData;
        }
コード例 #29
0
        public static void ShowTVShowTrailersMenu(TraktShow show, TraktEpisode episode = null)
        {
            IDialogbox dlg = (IDialogbox)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU);
            dlg.Reset();
            dlg.SetHeading(Translation.Trailer);

            foreach (TrailerSiteShows site in Enum.GetValues(typeof(TrailerSiteShows)))
            {
                string menuItem = Enum.GetName(typeof(TrailerSiteShows), site);
                GUIListItem pItem = new GUIListItem(menuItem);
                dlg.Add(pItem);
            }

            dlg.DoModal(GUIWindowManager.ActiveWindow);

            if (dlg.SelectedLabel >= 0)
            {
                string siteUtil = string.Empty;
                string searchParam = string.Empty;

                switch (dlg.SelectedLabelText)
                {
                    case ("IMDb"):
                        siteUtil = "IMDb Movie Trailers";
                        if (!string.IsNullOrEmpty(show.Imdb))
                            // Exact search
                            searchParam = show.Imdb;
                        else
                            searchParam = show.Title;
                        break;

                    case ("YouTube"):
                        siteUtil = "YouTube";
                        searchParam = show.Title;
                        if (episode != null)
                        {
                            searchParam += string.Format(" S{0}E{1}", episode.Season.ToString("D2"), episode.Number.ToString("D2"));
                        }
                        break;
                }

                string loadingParam = string.Format("site:{0}|search:{1}|return:Locked", siteUtil, searchParam);

                // Launch OnlineVideos Trailer search
                GUIWindowManager.ActivateWindow((int)ExternalPluginWindows.OnlineVideos, loadingParam);
            }
        }
コード例 #30
0
        public static TraktSyncResponse RemoveShowFromCollection(TraktShow show)
        {
            var shows = new TraktSyncShows
            {
                Shows = new List<TraktShow>() { show }
            };

            return RemoveShowsFromCollecton(shows);
        }