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 ActionResult UpdateMissingAniDBXML() { try { var allAnime = RepoFactory.AniDB_Anime.GetAll().Select(a => a.AnimeID).OrderBy(a => a).ToList(); Logger.LogInformation($"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.LogInformation($"Checking anime {i + 1}/{allAnime.Count} for XML file"); } var xml = APIUtils.LoadAnimeHTTPFromFile(animeID); if (xml == null) { Series.QueueAniDBRefresh(animeID, true, false, false); updatedAnime++; continue; } var rawAnime = AniDBHTTPHelper.ProcessAnimeDetails(xml, animeID); if (rawAnime == null) { Series.QueueAniDBRefresh(animeID, true, false, false); updatedAnime++; } } Logger.LogInformation($"Updating {updatedAnime} anime"); } catch (Exception e) { Logger.LogError(e, $"Error checking and queuing AniDB XML Updates: {e}"); return(InternalError(e.Message)); } return(Ok()); }
public virtual enHelperActivityType Process() { string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); string filePath = Path.Combine(appPath, "Anime_HTTP"); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string fileName = string.Format("AnimeDoc_{0}.xml", animeID); string fileNameWithPath = Path.Combine(filePath, fileName); if (!CacheOnly) { JMMService.LastAniDBMessage = DateTime.Now; JMMService.LastAniDBHTTPMessage = DateTime.Now; } XmlDocument docAnime = null; if (CacheOnly) { xmlResult = AzureWebAPI.Get_AnimeXML(animeID); if (!string.IsNullOrEmpty(xmlResult)) { docAnime = new XmlDocument(); docAnime.LoadXml(xmlResult); } } else { if (!ForceFromAniDB) { //Disable usage of Azure API for this type of data /*xmlResult = AzureWebAPI.Get_AnimeXML(animeID); * if (string.IsNullOrEmpty(xmlResult)) * { * docAnime = AniDBHTTPHelper.GetAnimeXMLFromAPI(animeID, ref xmlResult); * } * else * { * docAnime = new XmlDocument(); * docAnime.LoadXml(xmlResult); * }*/ docAnime = AniDBHTTPHelper.GetAnimeXMLFromAPI(animeID, ref xmlResult); } else { docAnime = AniDBHTTPHelper.GetAnimeXMLFromAPI(animeID, ref xmlResult); //XmlDocument docAnime = LoadAnimeHTTPFromFile(animeID); } } if (xmlResult.Trim().Length > 0) { WriteAnimeHTTPToFile(animeID, xmlResult); } if (CheckForBan(xmlResult)) { return(enHelperActivityType.NoSuchAnime); } if (docAnime != null) { anime = AniDBHTTPHelper.ProcessAnimeDetails(docAnime, animeID); episodes = AniDBHTTPHelper.ProcessEpisodes(docAnime, animeID); titles = AniDBHTTPHelper.ProcessTitles(docAnime, animeID); tags = AniDBHTTPHelper.ProcessTags(docAnime, animeID); characters = AniDBHTTPHelper.ProcessCharacters(docAnime, animeID); relations = AniDBHTTPHelper.ProcessRelations(docAnime, animeID); similarAnime = AniDBHTTPHelper.ProcessSimilarAnime(docAnime, animeID); recommendations = AniDBHTTPHelper.ProcessRecommendations(docAnime, animeID); return(enHelperActivityType.GotAnimeInfoHTTP); } else { return(enHelperActivityType.NoSuchAnime); } }
public virtual enHelperActivityType Process() { if (!CacheOnly) { ShokoService.LastAniDBMessage = DateTime.Now; ShokoService.LastAniDBHTTPMessage = DateTime.Now; } XmlDocument docAnime = null; if (CacheOnly) { xmlResult = AzureWebAPI.Get_AnimeXML(animeID); if (!string.IsNullOrEmpty(xmlResult)) { docAnime = new XmlDocument(); docAnime.LoadXml(xmlResult); } } else { if (!ForceFromAniDB) { //Disable usage of Azure API for this type of data /*xmlResult = AzureWebAPI.Get_AnimeXML(animeID); * if (string.IsNullOrEmpty(xmlResult)) * { * docAnime = AniDBHTTPHelper.GetAnimeXMLFromAPI(animeID, ref xmlResult); * } * else * { * docAnime = new XmlDocument(); * docAnime.LoadXml(xmlResult); * }*/ //logger.Info("Trying to load Anime HTTP info from cache file..."); docAnime = LoadAnimeHTTPFromFile(animeID); if (docAnime == null) { //logger.Info("No Anime HTTP info found in cache file, loading from HTTP API"); docAnime = AniDBHTTPHelper.GetAnimeXMLFromAPI(animeID, ref xmlResult); } } else { docAnime = AniDBHTTPHelper.GetAnimeXMLFromAPI(animeID, ref xmlResult); } } if (CheckForBan(xmlResult)) { return(enHelperActivityType.NoSuchAnime); } if (xmlResult.Trim().Length > 0) { WriteAnimeHTTPToFile(animeID, xmlResult); } if (docAnime != null) { anime = AniDBHTTPHelper.ProcessAnimeDetails(docAnime, animeID); episodes = AniDBHTTPHelper.ProcessEpisodes(docAnime, animeID); titles = AniDBHTTPHelper.ProcessTitles(docAnime, animeID); tags = AniDBHTTPHelper.ProcessTags(docAnime, animeID); characters = AniDBHTTPHelper.ProcessCharacters(docAnime, animeID); relations = AniDBHTTPHelper.ProcessRelations(docAnime, animeID); similarAnime = AniDBHTTPHelper.ProcessSimilarAnime(docAnime, animeID); recommendations = AniDBHTTPHelper.ProcessRecommendations(docAnime, animeID); return(enHelperActivityType.GotAnimeInfoHTTP); } else { return(enHelperActivityType.NoSuchAnime); } }