//добавить в базу данных public static void AddShowInDb_Entity(ShowInfo show) { using (var db = new Context()) { var country = db.Countries.Find(show.Country); if (country == null) { country = new CountryModel() { Name = show.Country }; } var new_show = new ShowModel() { Name = show.Name, OriginalName = show.OriginalName, Country = country, Genres = show.Genres, MyShowsRating = show.MyShowsRating }; db.Shows.Add(new_show); db.SaveChanges(); } }
//добавление в кэш public static void AddShowInDB(ShowInfo show) { // открывает базу данных, если ее нет - то создает using (var db = new LiteDatabase(NameDb)) { // Получаем коллекцию var collectionShows = db.GetCollection <ShowInfo>(NameCollection); //добавляем новый элемент collectionShows.Insert(show); } }
//поиск информации по ключу public static ShowInfo GetShowInfo(string id) { ShowInfo show = new ShowInfo(); string htmlShowId = "https://myshows.me/view/" + id + "/"; HtmlWeb web = new HtmlWeb(); HtmlDocument htmlDoc = web.Load(htmlShowId); try { show.Id = id; //Название сериала show.Name = htmlDoc.DocumentNode.SelectSingleNode("//main/h1[@itemprop='name']").InnerText.Trim();; //Оригинальное название show.OriginalName = htmlDoc.DocumentNode.SelectSingleNode("//main/p[@class='subHeader']").InnerText.Trim(); show.Image = htmlDoc.DocumentNode.SelectSingleNode(".//div[@class = 'presentBlock']").InnerHtml.Trim().Substring(34).Remove(79); //информация из таблицы var info = htmlDoc.DocumentNode.SelectNodes(".//div[@class = 'clear']/p"); foreach (var str in info) { if (str.InnerText.Contains("Страна")) { show.Country = str.InnerText.Trim().Substring(8); } else if (str.InnerText.Contains("Жанры")) { show.Genres = str.InnerText.Replace(" ", string.Empty).Replace("\n", " ").Substring(7); } else if (str.InnerText.Contains("Рейтинг MyShows")) { show.MyShowsRating = str.InnerText.Trim().Replace("\n", " ").Replace(" ", string.Empty).Substring(17); } } AddShowInDB(show); AddShowInDb_Entity(show); return(show); } catch (Exception) { return(null); } }