private int GetUpperEpisodeLimit(List <CrossRef_AniDB_MAL> crossRefs, CrossRef_AniDB_MAL xrefBase) { foreach (CrossRef_AniDB_MAL xref in crossRefs) { if (xref.StartEpisodeType == xrefBase.StartEpisodeType) { if (xref.StartEpisodeNumber > xrefBase.StartEpisodeNumber) { return(xref.StartEpisodeNumber - 1); } } } return(int.MaxValue); }
public CrossRef_AniDB_MALInput(CrossRef_AniDB_MAL xref) { this.AnimeID = xref.AnimeID; this.MALID = xref.MALID; this.CrossRefSource = xref.CrossRefSource; this.MALTitle = xref.MALTitle; this.StartEpisodeType = xref.StartEpisodeType; this.StartEpisodeNumber = xref.StartEpisodeNumber; this.Username = ServerSettings.AniDB_Username; if (ServerSettings.WebCache_Anonymous) { this.Username = Constants.AnonWebCacheUsername; } }
public void Delete(int id) { using (var session = JMMService.SessionFactory.OpenSession()) { // populate the database using (var transaction = session.BeginTransaction()) { CrossRef_AniDB_MAL cr = GetByID(id); if (cr != null) { session.Delete(cr); transaction.Commit(); } } } }
// default constructor public AddCrossRef_AniDB_MALRequest(CrossRef_AniDB_MAL data) { this.AnimeID = data.AnimeID; this.MALID = data.MALID; this.StartEpisodeType = data.StartEpisodeType; this.StartEpisodeNumber = data.StartEpisodeNumber; string username = ServerSettings.AniDB_Username; if (ServerSettings.WebCache_Anonymous) { username = Constants.AnonWebCacheUsername; } this.Username = username; this.MALTitle = data.MALTitle; }
public static void LinkAniDBMAL(int animeID, int malID, string malTitle, int epType, int epNumber, bool fromWebCache) { CrossRef_AniDB_MAL xrefTemp = RepoFactory.CrossRef_AniDB_MAL.GetByMALID(malID); if (xrefTemp != null) { string msg = string.Format("Not using MAL link as this MAL ID ({0}) is already in use by {1}", malID, xrefTemp.AnimeID); logger.Warn(msg); return; } CrossRef_AniDB_MAL xref = new CrossRef_AniDB_MAL { AnimeID = animeID, MALID = malID, MALTitle = malTitle, StartEpisodeType = epType, StartEpisodeNumber = epNumber }; if (fromWebCache) { xref.CrossRefSource = (int)CrossRefSource.WebCache; } else { xref.CrossRefSource = (int)CrossRefSource.User; } RepoFactory.CrossRef_AniDB_MAL.Save(xref); SVR_AniDB_Anime.UpdateStatsByAnimeID(animeID); logger.Trace("Changed MAL association: {0}", animeID); CommandRequest_MALUpdatedWatchedStatus cmd = new CommandRequest_MALUpdatedWatchedStatus(animeID); cmd.Save(); CommandRequest_WebCacheSendXRefAniDBMAL req = new CommandRequest_WebCacheSendXRefAniDBMAL(xref.CrossRef_AniDB_MALID); req.Save(); }
private void CommandBinding_EditMALLink(object sender, ExecutedRoutedEventArgs e) { object obj = e.Parameter; if (obj == null) { return; } try { VM_AniDB_Anime anime = DataContext as VM_AniDB_Anime; if (anime == null) { return; } if (obj is CrossRef_AniDB_MAL) { Cursor = Cursors.Wait; CrossRef_AniDB_MAL malLink = obj as CrossRef_AniDB_MAL; // prompt to select details Window wdw = Window.GetWindow(this); SelectMALStartForm frm = new SelectMALStartForm(); frm.Owner = wdw; frm.Init(malLink.AnimeID, anime.FormattedTitle, malLink.MALTitle, malLink.MALID, malLink.StartEpisodeType, malLink.StartEpisodeNumber); bool?result = frm.ShowDialog(); if (result.Value) { // update info RefreshData(); } } } catch (Exception ex) { Utils.ShowErrorMessage(ex); } finally { Cursor = Cursors.Arrow; } }
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.Error(ex, "Error processing CommandRequest_WebCacheSendXRefAniDBMAL: {0}" + ex); } }
public static void RemoveLinkAniDBMAL(int animeID, int epType, int epNumber) { CrossRef_AniDB_MALRepository repCrossRef = new CrossRef_AniDB_MALRepository(); CrossRef_AniDB_MAL xref = repCrossRef.GetByAnimeConstraint(animeID, epType, epNumber); if (xref == null) { return; } repCrossRef.Delete(xref.CrossRef_AniDB_MALID); StatsCache.Instance.UpdateUsingAnime(animeID); CommandRequest_WebCacheDeleteXRefAniDBMAL req = new CommandRequest_WebCacheDeleteXRefAniDBMAL(animeID, epType, epNumber); req.Save(); }
public static void RemoveLinkAniDBMAL(int animeID, int epType, int epNumber) { CrossRef_AniDB_MAL xref = RepoFactory.CrossRef_AniDB_MAL.GetByAnimeConstraint(animeID, epType, epNumber); if (xref == null) { return; } RepoFactory.CrossRef_AniDB_MAL.Delete(xref.CrossRef_AniDB_MALID); SVR_AniDB_Anime.UpdateStatsByAnimeID(animeID); CommandRequest_WebCacheDeleteXRefAniDBMAL req = new CommandRequest_WebCacheDeleteXRefAniDBMAL(animeID, epType, epNumber); req.Save(); }
public static void Send_CrossRefAniDBMAL(CrossRef_AniDB_MAL data) { if (!ServerSettings.WebCache_MAL_Send) { return; } string uri = string.Format(@"http://{0}/api/CrossRef_AniDB_MAL", azureHostBaseAddress); Azure_CrossRef_AniDB_MAL_Request input = data.ToRequest(); input.Username = ServerSettings.AniDB_Username; if (ServerSettings.WebCache_Anonymous) { input.Username = Constants.AnonWebCacheUsername; } string json = JSONHelper.Serialize <Azure_CrossRef_AniDB_MAL_Request>(input); SendData(uri, json, "POST"); }
public override void ProcessCommand() { try { CrossRef_AniDB_MALRepository repCrossRef = new CrossRef_AniDB_MALRepository(); CrossRef_AniDB_MAL xref = repCrossRef.GetByID(CrossRef_AniDB_MALID); if (xref == null) { return; } XMLService.Send_CrossRef_AniDB_MAL(xref); } catch (Exception ex) { logger.ErrorException("Error processing CommandRequest_WebCacheSendXRefAniDBMAL: {0}" + ex.ToString(), ex); return; } }
public static void RemoveLinkAniDBMAL(int animeID, int malID, int epType, int epNumber) { CrossRef_AniDB_MAL xref = RepoFactory.CrossRef_AniDB_MAL.GetByMALID(malID); if (xref == null || xref.AnimeID != animeID || xref.StartEpisodeType != epType || xref.StartEpisodeNumber != epNumber) { return; } RepoFactory.CrossRef_AniDB_MAL.Delete(xref.CrossRef_AniDB_MALID); SVR_AniDB_Anime.UpdateStatsByAnimeID(animeID); CommandRequest_WebCacheDeleteXRefAniDBMAL req = new CommandRequest_WebCacheDeleteXRefAniDBMAL(animeID, epType, epNumber); req.Save(); }
public override void ProcessCommand() { logger.Info("Processing CommandRequest_MALDownloadStatusFromMAL"); try { if (string.IsNullOrEmpty(ServerSettings.MAL_Username) || string.IsNullOrEmpty(ServerSettings.MAL_Password)) { return; } // find the latest eps to update AniDB_AnimeRepository repAnime = new AniDB_AnimeRepository(); myanimelist mal = MALHelper.GetMALAnimeList(); if (mal == null) { return; } if (mal.anime == null) { return; } CrossRef_AniDB_MALRepository repCrossRef = new CrossRef_AniDB_MALRepository(); AniDB_EpisodeRepository repAniEps = new AniDB_EpisodeRepository(); AnimeEpisodeRepository repEp = new AnimeEpisodeRepository(); // find the anidb user JMMUserRepository repUsers = new JMMUserRepository(); List <JMMUser> aniDBUsers = repUsers.GetAniDBUsers(); if (aniDBUsers.Count == 0) { return; } JMMUser user = aniDBUsers[0]; foreach (myanimelistAnime malAnime in mal.anime) { // look up the anime CrossRef_AniDB_MAL xref = repCrossRef.GetByMALID(malAnime.series_animedb_id); if (xref == null) { continue; } if (malAnime.series_animedb_id == 8107 || malAnime.series_animedb_id == 10737) { Console.Write(""); } // check if this anime has any other links List <CrossRef_AniDB_MAL> allXrefs = repCrossRef.GetByAnimeID(xref.AnimeID); if (allXrefs.Count == 0) { continue; } // find the range of watched episodes that this applies to int startEpNumber = xref.StartEpisodeNumber; int endEpNumber = GetUpperEpisodeLimit(allXrefs, xref); List <AniDB_Episode> aniEps = repAniEps.GetByAnimeID(xref.AnimeID); foreach (AniDB_Episode aniep in aniEps) { if (aniep.EpisodeType != xref.StartEpisodeType) { continue; } AnimeEpisode ep = repEp.GetByAniDBEpisodeID(aniep.EpisodeID); if (ep == null) { continue; } int adjustedWatchedEps = malAnime.my_watched_episodes + xref.StartEpisodeNumber - 1; int epNum = aniep.EpisodeNumber; if (epNum < startEpNumber || epNum > endEpNumber) { continue; } AnimeEpisode_User usrRec = ep.GetUserRecord(user.JMMUserID); if (epNum <= adjustedWatchedEps) { // update if the user doesn't have a record (means not watched) // or it is currently un-watched bool update = false; if (usrRec == null) { update = true; } else { if (!usrRec.WatchedDate.HasValue) { update = true; } } if (update) { ep.ToggleWatchedStatus(true, true, DateTime.Now, user.JMMUserID, false); } } else { bool update = false; if (usrRec != null) { if (usrRec.WatchedDate.HasValue) { update = true; } } if (update) { ep.ToggleWatchedStatus(false, true, DateTime.Now, user.JMMUserID, false); } } } } } catch (Exception ex) { logger.Error("Error processing CommandRequest_MALDownloadStatusFromMAL: {0}", ex.ToString()); return; } }
protected void Page_Load(object sender, EventArgs e) { Response.ContentType = "text/xml"; try { CrossRef_AniDB_MALRepository repCrossRef = new CrossRef_AniDB_MALRepository(); StreamReader reader = new StreamReader(this.Request.InputStream); String xmlData = reader.ReadToEnd(); XmlDocument docXRef = new XmlDocument(); docXRef.LoadXml(xmlData); string uname = Utils.TryGetProperty("AddCrossRef_AniDB_MAL_Request", docXRef, "Username"); string malTitle = Utils.TryGetProperty("AddCrossRef_AniDB_MAL_Request", docXRef, "MALTitle"); string aid = Utils.TryGetProperty("AddCrossRef_AniDB_MAL_Request", docXRef, "AnimeID"); int animeid = 0; int.TryParse(aid, out animeid); string mID = Utils.TryGetProperty("AddCrossRef_AniDB_MAL_Request", docXRef, "MALID"); int malID = 0; int.TryParse(mID, out malID); string sepType = Utils.TryGetProperty("AddCrossRef_AniDB_MAL_Request", docXRef, "StartEpisodeType"); int epType = 0; int.TryParse(sepType, out epType); string sepNumber = Utils.TryGetProperty("AddCrossRef_AniDB_MAL_Request", docXRef, "StartEpisodeNumber"); int epNumber = 0; int.TryParse(sepNumber, out epNumber); if (string.IsNullOrEmpty(uname) || animeid <= 0 || malID <= 0 || epType <= 0 || epNumber <= 0) { Response.Write(Constants.ERROR_XML); return; } CrossRef_AniDB_MAL xref = null; List <CrossRef_AniDB_MAL> recs = repCrossRef.GetByAnimeIDUser(animeid, uname, epType, epNumber); if (recs.Count == 1) { xref = recs[0]; } if (recs.Count == 0) { xref = new CrossRef_AniDB_MAL(); } else { xref = recs[0]; } xref.AnimeID = animeid; xref.CrossRefSource = 1; xref.MALID = malID; xref.MALTitle = malTitle; xref.Username = uname; xref.StartEpisodeType = epType; xref.StartEpisodeNumber = epNumber; repCrossRef.Save(xref); // now send to mirror string uri = string.Format("http://{0}/AddCrossRef_AniDB_MAL.aspx", Constants.MirrorWAIX); XMLService.SendData(uri, xmlData); } catch (Exception ex) { Response.Write(Constants.ERROR_XML); } }