Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 4
0
        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);
            }
        }