private static void LoadDataIntoDb(dynamic obj, int path)
        {
            try
            {
                MovieEntities db = new MovieEntities();

                string imdbId = obj[0]["imdb_id"];

                //if(!db.Movies.Select(m => m.ImdbID == imdbId).First())
                if (db.Movies.Count() == 0 || !db.Movies.Select(m => m.ImdbID == imdbId).First())
                {
                    Int64 existingMovieId = 0;
                    if (db.Movies.Count() > 0)
                    {
                        existingMovieId = db.Movies.Count();
                    }
                    Movie movie = new Movie();
                    movie.ID           = existingMovieId + 1;
                    movie.PlotDetailed = obj[0]["plot"];
                    movie.ImdbID       = obj[0]["imdb_id"];
                    movie.PlotSimple   = obj[0]["plot_simple"];
                    var tempruntime = obj[0]["runtime"];
                    movie.Runtime    = ConvertRuntime(tempruntime.ToString());
                    movie.Rated      = obj[0]["rated"];
                    movie.ImdbUrl    = obj[0]["imdb_url"];
                    movie.AKA        = obj[0]["also_known_as"][0];
                    movie.IMDBRating = obj[0]["rating"];
                    Int64    releaseDate = obj[0]["release_date"];
                    DateTime dtTime      = new DateTime(Int32.Parse(releaseDate.ToString().Substring(0, 4)), Int32.Parse(releaseDate.ToString().Substring(4, 2)), Int32.Parse(releaseDate.ToString().Substring(6, 2)));
                    movie.ReleaseDate = dtTime;
                    movie.Title       = obj[0]["title"];
                    Genres(obj, db);
                    db.Movies.Add(movie);
                    db.SaveChanges();
                    var savedMovie = db.Movies.Where(m => m.ImdbID == movie.ImdbID).Distinct();

                    MoviePersonRole(obj, db);
                    var    ListOfGenre = obj[0]["genres"];
                    Poster poster      = new Poster();
                    poster.imdb  = obj[0]["poster"]["imdb"];
                    poster.cover = obj[0]["poster"]["cover"];
                    PosterInfo posterInfo = new PosterInfo();
                    posterInfo.Imdb    = poster.imdb;
                    posterInfo.Cover   = poster.cover;
                    posterInfo.MovieId = savedMovie.First().ID;
                    db.PosterInfoes.Add(posterInfo);
                    db.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                string inputfolder = "C:\\Users\\PrashMaya\\My Documents\\Exceptions\\Movie{0}.txt";
                string inputfile   = String.Format(inputfolder, path);
                System.IO.File.WriteAllText(inputfile, ex.ToString());
                Console.WriteLine(ex.Message);
            }
        }
Exemple #2
0
        public ActionResult GetPosters(XMLMovieProperties prop)
        {
            try
            {
                if (prop == null)
                {
                    return(null);
                }

                JavaScriptSerializer json   = new JavaScriptSerializer();
                TableManager         tblMgr = new TableManager();
                List <string>        urls   = new SantaImageCrawler().GetMoviePosterUrls(prop.SantaPosterLink);
                ImdbCrawler          ic     = new ImdbCrawler();

                MovieEntity   me           = tblMgr.GetMovieByUniqueName(prop.MovieName.ToLower().Replace(" ", "-").Replace(".", ""));
                List <string> processedUrl = json.Deserialize <List <string> >(me.Posters);
                me.Pictures = (string.IsNullOrEmpty(me.Pictures) || me.Pictures == "null") ? "[]" : me.Pictures;

                List <PosterInfo> posters = json.Deserialize <List <PosterInfo> >(me.Pictures);

                int    imageCounter = 1;
                string newImageName = string.Empty;

                if (processedUrl != null)
                {
                    imageCounter = processedUrl.Count + 1;

                    if (posters == null)
                    {
                        posters = new List <PosterInfo>();
                    }

                    foreach (string process in processedUrl)
                    {
                        PosterInfo info = new PosterInfo();
                        info.url = process;
                        posters.Add(info);
                    }
                }
                else
                {
                    processedUrl = new List <string>();
                    posters      = new List <PosterInfo>();
                }

                foreach (string url in urls)
                {
                    PosterInfo info = new PosterInfo();

                    try
                    {
                        string posterPath = ic.GetNewImageName(prop.MovieName, ic.GetFileExtension(url), imageCounter, false, ref newImageName);
                        ic.DownloadImage(url, posterPath);

                        processedUrl.Add(newImageName);

                        info.url    = newImageName;
                        info.source = prop.SantaPosterLink;
                        posters.Add(info);

                        imageCounter++;
                    }
                    catch (Exception)
                    {
                        // Skip that image
                    }
                }

                me.Posters  = JsonConvert.SerializeObject(processedUrl);
                me.Pictures = JsonConvert.SerializeObject(posters);
                tblMgr.UpdateMovieById(me);
            }
            catch (Exception)
            {
            }

            return(null);
            //return Json(new { Status = "Ok", Message = "Selected news deleted successfully." }, JsonRequestBehavior.AllowGet);
        }
Exemple #3
0
        /// <summary>
        /// Распарсить.
        /// </summary>
        /// <param name="source">Источник.</param>
        /// <returns>Результат.</returns>
        public IBoardPost Parse(BoardPost2WithParentLink source)
        {
            var data      = source.Post;
            var link      = source.ParentLink;
            var isPreview = source.EntityType != PostStoreEntityType.Post;

            var ipIdRegex  = RegexCache.CreateRegex(IpIdRegexText);
            var ipIdRegex2 = RegexCache.CreateRegex(IpIdRegexText2);
            var colorRegex = RegexCache.CreateRegex(ColorRegexText);

            var flags = new HashSet <Guid>();

            if (data.Banned != "0" && !string.IsNullOrWhiteSpace(data.Banned))
            {
                flags.Add(BoardPostFlags.Banned);
            }
            if (data.Closed != "0" && !string.IsNullOrWhiteSpace(data.Closed))
            {
                flags.Add(BoardPostFlags.Closed);
            }
            if (data.Sticky != "0" && !string.IsNullOrWhiteSpace(data.Sticky))
            {
                flags.Add(BoardPostFlags.Sticky);
            }
            if (isPreview)
            {
                flags.Add(BoardPostFlags.ThreadPreview);
            }
            if (source.Counter == 1)
            {
                flags.Add(BoardPostFlags.ThreadOpPost);
            }
            if (data.Op != "0" && !string.IsNullOrWhiteSpace(data.Op))
            {
                flags.Add(BoardPostFlags.Op);
            }
            if ("mailto:sage".Equals((data.Email ?? "").Trim(), StringComparison.OrdinalIgnoreCase))
            {
                flags.Add(BoardPostFlags.Sage);
            }
            if (data.Edited != "0" && !string.IsNullOrWhiteSpace(data.Edited))
            {
                flags.Add(BoardPostFlags.IsEdited);
            }
            if ((data.Endless ?? 0) != 0)
            {
                flags.Add(BoardPostFlags.Endless);
            }
            string admName = null;

            if (data.Tripcode != null)
            {
                if (data.Tripcode.StartsWith("!!%") && data.Tripcode.EndsWith("%!!"))
                {
                    if ("!!%mod%!!".Equals(data.Tripcode))
                    {
                        admName = "## Mod ##";
                    }
                    else if ("!!%adm%!!".Equals(data.Tripcode))
                    {
                        admName = "## Abu ##";
                    }
                    else if ("!!%Inquisitor%!!".Equals(data.Tripcode))
                    {
                        admName = "## Applejack ##";
                    }
                    else if ("!!%coder%!!".Equals(data.Tripcode))
                    {
                        admName = "## Кодер ##";
                    }
                    else
                    {
                        admName = data.Tripcode.Replace("!!%", "## ").Replace("%!!", " ##");
                    }
                    flags.Add(BoardPostFlags.AdminTrip);
                }
            }
            var number   = data.Number.TryParseWithDefault();
            var thisLink = new PostLink()
            {
                Engine    = MakabaConstants.MakabaEngineId,
                Board     = link.Board,
                OpPostNum = link.OpPostNum,
                PostNum   = number
            };
            var    postDocument = _htmlParser.ParseHtml(data.Comment ?? "", thisLink);
            var    name         = admName != null && string.IsNullOrWhiteSpace(data.Name) ? admName : WebUtility.HtmlDecode(data.Name ?? string.Empty).Replace("&nbsp;", " ");
            string nameColor    = null;
            Color? color        = null;
            var    match        = ipIdRegex.Match(name);
            var    match2       = ipIdRegex2.Match(name);

            if (match.Success)
            {
                name = match.Groups["id"].Captures[0].Value;
            }
            else if (match2.Success)
            {
                name      = match2.Groups["id"].Captures[0].Value;
                nameColor = match2.Groups["style"].Captures[0].Value;
                var cmatch = colorRegex.Match(nameColor);
                if (cmatch.Success)
                {
                    try
                    {
                        var r = byte.Parse(cmatch.Groups["r"].Captures[0].Value, CultureInfo.InvariantCulture.NumberFormat);
                        var g = byte.Parse(cmatch.Groups["g"].Captures[0].Value, CultureInfo.InvariantCulture.NumberFormat);
                        var b = byte.Parse(cmatch.Groups["b"].Captures[0].Value, CultureInfo.InvariantCulture.NumberFormat);
                        color = Color.FromArgb(255, r, g, b);
                    }
                    catch (Exception)
                    {
                        color = null;
                    }
                }
            }
            else if (name.StartsWith("Аноним ID:", StringComparison.OrdinalIgnoreCase))
            {
                name = name.Remove(0, "Аноним ID:".Length).Trim();
            }
            PosterInfo posterInfo = null;

            if (!string.IsNullOrEmpty(name) || !string.IsNullOrWhiteSpace(data.Tripcode))
            {
                posterInfo = new PosterInfo()
                {
                    Name         = HtmlToText(name ?? ""),
                    NameColor    = color,
                    NameColorStr = nameColor,
                    Tripcode     = data.Tripcode
                };
            }
            var           iconAndFlag = ParseFlagAndIcon(data.Icon);
            BoardPostTags tags        = null;

            if (!string.IsNullOrWhiteSpace(data.Tags))
            {
                tags = new BoardPostTags()
                {
                    TagStr = data.Tags,
                    Tags   = new List <string>()
                    {
                        data.Tags
                    }
                };
            }
            BoardPostLikes likes = null;

            if (data.Likes != null || data.Dislikes != null)
            {
                likes = new BoardPostLikes()
                {
                    Likes    = data.Likes ?? 0,
                    Dislikes = data.Dislikes ?? 0
                };
            }
            Core.Models.Posts.BoardPost result;
            if (source.EntityType == PostStoreEntityType.CatalogPost)
            {
                result = new CatalogBoardPost()
                {
                    OnPageSequence = source.Counter
                };
            }
            else
            {
                result = new Core.Models.Posts.BoardPost();
            }
            result.Link              = thisLink;
            result.Comment           = postDocument;
            result.ParentLink        = link;
            result.Subject           = WebUtility.HtmlDecode(data.Subject ?? string.Empty);
            result.BoardSpecificDate = data.Date;
            result.Date              = DatesHelper.FromUnixTime(data.Timestamp.TryParseWithDefault());
            result.Flags             = flags.ToList();
            result.Quotes            = new List <ILink>();
            result.Hash              = data.Md5;
            result.Email             = data.Email;
            result.MediaFiles        = new List <IPostMedia>();
            result.Counter           = source.Counter;
            result.Poster            = posterInfo;
            result.Icon              = iconAndFlag.Icon;
            result.Country           = iconAndFlag.Country;
            result.Tags              = tags;
            result.UniqueId          = Guid.NewGuid().ToString();
            result.Likes             = likes;
            result.LoadedTime        = source.LoadedTime;
            result.OnServerCounter   = source.Post.CountNumber;
            if (data.Files != null)
            {
                foreach (var f in data.Files)
                {
                    BoardLinkBase mediaLink, tnLink;
                    if (IsBoardLink(f.Path, link.Board))
                    {
                        mediaLink = new BoardMediaLink()
                        {
                            Engine = MakabaConstants.MakabaEngineId,
                            Board  = link.Board,
                            Uri    = RemoveBoardFromLink(f.Path),
                        };
                        tnLink = new BoardMediaLink()
                        {
                            Engine = MakabaConstants.MakabaEngineId,
                            Board  = link.Board,
                            Uri    = RemoveBoardFromLink(f.Thumbnail),
                        };
                    }
                    else
                    {
                        mediaLink = new EngineMediaLink()
                        {
                            Engine = MakabaConstants.MakabaEngineId,
                            Uri    = f.Path,
                        };
                        tnLink = new EngineMediaLink()
                        {
                            Engine = MakabaConstants.MakabaEngineId,
                            Uri    = f.Thumbnail,
                        };
                    }
                    var media = new PostMediaWithThumbnail()
                    {
                        MediaLink   = mediaLink,
                        FileSize    = (ulong)(f.Size * 1024),
                        Height      = f.Heigth,
                        Width       = f.Width,
                        Name        = f.Name,
                        MediaType   = f.Type == MakabaMediaTypes.Webm ? PostMediaTypes.WebmVideo : PostMediaTypes.Image,
                        DisplayName = f.DisplayName,
                        FullName    = f.FullName,
                        Nsfw        = f.NotSafeForWork != 0,
                        Hash        = f.Md5,
                        Duration    = f.Duration,
                        Thumbnail   = new PostMediaWithSize()
                        {
                            MediaLink = tnLink,
                            Height    = f.TnHeight,
                            Width     = f.TnWidth,
                            FileSize  = null,
                            MediaType = PostMediaTypes.Image
                        },
                    };
                    result.MediaFiles.Add(media);
                }
            }
            if (source.Counter == 1 && string.IsNullOrWhiteSpace(result.Subject))
            {
                try
                {
                    var lines = result.Comment.ToPlainText();
                    if (lines.Count > 0)
                    {
                        var s = lines.FirstOrDefault(l => !string.IsNullOrWhiteSpace(l));
                        if (s != null)
                        {
                            if (s.Length >= 50)
                            {
                                s = s.Substring(0, 50 - 3) + "...";
                            }
                            result.Subject = s;
                        }
                    }
                }
                catch
                {
                }
            }
            return(result);
        }
        public ActionResult GetPosters(XMLMovieProperties prop)
        {
            try
            {
                if (prop == null)
                    return null;

                JavaScriptSerializer json = new JavaScriptSerializer();
                TableManager tblMgr = new TableManager();
                List<string> urls = new SantaImageCrawler().GetMoviePosterUrls(prop.SantaPosterLink);
                ImdbCrawler ic = new ImdbCrawler();

                MovieEntity me = tblMgr.GetMovieByUniqueName(prop.MovieName.ToLower().Replace(" ", "-").Replace(".", ""));
                List<string> processedUrl = json.Deserialize<List<string>>(me.Posters);
                me.Pictures = (string.IsNullOrEmpty(me.Pictures) || me.Pictures == "null") ? "[]" : me.Pictures;

                List<PosterInfo> posters = json.Deserialize<List<PosterInfo>>(me.Pictures);

                int imageCounter = 1;
                string newImageName = string.Empty;

                if (processedUrl != null)
                {
                    imageCounter = processedUrl.Count + 1;

                    if (posters == null)
                        posters = new List<PosterInfo>();

                    foreach (string process in processedUrl)
                    {
                        PosterInfo info = new PosterInfo();
                        info.url = process;
                        posters.Add(info);
                    }
                }
                else
                {
                    processedUrl = new List<string>();
                    posters = new List<PosterInfo>();

                }

                foreach (string url in urls)
                {
                    PosterInfo info = new PosterInfo();

                    try
                    {
                        string posterPath = ic.GetNewImageName(prop.MovieName, ic.GetFileExtension(url), imageCounter, false, ref newImageName);
                        ic.DownloadImage(url, posterPath);

                        processedUrl.Add(newImageName);

                        info.url = newImageName;
                        info.source = prop.SantaPosterLink;
                        posters.Add(info);

                        imageCounter++;
                    }
                    catch (Exception)
                    {
                        // Skip that image
                    }
                }

                me.Posters = JsonConvert.SerializeObject(processedUrl);
                me.Pictures = JsonConvert.SerializeObject(posters);
                tblMgr.UpdateMovieById(me);
            }
            catch (Exception)
            {

            }

            return null;
            //return Json(new { Status = "Ok", Message = "Selected news deleted successfully." }, JsonRequestBehavior.AllowGet);
        }