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; } }
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); } }
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); } }
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); } }
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; } }
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; } }
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); } }
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 }); } }
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; } }
public override void ProcessCommand() { try { AzureWebAPI.Send_UserInfo(); } catch (Exception ex) { logger.Error("Error processing CommandRequest_Azure_SendUserInfo: {0} ", ex); } }
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); }
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; } }
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; } }
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; } }
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); } }
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); } }
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>()); } }
public override void ProcessCommand() { try { AzureWebAPI.Delete_CrossRefFileEpisode(Hash); } catch (Exception ex) { logger.Error("Error processing CommandRequest_WebCacheDeleteXRefFileEpisode: {0}-{1} - {2}", Hash, EpisodeID, ex); } }
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); } }
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); } }
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>()); } }
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); } }
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); } }
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; } }
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; } }
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; } }
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); } }
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(); } } } }