Ejemplo n.º 1
0
 public static MovieDB_Movie GetMovieDB_Movie(this CrossRef_AniDB_Other cross)
 {
     using (var session = DatabaseFactory.SessionFactory.OpenSession())
     {
         return(cross.GetMovieDB_Movie(session.Wrap()));
     }
 }
Ejemplo n.º 2
0
 public static MovieDB_Movie GetMovieDB_Movie(this CrossRef_AniDB_Other cross)
 {
     if (cross.CrossRefType != (int)CrossRefType.MovieDB)
     {
         return(null);
     }
     return(Repo.Instance.MovieDb_Movie.GetByOnlineID(int.Parse(cross.CrossRefID)));
 }
Ejemplo n.º 3
0
 public static MovieDB_Movie GetMovieDB_Movie(this CrossRef_AniDB_Other cross, ISessionWrapper session)
 {
     if (cross.CrossRefType != (int)CrossRefType.MovieDB)
     {
         return(null);
     }
     return(RepoFactory.MovieDb_Movie.GetByOnlineID(session, Int32.Parse(cross.CrossRefID)));
 }
        public CrossRef_AniDB_Other GetByAnimeIDAndType(ISession session, int animeID, CrossRefType xrefType)
        {
            CrossRef_AniDB_Other cr = session
                                      .CreateCriteria(typeof(CrossRef_AniDB_Other))
                                      .Add(Restrictions.Eq("AnimeID", animeID))
                                      .Add(Restrictions.Eq("CrossRefType", (int)xrefType))
                                      .UniqueResult <CrossRef_AniDB_Other>();

            return(cr);
        }
Ejemplo n.º 5
0
        public static void LinkAniDBMovieDB(int animeID, int movieDBID, bool fromWebCache)
        {
            // check if we have this information locally
            // if not download it now

            MovieDB_Movie movie = RepoFactory.MovieDb_Movie.GetByOnlineID(movieDBID);

            if (movie == null)
            {
                // we download the series info here just so that we have the basic info in the
                // database before the queued task runs later
                UpdateMovieInfo(movieDBID, false);
                movie = RepoFactory.MovieDb_Movie.GetByOnlineID(movieDBID);
                if (movie == null)
                {
                    return;
                }
            }

            // download and update series info and images
            UpdateMovieInfo(movieDBID, true);

            CrossRef_AniDB_Other xref =
                RepoFactory.CrossRef_AniDB_Other.GetByAnimeIDAndType(animeID, CrossRefType.MovieDB);

            if (xref == null)
            {
                xref = new CrossRef_AniDB_Other();
            }

            xref.AnimeID = animeID;
            if (fromWebCache)
            {
                xref.CrossRefSource = (int)CrossRefSource.WebCache;
            }
            else
            {
                xref.CrossRefSource = (int)CrossRefSource.User;
            }

            xref.CrossRefType = (int)CrossRefType.MovieDB;
            xref.CrossRefID   = movieDBID.ToString();
            RepoFactory.CrossRef_AniDB_Other.Save(xref);
            SVR_AniDB_Anime.UpdateStatsByAnimeID(animeID);

            logger.Trace("Changed moviedb association: {0}", animeID);

            if (ServerSettings.Instance.WebCache.Enabled)
            {
                CommandRequest_WebCacheSendXRefAniDBOther req =
                    new CommandRequest_WebCacheSendXRefAniDBOther(xref.CrossRef_AniDB_OtherID);
                req.Save();
            }
        }
Ejemplo n.º 6
0
 public static Azure_CrossRef_AniDB_Other_Request ToRequest(this CrossRef_AniDB_Other c)
 {
     return(new Azure_CrossRef_AniDB_Other_Request
     {
         CrossRef_AniDB_OtherID = c.CrossRef_AniDB_OtherID,
         AnimeID = c.AnimeID,
         CrossRefID = c.CrossRefID,
         CrossRefSource = c.CrossRefSource,
         CrossRefType = c.CrossRefType,
     });
 }
 public void Save(CrossRef_AniDB_Other obj)
 {
     using (var session = JMMService.SessionFactory.OpenSession())
     {
         // populate the database
         using (var transaction = session.BeginTransaction())
         {
             session.SaveOrUpdate(obj);
             transaction.Commit();
         }
     }
 }
Ejemplo n.º 8
0
        public static void Send_CrossRef_AniDB_Other(CrossRef_AniDB_Other data)
        {
            if (!ServerSettings.WebCache_XRefFileEpisode_Send)
            {
                return;
            }


            string uri = string.Format("http://{0}/AddCrossRef_AniDB_Other.aspx", ServerSettings.WebCache_Address);
            AddCrossRef_AniDB_OtherRequest fhr = new AddCrossRef_AniDB_OtherRequest(data);
            string xml = fhr.ToXML();

            SendData(uri, xml);
        }
Ejemplo n.º 9
0
        public static void Send_CrossRefAniDBOther(CrossRef_AniDB_Other data)
        {
            if (!ServerSettings.WebCache_TvDB_Send)
            {
                return;
            }

            string uri = string.Format(@"http://{0}/api/CrossRef_AniDB_Other", azureHostBaseAddress);

            Azure_CrossRef_AniDB_Other_Request input = data.ToRequest();
            string json = JSONHelper.Serialize <Azure_CrossRef_AniDB_Other_Request>(input);

            SendData(uri, json, "POST");
        }
Ejemplo n.º 10
0
        public static void Send_CrossRefAniDBOther(CrossRef_AniDB_Other data)
        {
            if (!ServerSettings.Instance.WebCache.TvDB_Send)
            {
                return;
            }

            string uri = $@"http://{azureHostBaseAddress}/api/CrossRef_AniDB_Other";

            Azure_CrossRef_AniDB_Other_Request input = data.ToRequest();
            string json = JSONHelper.Serialize(input);

            SendData(uri, json, "POST");
        }
Ejemplo n.º 11
0
        // default constructor
        public AddCrossRef_AniDB_OtherRequest(CrossRef_AniDB_Other data)
        {
            this.AnimeID      = data.AnimeID;
            this.CrossRefID   = data.CrossRefID;
            this.CrossRefType = data.CrossRefType;

            string username = ServerSettings.AniDB_Username;

            if (ServerSettings.WebCache_Anonymous)
            {
                username = Constants.AnonWebCacheUsername;
            }

            this.Username = username;
        }
Ejemplo n.º 12
0
        public static void RemoveLinkAniDBMovieDB(int animeID)
        {
            CrossRef_AniDB_Other xref = RepoFactory.CrossRef_AniDB_Other.GetByAnimeIDAndType(animeID, CrossRefType.MovieDB);

            if (xref == null)
            {
                return;
            }

            RepoFactory.CrossRef_AniDB_Other.Delete(xref.CrossRef_AniDB_OtherID);

            CommandRequest_WebCacheDeleteXRefAniDBOther req = new CommandRequest_WebCacheDeleteXRefAniDBOther(animeID,
                                                                                                              CrossRefType.MovieDB);

            req.Save();
        }
 public void Delete(int id)
 {
     using (var session = JMMService.SessionFactory.OpenSession())
     {
         // populate the database
         using (var transaction = session.BeginTransaction())
         {
             CrossRef_AniDB_Other cr = GetByID(id);
             if (cr != null)
             {
                 session.Delete(cr);
                 transaction.Commit();
             }
         }
     }
 }
Ejemplo n.º 14
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);
            }
        }
Ejemplo n.º 15
0
        public override void ProcessCommand()
        {
            try
            {
                CrossRef_AniDB_OtherRepository repCrossRef = new CrossRef_AniDB_OtherRepository();
                CrossRef_AniDB_Other           xref        = repCrossRef.GetByID(CrossRef_AniDB_OtherID);
                if (xref == null)
                {
                    return;
                }

                XMLService.Send_CrossRef_AniDB_Other(xref);
            }
            catch (Exception ex)
            {
                logger.ErrorException("Error processing CommandRequest_WebCacheSendXRefAniDBOther: {0}" + ex.ToString(), ex);
                return;
            }
        }
Ejemplo n.º 16
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.ContentType = "text/xml";

            try
            {
                CrossRef_AniDB_OtherRepository repCrossRef = new CrossRef_AniDB_OtherRepository();

                StreamReader reader  = new StreamReader(this.Request.InputStream);
                String       xmlData = reader.ReadToEnd();

                XmlDocument docXRef = new XmlDocument();
                docXRef.LoadXml(xmlData);

                string uname = Utils.TryGetProperty("AddCrossRef_AniDB_Other_Request", docXRef, "Username");

                string aid     = Utils.TryGetProperty("AddCrossRef_AniDB_Other_Request", docXRef, "AnimeID");
                int    animeid = 0;
                int.TryParse(aid, out animeid);

                string xrefID = Utils.TryGetProperty("AddCrossRef_AniDB_Other_Request", docXRef, "CrossRefID");

                string xtype    = Utils.TryGetProperty("AddCrossRef_AniDB_Other_Request", docXRef, "CrossRefType");
                int    xrefType = 0;
                int.TryParse(xtype, out xrefType);



                if (string.IsNullOrEmpty(uname) || string.IsNullOrEmpty(xrefID) || animeid <= 0 || xrefType <= 0)
                {
                    Response.Write(Constants.ERROR_XML);
                    return;
                }

                CrossRef_AniDB_Other        xref = null;
                List <CrossRef_AniDB_Other> recs = repCrossRef.GetByAnimeIDAndTypeAndUser(animeid, uname, (CrossRefType)xrefType);
                if (recs.Count == 1)
                {
                    xref = recs[0];
                }

                if (recs.Count == 0)
                {
                    xref = new CrossRef_AniDB_Other();
                }
                else
                {
                    xref = recs[0];
                }

                xref.AnimeID        = animeid;
                xref.AdminApproved  = 0;
                xref.CrossRefSource = 1;
                xref.CrossRefType   = xrefType;
                xref.CrossRefID     = xrefID;
                xref.Username       = uname;
                repCrossRef.Save(xref);

                // now send to mirror
                string uri = string.Format("http://{0}/AddCrossRef_AniDB_Other.aspx", Constants.MirrorWAIX);
                XMLService.SendData(uri, xmlData);
            }
            catch (Exception ex)
            {
                Response.Write(Constants.ERROR_XML);
            }
        }
        public CL_AniDB_AnimeCrossRefs GetCrossRefDetails(int animeID)
        {
            CL_AniDB_AnimeCrossRefs result = new CL_AniDB_AnimeCrossRefs
            {
                CrossRef_AniDB_TvDB  = new List <CrossRef_AniDB_TvDBV2>(),
                TvDBSeries           = new List <TvDB_Series>(),
                TvDBEpisodes         = new List <TvDB_Episode>(),
                TvDBImageFanarts     = new List <TvDB_ImageFanart>(),
                TvDBImagePosters     = new List <TvDB_ImagePoster>(),
                TvDBImageWideBanners = new List <TvDB_ImageWideBanner>(),

                CrossRef_AniDB_MovieDB = null,
                MovieDBMovie           = null,
                MovieDBFanarts         = new List <MovieDB_Fanart>(),
                MovieDBPosters         = new List <MovieDB_Poster>(),

                CrossRef_AniDB_MAL = null,

                CrossRef_AniDB_Trakt = new List <CrossRef_AniDB_TraktV2>(),
                TraktShows           = new List <CL_Trakt_Show>(),
                AnimeID = animeID
            };

            try
            {
                using (var session = DatabaseFactory.SessionFactory.OpenSession())
                {
                    SVR_AniDB_Anime anime = RepoFactory.AniDB_Anime.GetByAnimeID(animeID);
                    if (anime == null)
                    {
                        return(result);
                    }

                    var xrefs = RepoFactory.CrossRef_AniDB_TvDB.GetV2LinksFromAnime(animeID);

                    // TvDB
                    result.CrossRef_AniDB_TvDB = xrefs;

                    foreach (TvDB_Episode ep in anime.GetTvDBEpisodes())
                    {
                        result.TvDBEpisodes.Add(ep);
                    }

                    foreach (var xref in xrefs.DistinctBy(a => a.TvDBID))
                    {
                        TvDB_Series ser = RepoFactory.TvDB_Series.GetByTvDBID(xref.TvDBID);
                        if (ser != null)
                        {
                            result.TvDBSeries.Add(ser);
                        }

                        foreach (TvDB_ImageFanart fanart in RepoFactory.TvDB_ImageFanart.GetBySeriesID(xref.TvDBID))
                        {
                            result.TvDBImageFanarts.Add(fanart);
                        }

                        foreach (TvDB_ImagePoster poster in RepoFactory.TvDB_ImagePoster.GetBySeriesID(xref.TvDBID))
                        {
                            result.TvDBImagePosters.Add(poster);
                        }

                        foreach (TvDB_ImageWideBanner banner in RepoFactory.TvDB_ImageWideBanner.GetBySeriesID(xref
                                                                                                               .TvDBID))
                        {
                            result.TvDBImageWideBanners.Add(banner);
                        }
                    }

                    // Trakt


                    foreach (CrossRef_AniDB_TraktV2 xref in anime.GetCrossRefTraktV2(session))
                    {
                        result.CrossRef_AniDB_Trakt.Add(xref);

                        Trakt_Show show = RepoFactory.Trakt_Show.GetByTraktSlug(session, xref.TraktID);
                        if (show != null)
                        {
                            result.TraktShows.Add(show.ToClient());
                        }
                    }


                    // MovieDB
                    CrossRef_AniDB_Other xrefMovie = anime.GetCrossRefMovieDB();
                    result.CrossRef_AniDB_MovieDB = xrefMovie;


                    result.MovieDBMovie = anime.GetMovieDBMovie();


                    foreach (MovieDB_Fanart fanart in anime.GetMovieDBFanarts())
                    {
                        if (fanart.ImageSize.Equals(Shoko.Models.Constants.MovieDBImageSize.Original,
                                                    StringComparison.InvariantCultureIgnoreCase))
                        {
                            result.MovieDBFanarts.Add(fanart);
                        }
                    }

                    foreach (MovieDB_Poster poster in anime.GetMovieDBPosters())
                    {
                        if (poster.ImageSize.Equals(Shoko.Models.Constants.MovieDBImageSize.Original,
                                                    StringComparison.InvariantCultureIgnoreCase))
                        {
                            result.MovieDBPosters.Add(poster);
                        }
                    }

                    // MAL
                    List <CrossRef_AniDB_MAL> xrefMAL = anime.GetCrossRefMAL();
                    if (xrefMAL == null)
                    {
                        result.CrossRef_AniDB_MAL = null;
                    }
                    else
                    {
                        result.CrossRef_AniDB_MAL = new List <CrossRef_AniDB_MAL>();
                        foreach (CrossRef_AniDB_MAL xrefTemp in xrefMAL)
                        {
                            result.CrossRef_AniDB_MAL.Add(xrefTemp);
                        }
                    }
                }
                return(result);
            }
            catch (Exception ex)
            {
                logger.Error(ex, ex.ToString());
                return(result);
            }
        }
Ejemplo n.º 18
0
 public CrossRef_AniDB_OtherResult(CrossRef_AniDB_Other xref)
 {
     this.AnimeID    = xref.AnimeID;
     this.CrossRefID = xref.CrossRefID;
 }
Ejemplo n.º 19
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.ContentType = "text/xml";

            try
            {
                string aid     = Utils.GetParam("AnimeID");
                int    animeid = 0;
                int.TryParse(aid, out animeid);

                if (animeid <= 0)
                {
                    Response.Write(Constants.ERROR_XML);
                    return;
                }

                string xtype    = Utils.GetParam("CrossRefType");
                int    xrefType = 0;
                int.TryParse(xtype, out xrefType);

                if (xrefType <= 0)
                {
                    Response.Write(Constants.ERROR_XML);
                    return;
                }

                string uname = Utils.GetParam("uname");
                if (uname.Trim().Length == 0)
                {
                    Response.Write(Constants.ERROR_XML);
                    return;
                }

                CrossRef_AniDB_OtherRepository repCrossRef = new CrossRef_AniDB_OtherRepository();
                CrossRef_AniDB_Other           xref        = null;

                // check for user specific
                List <CrossRef_AniDB_Other> recs;
                if (xref == null)
                {
                    recs = repCrossRef.GetByAnimeIDAndTypeAndUser(animeid, uname, (CrossRefType)xrefType);
                    if (recs.Count > 0)
                    {
                        xref = recs[0];                                     // should only be one
                    }
                }

                // check for other users (anonymous)
                if (xref == null)
                {
                    // check for other users (anonymous)
                    recs = repCrossRef.GetByAnimeIDAndType(animeid, (CrossRefType)xrefType);
                    if (recs.Count == 0)
                    {
                        Response.Write(Constants.ERROR_XML);
                        return;
                    }

                    // find the most popular result

                    List <CrossRefStatOther> results = new List <CrossRefStatOther>();
                    foreach (CrossRef_AniDB_Other xrefloc in recs)
                    {
                        bool found = false;
                        foreach (CrossRefStatOther stat in results)
                        {
                            if (stat.CrossRefID.Equals(xrefloc.CrossRefID, StringComparison.InvariantCultureIgnoreCase))
                            {
                                found = true;
                                stat.ResultCount++;
                            }
                        }
                        if (!found)
                        {
                            CrossRefStatOther stat = new CrossRefStatOther();
                            stat.ResultCount = 1;
                            stat.CrossRefID  = xrefloc.CrossRefID;
                            stat.CrossRef    = xrefloc;
                            results.Add(stat);
                        }
                    }

                    CrossRefStatOther mostPopular = null;
                    foreach (CrossRefStatOther stat in results)
                    {
                        if (mostPopular == null)
                        {
                            mostPopular = stat;
                        }
                        else
                        {
                            if (stat.ResultCount > mostPopular.ResultCount)
                            {
                                mostPopular = stat;
                            }
                        }
                    }

                    xref = mostPopular.CrossRef;
                }

                CrossRef_AniDB_OtherResult result = new CrossRef_AniDB_OtherResult(xref);
                string ret = Utils.ConvertToXML(result, typeof(CrossRef_AniDB_OtherResult));
                Response.Write(ret);
            }
            catch (Exception ex)
            {
                Response.Write(ex.ToString());
                return;
            }
        }