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); } }
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); }
/// <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(" ", " "); 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); }