コード例 #1
0
        public override void ProcessCommand()
        {
            try
            {
                bool process =
                    ServerSettings.AniDB_Username.Equals("jonbaby", StringComparison.InvariantCultureIgnoreCase) ||
                    ServerSettings.AniDB_Username.Equals("jmediamanager", StringComparison.InvariantCultureIgnoreCase);

                if (!process)
                {
                    return;
                }

                AnimeIDTitle thisTitle = new AnimeIDTitle();
                thisTitle.AnimeIDTitleId = 0;
                thisTitle.MainTitle      = MainTitle;
                thisTitle.AnimeID        = AnimeID;
                thisTitle.Titles         = Titles;

                AzureWebAPI.Send_AnimeTitle(thisTitle);
            }
            catch (Exception ex)
            {
                logger.Error("Error processing CommandRequest_Azure_SendAnimeTitle: {0} - {1}", AnimeID, ex.ToString());
                return;
            }
        }
コード例 #2
0
        public override void ProcessCommand()
        {
            try
            {
                bool process = false;

                if (!process)
                {
                    return;
                }

                SVR_AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(AnimeID);
                if (anime == null)
                {
                    return;
                }

                if (anime.AllTags.ToUpper().Contains("18 RESTRICTED"))
                {
                    return;
                }

                AzureWebAPI.Send_AnimeFull(anime);
            }
            catch (Exception ex)
            {
                logger.Error("Error processing CommandRequest_Azure_SendAnimeFull: {0} - {1}", AnimeID, ex);
            }
        }
コード例 #3
0
        public void RefreshAdminMessages()
        {
            AdminMessages.Clear();

            try
            {
                AdminMessagesAvailable = false;
                if (!ServerSettings.Instance.WebCache.Enabled)
                {
                    return;
                }
                List <Azure_AdminMessage> msgs = AzureWebAPI.Get_AdminMessages();
                if (msgs == null || msgs.Count == 0)
                {
                    AdminMessagesAvailable = false;
                    return;
                }

                foreach (Azure_AdminMessage msg in msgs)
                {
                    AdminMessages.Add(msg);
                }

                AdminMessagesAvailable = true;
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }
コード例 #4
0
        public void RefreshAdminMessages()
        {
            AdminMessages.Clear();

            try
            {
                List <AdminMessage> msgs = AzureWebAPI.Get_AdminMessages();
                if (msgs == null || msgs.Count == 0)
                {
                    AdminMessagesAvailable = false;
                    return;
                }

                foreach (AdminMessage msg in msgs)
                {
                    AdminMessages.Add(msg);
                }

                AdminMessagesAvailable = true;
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }
コード例 #5
0
        public override void ProcessCommand()
        {
            try
            {
                bool process =
                    ServerSettings.AniDB_Username.Equals("jonbaby", StringComparison.InvariantCultureIgnoreCase) ||
                    ServerSettings.AniDB_Username.Equals("jmediamanager", StringComparison.InvariantCultureIgnoreCase) ||
                    ServerSettings.AniDB_Username.Equals("jmmtesting", StringComparison.InvariantCultureIgnoreCase);

                if (!process)
                {
                    return;
                }

                AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(AnimeID);
                if (anime == null)
                {
                    return;
                }

                if (anime.AllTags.ToUpper().Contains("18 RESTRICTED"))
                {
                    return;
                }

                AzureWebAPI.Send_AnimeFull(anime);
            }
            catch (Exception ex)
            {
                logger.Error("Error processing CommandRequest_Azure_SendAnimeFull: {0} - {1}", AnimeID, ex.ToString());
                return;
            }
        }
コード例 #6
0
        public override void ProcessCommand()
        {
            try
            {
                //if (string.IsNullOrEmpty(ServerSettings.WebCacheAuthKey)) return;

                CrossRef_AniDB_TvDBV2 xref = RepoFactory.CrossRef_AniDB_TvDBV2.GetByID(CrossRef_AniDB_TvDBID);
                if (xref == null)
                {
                    return;
                }

                SVR_AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(xref.AnimeID);
                if (anime == null)
                {
                    return;
                }

                AzureWebAPI.Send_CrossRefAniDBTvDB(xref, anime.MainTitle);
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Error processing CommandRequest_WebCacheSendXRefAniDBTvDB: {0}" + ex.ToString());
                return;
            }
        }
コード例 #7
0
        public override void ProcessCommand()
        {
            try
            {
                bool process = false;

                if (!process)
                {
                    return;
                }

                Azure_AnimeIDTitle thisTitle = new Azure_AnimeIDTitle
                {
                    AnimeIDTitleId = 0,
                    MainTitle      = MainTitle,
                    AnimeID        = AnimeID,
                    Titles         = Titles
                };
                AzureWebAPI.Send_AnimeTitle(thisTitle);
            }
            catch (Exception ex)
            {
                logger.Error("Error processing CommandRequest_Azure_SendAnimeTitle: {0} - {1}", AnimeID, ex);
            }
        }
コード例 #8
0
        private void FillMissingHashes(SVR_VideoLocal vlocal)
        {
            bool needcrc32 = string.IsNullOrEmpty(vlocal.CRC32);
            bool needmd5   = string.IsNullOrEmpty(vlocal.MD5);
            bool needsha1  = string.IsNullOrEmpty(vlocal.SHA1);

            if (needcrc32 || needmd5 || needsha1)
            {
                FillVideoHashes(vlocal);
            }
            needcrc32 = string.IsNullOrEmpty(vlocal.CRC32);
            needmd5   = string.IsNullOrEmpty(vlocal.MD5);
            needsha1  = string.IsNullOrEmpty(vlocal.SHA1);
            if (needcrc32 || needmd5 || needsha1)
            {
                ShokoService.CmdProcessorHasher.QueueState = PrettyDescriptionHashing;
                DateTime      start = DateTime.Now;
                List <string> tp    = new List <string>();
                if (needsha1)
                {
                    tp.Add("SHA1");
                }
                if (needmd5)
                {
                    tp.Add("MD5");
                }
                if (needcrc32)
                {
                    tp.Add("CRC32");
                }
                logger.Trace("Calculating missing {1} hashes for: {0}", FileName, string.Join(",", tp));
                // update the VideoLocal record with the Hash, since cloud support we calculate everything
                Hashes hashes = FileHashHelper.GetHashInfo(FileName.Replace("/", $"{System.IO.Path.DirectorySeparatorChar}"), true, ShokoServer.OnHashProgress,
                                                           needcrc32, needmd5, needsha1);
                TimeSpan ts = DateTime.Now - start;
                logger.Trace("Hashed file in {0:#0.0} seconds --- {1} ({2})", ts.TotalSeconds,
                             FileName, Utils.FormatByteSize(vlocal.FileSize));
                if (String.IsNullOrEmpty(vlocal.Hash))
                {
                    vlocal.Hash = hashes.ED2K?.ToUpperInvariant();
                }
                if (needsha1)
                {
                    vlocal.SHA1 = hashes.SHA1?.ToUpperInvariant();
                }
                if (needmd5)
                {
                    vlocal.MD5 = hashes.MD5?.ToUpperInvariant();
                }
                if (needcrc32)
                {
                    vlocal.CRC32 = hashes.CRC32?.ToUpperInvariant();
                }
                AzureWebAPI.Send_FileHash(new List <SVR_VideoLocal> {
                    vlocal
                });
            }
        }
コード例 #9
0
        public override void ProcessCommand()
        {
            try
            {
                bool process =
                    ServerSettings.AniDB_Username.Equals("jonbaby", StringComparison.InvariantCultureIgnoreCase) ||
                    ServerSettings.AniDB_Username.Equals("jmediamanager", StringComparison.InvariantCultureIgnoreCase);

                if (!process)
                {
                    return;
                }

                AniDB_AnimeRepository rep   = new AniDB_AnimeRepository();
                AniDB_Anime           anime = rep.GetByAnimeID(AnimeID);
                if (anime == null)
                {
                    return;
                }

                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);

                string rawXML = "";
                if (File.Exists(fileNameWithPath))
                {
                    StreamReader re = File.OpenText(fileNameWithPath);
                    rawXML = re.ReadToEnd();
                    re.Close();
                }

                AnimeXML xml = new AnimeXML();
                xml.AnimeID        = AnimeID;
                xml.AnimeName      = anime.MainTitle;
                xml.DateDownloaded = 0;
                xml.Username       = ServerSettings.AniDB_Username;
                xml.XMLContent     = rawXML;

                AzureWebAPI.Send_AnimeXML(xml);
            }
            catch (Exception ex)
            {
                logger.Error("Error processing CommandRequest_Azure_SendAnimeXML: {0} - {1}", AnimeID, ex.ToString());
                return;
            }
        }
コード例 #10
0
 public override void ProcessCommand()
 {
     try
     {
         AzureWebAPI.Send_UserInfo();
     }
     catch (Exception ex)
     {
         logger.Error("Error processing CommandRequest_Azure_SendUserInfo: {0} ", ex);
     }
 }
コード例 #11
0
        private static bool TryGetCrossRefsFromWebCache(SVR_VideoLocal vidLocal, ref List <CrossRef_File_Episode> crossRefs)
        {
            if (!ServerSettings.Instance.WebCache.Enabled || !ServerSettings.Instance.WebCache.XRefFileEpisode_Get)
            {
                logger.Debug($"Cannot get AniDB_File record so exiting: {vidLocal.ED2KHash}");
                return(true);
            }

            List <Azure_CrossRef_File_Episode> xrefs = AzureWebAPI.Get_CrossRefFileEpisode(vidLocal);

            crossRefs = new List <CrossRef_File_Episode>();
            if (xrefs == null || xrefs.Count == 0)
            {
                logger.Debug(
                    $"Cannot find AniDB_File record or get cross ref from web cache record so exiting: {vidLocal.ED2KHash}");
                return(true);
            }

            string fileName = vidLocal.GetBestVideoLocalPlace()?.FullServerPath;

            fileName = !string.IsNullOrEmpty(fileName) ? Path.GetFileName(fileName) : vidLocal.FileName;
            foreach (Azure_CrossRef_File_Episode xref in xrefs)
            {
                bool duplicate = crossRefs.Any(a =>
                                               a.AnimeID == xref.AnimeID && a.EpisodeID == xref.EpisodeID && a.Hash == xref.Hash);

                if (duplicate)
                {
                    continue;
                }

                CrossRef_File_Episode xref2 = new CrossRef_File_Episode
                {
                    Hash           = vidLocal.ED2KHash,
                    FileName       = fileName,
                    FileSize       = vidLocal.FileSize,
                    CrossRefSource = (int)CrossRefSource.WebCache,
                    AnimeID        = xref.AnimeID,
                    EpisodeID      = xref.EpisodeID,
                    Percentage     = xref.Percentage,
                    EpisodeOrder   = xref.EpisodeOrder
                };
                crossRefs.Add(xref2);
                // in this case we need to save the cross refs manually as AniDB did not provide them
                // use a session to prevent updating stats
                using var session = DatabaseFactory.SessionFactory.OpenSession();
                using var trans   = session.BeginTransaction();
                RepoFactory.CrossRef_File_Episode.SaveWithOpenTransaction(session, xref2);
                trans.Commit();
            }

            return(false);
        }
コード例 #12
0
 public override void ProcessCommand()
 {
     try
     {
         AzureWebAPI.Delete_CrossRefAniDBOther(AnimeID, (JMMServer.CrossRefType)CrossRefType);
     }
     catch (Exception ex)
     {
         logger.ErrorException("Error processing CommandRequest_WebCacheDeleteXRefAniDBOther: {0}" + ex.ToString(), ex);
         return;
     }
 }
コード例 #13
0
 public override void ProcessCommand()
 {
     try
     {
         AzureWebAPI.Delete_CrossRefAniDBTvDB(AnimeID, AniDBStartEpisodeType, AniDBStartEpisodeNumber, TvDBID, TvDBSeasonNumber, TvDBStartEpisodeNumber);
     }
     catch (Exception ex)
     {
         logger.ErrorException("Error processing CommandRequest_WebCacheDeleteXRefAniDBTvDB: {0}" + ex.ToString(), ex);
         return;
     }
 }
コード例 #14
0
        public override void ProcessCommand()
        {
            try
            {
                bool process =
                    ServerSettings.AniDB_Username.Equals("jonbaby", StringComparison.InvariantCultureIgnoreCase) ||
                    ServerSettings.AniDB_Username.Equals("jmediamanager", StringComparison.InvariantCultureIgnoreCase);

                if (!process)
                {
                    return;
                }

                SVR_AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(AnimeID);
                if (anime == null)
                {
                    return;
                }

                string filePath = ServerSettings.AnimeXmlDirectory;

                if (!Directory.Exists(filePath))
                {
                    Directory.CreateDirectory(filePath);
                }

                string fileName         = string.Format("AnimeDoc_{0}.xml", AnimeID);
                string fileNameWithPath = Path.Combine(filePath, fileName);

                string rawXML = "";
                if (File.Exists(fileNameWithPath))
                {
                    StreamReader re = File.OpenText(fileNameWithPath);
                    rawXML = re.ReadToEnd();
                    re.Close();
                }

                Azure_AnimeXML xml = new Azure_AnimeXML
                {
                    AnimeID        = AnimeID,
                    AnimeName      = anime.MainTitle,
                    DateDownloaded = 0,
                    Username       = ServerSettings.AniDB_Username,
                    XMLContent     = rawXML
                };
                AzureWebAPI.Send_AnimeXML(xml);
            }
            catch (Exception ex)
            {
                logger.Error("Error processing CommandRequest_Azure_SendAnimeXML: {0} - {1}", AnimeID, ex.ToString());
                return;
            }
        }
コード例 #15
0
 public override void ProcessCommand()
 {
     try
     {
         AzureWebAPI.Delete_CrossRefAniDBMAL(AnimeID, StartEpisodeType, StartEpisodeNumber);
     }
     catch (Exception ex)
     {
         logger.Error(ex,
                      "Error processing CommandRequest_WebCacheDeleteXRefAniDBMAL: {0}" + ex);
     }
 }
 public override void ProcessCommand()
 {
     try
     {
         AzureWebAPI.Delete_CrossRefAniDBOther(AnimeID, (CrossRefType)CrossRefType);
     }
     catch (Exception ex)
     {
         logger.Error(ex,
                      "Error processing CommandRequest_WebCacheDeleteXRefAniDBOther: {0}" + ex);
     }
 }
コード例 #17
0
 public CL_CrossRef_AniDB_Other_Response GetOtherAnimeCrossRefWebCache(int animeID, int crossRefType)
 {
     try
     {
         return(AzureWebAPI.Get_CrossRefAniDBOther(animeID, (CrossRefType)crossRefType));
     }
     catch (Exception ex)
     {
         logger.Error(ex, ex.ToString());
         return(null);
     }
 }
コード例 #18
0
 public List <Azure_CrossRef_AniDB_Trakt> GetTraktCrossRefWebCache(int animeID, bool isAdmin)
 {
     try
     {
         return(AzureWebAPI.Get_CrossRefAniDBTrakt(animeID));
     }
     catch (Exception ex)
     {
         logger.Error(ex, ex.ToString());
         return(new List <Azure_CrossRef_AniDB_Trakt>());
     }
 }
コード例 #19
0
 public override void ProcessCommand()
 {
     try
     {
         AzureWebAPI.Delete_CrossRefFileEpisode(Hash);
     }
     catch (Exception ex)
     {
         logger.Error("Error processing CommandRequest_WebCacheDeleteXRefFileEpisode: {0}-{1} - {2}", Hash,
                      EpisodeID,
                      ex);
     }
 }
コード例 #20
0
        public override void ProcessCommand()
        {
            try
            {
                bool process = false;

                if (!process)
                {
                    return;
                }

                SVR_AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(AnimeID);
                if (anime == null)
                {
                    return;
                }

                string filePath = ServerSettings.Instance.AnimeXmlDirectory;

                if (!Directory.Exists(filePath))
                {
                    Directory.CreateDirectory(filePath);
                }

                string fileName         = $"AnimeDoc_{AnimeID}.xml";
                string fileNameWithPath = Path.Combine(filePath, fileName);

                string rawXML = string.Empty;
                if (File.Exists(fileNameWithPath))
                {
                    StreamReader re = File.OpenText(fileNameWithPath);
                    rawXML = re.ReadToEnd();
                    re.Close();
                }

                Azure_AnimeXML xml = new Azure_AnimeXML
                {
                    AnimeID        = AnimeID,
                    AnimeName      = anime.MainTitle,
                    DateDownloaded = 0,
                    Username       = ServerSettings.Instance.AniDb.Username,
                    XMLContent     = rawXML
                };
                AzureWebAPI.Send_AnimeXML(xml);
            }
            catch (Exception ex)
            {
                logger.Error("Error processing CommandRequest_Azure_SendAnimeXML: {0} - {1}", AnimeID, ex);
            }
        }
コード例 #21
0
 public CL_CrossRef_AniDB_Other_Response GetOtherAnimeCrossRefWebCache(int animeID, int crossRefType)
 {
     try
     {
         if (!ServerSettings.Instance.WebCache.Enabled)
         {
             return(new CL_CrossRef_AniDB_Other_Response());
         }
         return(AzureWebAPI.Get_CrossRefAniDBOther(animeID, (CrossRefType)crossRefType));
     }
     catch (Exception ex)
     {
         logger.Error(ex, ex.ToString());
         return(null);
     }
 }
コード例 #22
0
 public List <Azure_CrossRef_AniDB_TvDB> GetTVDBCrossRefWebCache(int animeID, bool isAdmin)
 {
     try
     {
         if (!ServerSettings.Instance.WebCache.Enabled)
         {
             return(new List <Azure_CrossRef_AniDB_TvDB>());
         }
         return(AzureWebAPI.Get_CrossRefAniDBTvDB(animeID));
     }
     catch (Exception ex)
     {
         logger.Error(ex, ex.ToString());
         return(new List <Azure_CrossRef_AniDB_TvDB>());
     }
 }
コード例 #23
0
        public override void ProcessCommand()
        {
            try
            {
                CrossRef_AniDB_Other xref = RepoFactory.CrossRef_AniDB_Other.GetByID(CrossRef_AniDB_OtherID);
                if (xref == null)
                {
                    return;
                }

                AzureWebAPI.Send_CrossRefAniDBOther(xref);
            }
            catch (Exception ex)
            {
                logger.Error(ex,
                             "Error processing CommandRequest_WebCacheSendXRefAniDBOther: {0}" + ex);
            }
        }
コード例 #24
0
        public override void ProcessCommand()
        {
            try
            {
                CrossRef_File_Episode xref = RepoFactory.CrossRef_File_Episode.GetByID(CrossRef_File_EpisodeID);
                if (xref == null)
                {
                    return;
                }

                AzureWebAPI.Send_CrossRefFileEpisode(xref);
            }
            catch (Exception ex)
            {
                logger.Error("Error processing CommandRequest_WebCacheSendXRefFileEpisode: {0} - {1}",
                             CrossRef_File_EpisodeID,
                             ex);
            }
        }
コード例 #25
0
        public override void ProcessCommand()
        {
            try
            {
                CrossRef_AniDB_OtherRepository          repCrossRef = new CrossRef_AniDB_OtherRepository();
                JMMServer.Entities.CrossRef_AniDB_Other xref        = repCrossRef.GetByID(CrossRef_AniDB_OtherID);
                if (xref == null)
                {
                    return;
                }

                AzureWebAPI.Send_CrossRefAniDBOther(xref);
            }
            catch (Exception ex)
            {
                logger.ErrorException("Error processing CommandRequest_WebCacheSendXRefAniDBOther: {0}" + ex.ToString(), ex);
                return;
            }
        }
コード例 #26
0
        public override void ProcessCommand()
        {
            try
            {
                CrossRef_AniDB_MAL xref = RepoFactory.CrossRef_AniDB_MAL.GetByID(CrossRef_AniDB_MALID);
                if (xref == null)
                {
                    return;
                }


                AzureWebAPI.Send_CrossRefAniDBMAL(xref);
            }
            catch (Exception ex)
            {
                logger.ErrorException("Error processing CommandRequest_WebCacheSendXRefAniDBMAL: {0}" + ex.ToString(),
                                      ex);
                return;
            }
        }
コード例 #27
0
        public override void ProcessCommand()
        {
            try
            {
                CrossRef_AniDB_TraktV2Repository repCrossRef = new CrossRef_AniDB_TraktV2Repository();
                CrossRef_AniDB_TraktV2           xref        = repCrossRef.GetByID(CrossRef_AniDB_TraktID);
                if (xref == null)
                {
                    return;
                }

                Trakt_ShowRepository repShow = new Trakt_ShowRepository();
                Trakt_Show           tvShow  = repShow.GetByTraktSlug(xref.TraktID);
                if (tvShow == null)
                {
                    return;
                }

                AniDB_AnimeRepository repAnime = new AniDB_AnimeRepository();
                AniDB_Anime           anime    = repAnime.GetByAnimeID(xref.AnimeID);
                if (anime == null)
                {
                    return;
                }

                string showName = "";
                if (tvShow != null)
                {
                    showName = tvShow.Title;
                }

                AzureWebAPI.Send_CrossRefAniDBTrakt(xref, anime.MainTitle);
            }
            catch (Exception ex)
            {
                logger.ErrorException(
                    "Error processing CommandRequest_WebCacheSendXRefAniDBTrakt: {0}" + ex.ToString(), ex);
                return;
            }
        }
        public override void ProcessCommand()
        {
            try
            {
                CrossRef_AniDB_TraktV2 xref = RepoFactory.CrossRef_AniDB_TraktV2.GetByID(CrossRef_AniDB_TraktID);
                if (xref == null)
                {
                    return;
                }

                Trakt_Show tvShow = RepoFactory.Trakt_Show.GetByTraktSlug(xref.TraktID);
                if (tvShow == null)
                {
                    return;
                }

                SVR_AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(xref.AnimeID);
                if (anime == null)
                {
                    return;
                }

                string showName = string.Empty;
                if (tvShow != null)
                {
                    showName = tvShow.Title;
                }

                AzureWebAPI.Send_CrossRefAniDBTrakt(xref, anime.MainTitle);
            }
            catch (Exception ex)
            {
                logger.Error(ex,
                             "Error processing CommandRequest_WebCacheSendXRefAniDBTrakt: {0}" + ex.ToString());
                return;
            }
        }
コード例 #29
0
        public override void ProcessCommand()
        {
            logger.Info("Processing CommandRequest_MovieDBSearchAnime: {0}", AnimeID);

            try
            {
                using (var session = DatabaseFactory.SessionFactory.OpenSession())
                {
                    ISessionWrapper sessionWrapper = session.Wrap();

                    // first check if the user wants to use the web cache
                    if (ServerSettings.Instance.WebCache.Enabled && ServerSettings.Instance.WebCache.TvDB_Get)
                    {
                        try
                        {
                            Azure_CrossRef_AniDB_Other crossRef =
                                AzureWebAPI.Get_CrossRefAniDBOther(AnimeID,
                                                                   CrossRefType.MovieDB);
                            if (crossRef != null)
                            {
                                int           movieID = int.Parse(crossRef.CrossRefID);
                                MovieDB_Movie movie   = RepoFactory.MovieDb_Movie.GetByOnlineID(sessionWrapper, movieID);
                                if (movie == null)
                                {
                                    // update the info from online
                                    MovieDBHelper.UpdateMovieInfo(session, movieID, true);
                                    movie = RepoFactory.MovieDb_Movie.GetByOnlineID(movieID);
                                }

                                if (movie != null)
                                {
                                    // since we are using the web cache result, let's save it
                                    MovieDBHelper.LinkAniDBMovieDB(AnimeID, movieID, true);
                                    return;
                                }
                            }
                        }
                        catch (Exception)
                        {
                        }
                    }

                    // Use TvDB setting
                    if (!ServerSettings.Instance.TvDB.AutoLink)
                    {
                        return;
                    }

                    string          searchCriteria = string.Empty;
                    SVR_AniDB_Anime anime          = RepoFactory.AniDB_Anime.GetByAnimeID(sessionWrapper, AnimeID);
                    if (anime == null)
                    {
                        return;
                    }

                    searchCriteria = anime.MainTitle;

                    // if not wanting to use web cache, or no match found on the web cache go to TvDB directly
                    List <MovieDB_Movie_Result> results = MovieDBHelper.Search(searchCriteria);
                    logger.Trace("Found {0} moviedb results for {1} on TheTvDB", results.Count, searchCriteria);
                    if (ProcessSearchResults(session, results, searchCriteria))
                    {
                        return;
                    }


                    if (results.Count == 0)
                    {
                        foreach (AniDB_Anime_Title title in anime.GetTitles())
                        {
                            if (title.TitleType.ToUpper() != Shoko.Models.Constants.AnimeTitleType.Official.ToUpper())
                            {
                                continue;
                            }

                            if (searchCriteria.ToUpper() == title.Title.ToUpper())
                            {
                                continue;
                            }

                            results = MovieDBHelper.Search(title.Title);
                            logger.Trace("Found {0} moviedb results for search on {1}", results.Count, title.Title);
                            if (ProcessSearchResults(session, results, title.Title))
                            {
                                return;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error("Error processing CommandRequest_TvDBSearchAnime: {0} - {1}", AnimeID, ex);
            }
        }
コード例 #30
0
 private void FillHashesAgainstWebCache(SVR_VideoLocal v)
 {
     if (!string.IsNullOrEmpty(v.ED2KHash))
     {
         List <Azure_FileHash> ls = AzureWebAPI.Get_FileHash(FileHashType.ED2K, v.ED2KHash) ??
                                    new List <Azure_FileHash>();
         ls = ls.Where(a => !string.IsNullOrEmpty(a.CRC32) && !string.IsNullOrEmpty(a.MD5) &&
                       !string.IsNullOrEmpty(a.SHA1))
              .ToList();
         if (ls.Count > 0)
         {
             if (!string.IsNullOrEmpty(ls[0].SHA1))
             {
                 v.SHA1 = ls[0].SHA1.ToUpperInvariant();
             }
             if (!string.IsNullOrEmpty(ls[0].CRC32))
             {
                 v.CRC32 = ls[0].CRC32.ToUpperInvariant();
             }
             if (!string.IsNullOrEmpty(ls[0].MD5))
             {
                 v.MD5 = ls[0].MD5.ToUpperInvariant();
             }
             return;
         }
     }
     if (!string.IsNullOrEmpty(v.SHA1))
     {
         List <Azure_FileHash> ls = AzureWebAPI.Get_FileHash(FileHashType.SHA1, v.SHA1) ??
                                    new List <Azure_FileHash>();
         ls = ls.Where(a => !string.IsNullOrEmpty(a.CRC32) && !string.IsNullOrEmpty(a.MD5) &&
                       !string.IsNullOrEmpty(a.ED2K))
              .ToList();
         if (ls.Count > 0)
         {
             if (!string.IsNullOrEmpty(ls[0].ED2K))
             {
                 v.ED2KHash = ls[0].ED2K.ToUpperInvariant();
             }
             if (!string.IsNullOrEmpty(ls[0].CRC32))
             {
                 v.CRC32 = ls[0].CRC32.ToUpperInvariant();
             }
             if (!string.IsNullOrEmpty(ls[0].MD5))
             {
                 v.MD5 = ls[0].MD5.ToUpperInvariant();
             }
             return;
         }
     }
     if (!string.IsNullOrEmpty(v.MD5))
     {
         List <Azure_FileHash> ls = AzureWebAPI.Get_FileHash(FileHashType.MD5, v.MD5) ??
                                    new List <Azure_FileHash>();
         ls = ls.Where(a => !string.IsNullOrEmpty(a.CRC32) && !string.IsNullOrEmpty(a.SHA1) &&
                       !string.IsNullOrEmpty(a.ED2K))
              .ToList();
         if (ls.Count > 0)
         {
             if (!string.IsNullOrEmpty(ls[0].ED2K))
             {
                 v.ED2KHash = ls[0].ED2K.ToUpperInvariant();
             }
             if (!string.IsNullOrEmpty(ls[0].CRC32))
             {
                 v.CRC32 = ls[0].CRC32.ToUpperInvariant();
             }
             if (!string.IsNullOrEmpty(ls[0].SHA1))
             {
                 v.SHA1 = ls[0].SHA1.ToUpperInvariant();
             }
         }
     }
 }