public static Serie GenerateFromBookmark(HttpContext ctx, BookmarkedAnime bookmark, int uid, bool nocast, bool notag, int level, bool all, bool allpics, int pic, TagFilter.Filter tagfilter) { var series = RepoFactory.AnimeSeries.GetByAnimeID(bookmark.AnimeID); if (series != null) { return(GenerateFromAnimeSeries(ctx, series, uid, nocast, notag, level, all, allpics, pic, tagfilter)); } SVR_AniDB_Anime aniDB_Anime = RepoFactory.AniDB_Anime.GetByAnimeID(bookmark.AnimeID); if (aniDB_Anime == null) { CommandRequest_GetAnimeHTTP cr_anime = new CommandRequest_GetAnimeHTTP(bookmark.AnimeID, true, false, false); cr_anime.Save(); Serie empty_serie = new Serie { id = -1, name = "GetAnimeInfoHTTP", aid = bookmark.AnimeID }; return(empty_serie); } return(GenerateFromAniDB_Anime(ctx, aniDB_Anime, nocast, notag, allpics, pic, tagfilter)); }
public static void RunImport_UpdateAllAniDB() { AniDB_AnimeRepository repAnime = new AniDB_AnimeRepository(); foreach (AniDB_Anime anime in repAnime.GetAll()) { CommandRequest_GetAnimeHTTP cmd = new CommandRequest_GetAnimeHTTP(anime.AnimeID, true, false); cmd.Save(); } }
public static bool QueueAniDBRefresh(int animeID, bool force, bool downloadRelations, bool createSeriesEntry, bool immediate = false) { if (immediate && !ShokoService.AnidbProcessor.IsHttpBanned) { var anime = ShokoService.AnidbProcessor.GetAnimeInfoHTTP(animeID, force, downloadRelations, 0, createSeriesEntry); if (anime != null) { return(true); } } var command = new CommandRequest_GetAnimeHTTP(animeID, force, downloadRelations, createSeriesEntry); command.Save(); return(false); }
public ActionResult UpdateMissingAniDBXML() { try { var allAnime = RepoFactory.AniDB_Anime.GetAll().Select(a => a.AnimeID).OrderBy(a => a).ToList(); logger.Info($"Starting the check for {allAnime.Count} anime XML files"); int updatedAnime = 0; for (var i = 0; i < allAnime.Count; i++) { var animeID = allAnime[i]; if (i % 10 == 1) { logger.Info($"Checking anime {i + 1}/{allAnime.Count} for XML file"); } var xml = APIUtils.LoadAnimeHTTPFromFile(animeID); if (xml == null) { CommandRequest_GetAnimeHTTP cmd = new CommandRequest_GetAnimeHTTP(animeID, true, false); cmd.Save(); updatedAnime++; continue; } var rawAnime = AniDBHTTPHelper.ProcessAnimeDetails(xml, animeID); if (rawAnime == null) { CommandRequest_GetAnimeHTTP cmd = new CommandRequest_GetAnimeHTTP(animeID, true, false); cmd.Save(); updatedAnime++; } } logger.Info($"Updating {updatedAnime} anime"); } catch (Exception e) { logger.Error($"Error checking and queuing AniDB XML Updates: {e}"); return(APIStatus.InternalError(e.Message)); } return(APIStatus.OK()); }
public GroupStatusCollection GetReleaseGroupStatusUDP(int animeID) { if (!Login()) { return(null); } enHelperActivityType ev = enHelperActivityType.NoSuchCreator; AniDBCommand_GetGroupStatus getCmd = null; lock (lockAniDBConnections) { Pause(); getCmd = new AniDBCommand_GetGroupStatus(); getCmd.Init(animeID); SetWaitingOnResponse(true); ev = getCmd.Process(ref soUdp, ref remoteIpEndPoint, curSessionID, new UnicodeEncoding(true, false)); SetWaitingOnResponse(false); } if (ev == enHelperActivityType.GotGroupStatus && getCmd.GrpStatusCollection != null) { // delete existing records AniDB_GroupStatusRepository repGrpStat = new AniDB_GroupStatusRepository(); AniDB_AnimeRepository repAnime = new AniDB_AnimeRepository(); AniDB_EpisodeRepository repAniEp = new AniDB_EpisodeRepository(); AnimeSeriesRepository repSeries = new AnimeSeriesRepository(); repGrpStat.DeleteForAnime(animeID); // save the records foreach (Raw_AniDB_GroupStatus raw in getCmd.GrpStatusCollection.Groups) { AniDB_GroupStatus grpstat = new AniDB_GroupStatus(raw); repGrpStat.Save(grpstat); } // updated cached stats // we don't do it in the save method as it would be too many unecessary updates logger.Trace("Updating group stats by anime from GetReleaseGroupStatusUDP: {0}", animeID); StatsCache.Instance.UpdateUsingAnime(animeID); if (getCmd.GrpStatusCollection.LatestEpisodeNumber > 0) { // update the anime with a record of the latest subbed episode AniDB_Anime anime = repAnime.GetByAnimeID(animeID); if (anime != null) { anime.LatestEpisodeNumber = getCmd.GrpStatusCollection.LatestEpisodeNumber; repAnime.Save(anime); // check if we have this episode in the database // if not get it now by updating the anime record List <AniDB_Episode> eps = repAniEp.GetByAnimeIDAndEpisodeNumber(animeID, getCmd.GrpStatusCollection.LatestEpisodeNumber); if (eps.Count == 0) { CommandRequest_GetAnimeHTTP cr_anime = new CommandRequest_GetAnimeHTTP(animeID, true, false); cr_anime.Save(); } // update the missing episode stats on groups and children AnimeSeries series = repSeries.GetByAnimeID(animeID); if (series != null) { series.UpdateStats(true, true, true); //series.TopLevelAnimeGroup.UpdateStatsFromTopLevel(true, true, true); } } } } return(getCmd.GrpStatusCollection); }