private void PopulateCrossRefs() { try { CrossRef_AniDB_TraktV2Repository repCrossRef = new CrossRef_AniDB_TraktV2Repository(); crossRefTraktV2 = repCrossRef.GetByAnimeID(AnimeID); } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); } }
public static List<TraktV2Comment> GetShowCommentsV2(ISession session, int animeID) { List<TraktV2Comment> ret = new List<TraktV2Comment>(); try { if (!ServerSettings.Trakt_IsEnabled || string.IsNullOrEmpty(ServerSettings.Trakt_AuthToken)) return ret; CrossRef_AniDB_TraktV2Repository repXrefTrakt = new CrossRef_AniDB_TraktV2Repository(); List<CrossRef_AniDB_TraktV2> traktXRefs = repXrefTrakt.GetByAnimeID(session, animeID); if (traktXRefs == null || traktXRefs.Count == 0) return null; // get a unique list of trakt id's List<string> ids = new List<string>(); foreach (CrossRef_AniDB_TraktV2 xref in traktXRefs) { if (!ids.Contains(xref.TraktID)) ids.Add(xref.TraktID); } foreach (string id in ids) { bool morePages = true; int curPage = 0; while (morePages) { curPage++; string url = string.Format(TraktURIs.ShowComments, id, curPage, TraktConstants.PaginationLimit); logger.Trace("GetShowComments: {0}", url); string json = GetFromTrakt(url); if (string.IsNullOrEmpty(json)) return null; var resultComments = json.FromJSONArray<TraktV2Comment>(); if (resultComments != null) { List<TraktV2Comment> thisComments = new List<TraktV2Comment>(resultComments); ret.AddRange(thisComments); if (thisComments.Count == TraktConstants.PaginationLimit) morePages = true; else morePages = false; } else morePages = false; } } } catch (Exception ex) { logger.ErrorException("Error in TraktTVHelper.GetShowComments: " + ex.ToString(), ex); } return ret; }
public static string LinkAniDBTvDB(int animeID, enEpisodeType aniEpType, int aniEpNumber, int tvDBID, int tvSeasonNumber, int tvEpNumber, bool excludeFromWebCache) { using (var session = JMMService.SessionFactory.OpenSession()) { CrossRef_AniDB_TvDBV2Repository repCrossRef = new CrossRef_AniDB_TvDBV2Repository(); List<CrossRef_AniDB_TvDBV2> xrefTemps = repCrossRef.GetByAnimeIDEpTypeEpNumber(session, animeID, (int)aniEpType, aniEpNumber); if (xrefTemps != null && xrefTemps.Count > 0) { foreach (CrossRef_AniDB_TvDBV2 xrefTemp in xrefTemps) { // delete the existing one if we are updating TvDBHelper.RemoveLinkAniDBTvDB(xrefTemp.AnimeID, (enEpisodeType)xrefTemp.AniDBStartEpisodeType, xrefTemp.AniDBStartEpisodeNumber, xrefTemp.TvDBID, xrefTemp.TvDBSeasonNumber, xrefTemp.TvDBStartEpisodeNumber); } } // check if we have this information locally // if not download it now TvDB_SeriesRepository repSeries = new TvDB_SeriesRepository(); TvDB_Series tvSeries = repSeries.GetByTvDBID(tvDBID); if (tvSeries == null) { // we download the series info here just so that we have the basic info in the // database before the queued task runs later tvSeries = GetSeriesInfoOnline(tvDBID); } // download and update series info, episode info and episode images // will also download fanart, posters and wide banners CommandRequest_TvDBUpdateSeriesAndEpisodes cmdSeriesEps = new CommandRequest_TvDBUpdateSeriesAndEpisodes(tvDBID, false); cmdSeriesEps.Save(); CrossRef_AniDB_TvDBV2 xref = repCrossRef.GetByTvDBID(session, tvDBID, tvSeasonNumber, tvEpNumber, animeID, (int)aniEpType, aniEpNumber); if (xref == null) xref = new CrossRef_AniDB_TvDBV2(); xref.AnimeID = animeID; xref.AniDBStartEpisodeType = (int)aniEpType; xref.AniDBStartEpisodeNumber = aniEpNumber; xref.TvDBID = tvDBID; xref.TvDBSeasonNumber = tvSeasonNumber; xref.TvDBStartEpisodeNumber = tvEpNumber; if (tvSeries != null) xref.TvDBTitle = tvSeries.SeriesName; if (excludeFromWebCache) xref.CrossRefSource = (int)CrossRefSource.WebCache; else xref.CrossRefSource = (int)CrossRefSource.User; repCrossRef.Save(xref); StatsCache.Instance.UpdateUsingAnime(animeID); logger.Trace("Changed tvdb association: {0}", animeID); if (!excludeFromWebCache) { CommandRequest_WebCacheSendXRefAniDBTvDB req = new CommandRequest_WebCacheSendXRefAniDBTvDB(xref.CrossRef_AniDB_TvDBV2ID); req.Save(); } if (ServerSettings.Trakt_IsEnabled && !string.IsNullOrEmpty(ServerSettings.Trakt_AuthToken)) { CrossRef_AniDB_TraktV2Repository repTraktXrefs = new CrossRef_AniDB_TraktV2Repository(); if (repTraktXrefs.GetByAnimeID(animeID).Count == 0) { // check for Trakt associations CommandRequest_TraktSearchAnime cmd2 = new CommandRequest_TraktSearchAnime(animeID, false); cmd2.Save(session); } } } return ""; }
/// <summary> /// Sends the current user's Trakt links to the web cache, and then admin approves them /// </summary> /// <returns></returns> public string UseMyTraktLinksWebCache(int animeID) { try { // Get all the links for this user and anime CrossRef_AniDB_TraktV2Repository repCrossRef = new CrossRef_AniDB_TraktV2Repository(); List<CrossRef_AniDB_TraktV2> xrefs = repCrossRef.GetByAnimeID(animeID); if (xrefs == null) return "No Links found to use"; AniDB_AnimeRepository repAnime = new AniDB_AnimeRepository(); AniDB_Anime anime = repAnime.GetByAnimeID(animeID); if (anime == null) return "Anime not found"; // make sure the user doesn't alreday have links List<JMMServer.Providers.Azure.CrossRef_AniDB_Trakt> results = JMMServer.Providers.Azure.AzureWebAPI.Admin_Get_CrossRefAniDBTrakt(animeID); bool foundLinks = false; if (results != null) { foreach (JMMServer.Providers.Azure.CrossRef_AniDB_Trakt xref in results) { if (xref.Username.Equals(ServerSettings.AniDB_Username, StringComparison.InvariantCultureIgnoreCase)) { foundLinks = true; break; } } } if (foundLinks) return "Links already exist, please approve them instead"; // send the links to the web cache foreach (CrossRef_AniDB_TraktV2 xref in xrefs) { Providers.Azure.AzureWebAPI.Send_CrossRefAniDBTrakt(xref, anime.MainTitle); } // now get the links back from the cache and approve them results = JMMServer.Providers.Azure.AzureWebAPI.Admin_Get_CrossRefAniDBTrakt(animeID); if (results != null) { List<JMMServer.Providers.Azure.CrossRef_AniDB_Trakt> linksToApprove = new List<Providers.Azure.CrossRef_AniDB_Trakt>(); foreach (JMMServer.Providers.Azure.CrossRef_AniDB_Trakt xref in results) { if (xref.Username.Equals(ServerSettings.AniDB_Username, StringComparison.InvariantCultureIgnoreCase)) linksToApprove.Add(xref); } foreach (JMMServer.Providers.Azure.CrossRef_AniDB_Trakt xref in linksToApprove) { JMMServer.Providers.Azure.AzureWebAPI.Admin_Approve_CrossRefAniDBTrakt(xref.CrossRef_AniDB_TraktId.Value); } return "Success"; } else return "Failure to send links to web cache"; //return JMMServer.Providers.Azure.AzureWebAPI.Admin_Approve_CrossRefAniDBTrakt(crossRef_AniDB_TraktId); } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); return ex.Message; } }
public string RemoveLinkAniDBTraktForAnime(int animeID) { try { AnimeSeriesRepository repSeries = new AnimeSeriesRepository(); AnimeSeries ser = repSeries.GetByAnimeID(animeID); if (ser == null) return "Could not find Series for Anime!"; // check if there are default images used associated AniDB_Anime_DefaultImageRepository repDefaults = new AniDB_Anime_DefaultImageRepository(); List<AniDB_Anime_DefaultImage> images = repDefaults.GetByAnimeID(animeID); foreach (AniDB_Anime_DefaultImage image in images) { if (image.ImageParentType == (int)JMMImageType.Trakt_Fanart || image.ImageParentType == (int)JMMImageType.Trakt_Poster) { repDefaults.Delete(image.AniDB_Anime_DefaultImageID); } } CrossRef_AniDB_TraktV2Repository repXrefTrakt = new CrossRef_AniDB_TraktV2Repository(); foreach (CrossRef_AniDB_TraktV2 xref in repXrefTrakt.GetByAnimeID(animeID)) { TraktTVHelper.RemoveLinkAniDBTrakt(animeID, (enEpisodeType)xref.AniDBStartEpisodeType, xref.AniDBStartEpisodeNumber, xref.TraktID, xref.TraktSeasonNumber, xref.TraktStartEpisodeNumber); } return ""; } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); return ex.Message; } }
public List<Contract_CrossRef_AniDB_TraktV2> GetTraktCrossRefV2(int animeID) { try { List<Contract_CrossRef_AniDB_TraktV2> contracts = new List<Contract_CrossRef_AniDB_TraktV2>(); CrossRef_AniDB_TraktV2Repository repCrossRef = new CrossRef_AniDB_TraktV2Repository(); List<CrossRef_AniDB_TraktV2> xrefs = repCrossRef.GetByAnimeID(animeID); if (xrefs == null) return contracts; foreach (CrossRef_AniDB_TraktV2 xref in xrefs) contracts.Add(xref.ToContract()); return contracts; } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); return null; } }
public List<CrossRef_AniDB_TraktV2> GetCrossRefTraktV2(ISession session) { CrossRef_AniDB_TraktV2Repository repCrossRef = new CrossRef_AniDB_TraktV2Repository(); return repCrossRef.GetByAnimeID(session, this.AnimeID); }