virtual async public Task <List <InfosFilm> > loadInfosFilm(Film f) { // Page de recherche allocine pour trouver la ou les pages consacrees au film List <string> requetes = PageRecherche(f.Titre); if (requetes == null) { // Pas trouve return(null); } List <InfosFilm> alternatives = new List <InfosFilm>(); foreach (string requete in requetes) { MainForm.WriteMessageToConsole(requete); InfosFilm infos = await PageFilm(requete); if (infos != null && !infos.estVide()) { alternatives.Add(infos); } } return(alternatives); }
/// <summary> /// Recherche des informations pour un films /// </summary> /// <param name="film"></param> /// <returns></returns> internal async Task <List <InfosFilm> > rechercheInternet(Film film) { try { MainForm.WriteMessageToConsole("Recherche: " + nom); string url = string.Format(formatUrlRecherche, requete(film.Titre)); List <string> pagesFilms = extract(url, xpathRecherche); if (pagesFilms == null) { return(null); } List <InfosFilm> infos = new List <InfosFilm>(); foreach (string page in pagesFilms) { InfosFilm info = await chargePage(string.Format(formatUrlFilm, page)); if (!(info == null || info.estVide())) { infos.Add(info); } } return(infos); } catch (Exception e) { MainForm.WriteExceptionToConsole(e); return(null); } }
/// <summary> /// Chargement de la page d'un film et extraction des informations /// </summary> /// <param name="page"></param> /// <returns></returns> private async Task <InfosFilm> chargePage(string requete) { MainForm.WriteMessageToConsole($"Requete {requete}"); HtmlDocument doc = InternetUtils.getInstance().loadPage(requete); if (doc == null) { MainForm.WriteErrorToConsole("Erreur de chargement de la page " + requete); return(null); } InfosFilm info = new InfosFilm(); info._realisateur = cumuleExtract(doc, xpathRealisateur); MainForm.WriteMessageToConsole($"Réalisateur: {info._realisateur}"); info._acteurs = cumuleExtract(doc, xpathActeurs); MainForm.WriteMessageToConsole("Acteurs: " + info._acteurs); info._genres = cumuleExtract(doc, xpathGenres); MainForm.WriteMessageToConsole("Genres: " + info._genres); info._nationalite = cumuleExtract(doc, xpathNationalite); MainForm.WriteMessageToConsole("Nationalite: " + info._nationalite); info._resume = cumuleExtract(doc, xpathResume); MainForm.WriteMessageToConsole("Résumé: " + info._resume); string imglink = cumuleExtract(doc, xpathAffiche); MainForm.WriteMessageToConsole("Affiche: " + imglink); if (imglink != null) { info._image = Images.retaille(await InternetUtils.loadImage(imglink, Configuration.largeurMaxImages), Configuration.largeurMaxImages); } return(info); }
protected override async Task <InfosFilm> PageFilm(string requete) { InfosFilm result = new InfosFilm(); // Chargement de la page du film HtmlDocument doc = Internet.getInstance().loadPage(requete); // Image HtmlNodeCollection img = doc.DocumentNode.SelectNodes(CHERCHE_IMAGE); if (img?.Count >= 1) { string lienImage = img[0].Attributes["src"].Value; MainForm.WriteMessageToConsole("Image: " + lienImage); result._image = await Internet.loadImage(lienImage); } // Informations { HtmlNodeCollection infos = doc.DocumentNode.SelectNodes("//div[@class='meta-body-item']"); foreach (HtmlNode node in infos) { HtmlNodeCollection nodes = node.ChildNodes; if (nodes != null && nodes.Count >= 4) { string key = trim(nodes[1].InnerText); if ("De".Equals(key)) { result._realisateur = trim(nodes[3].InnerText); } else if ("Avec".Equals(key)) { result._acteurs = trim(nodes[3].InnerText); for (int i = 4; i < nodes.Count; i++) { string text = trim(nodes[i].InnerText); if (text.Length > 0 && !"plus".Equals(text)) { result._acteurs = result._acteurs + ", " + text; } } } else if ("Genres".Equals(key)) { result._genres = trim(nodes[3].InnerText); for (int i = 4; i < nodes.Count; i++) { string text = trim(nodes[i].InnerText); if (text.Length > 0 && !"plus".Equals(text)) { result._genres = trim(nodes[3].InnerText); } } } else if ("Nationalité".Equals(key)) { result._nationalite = trim(nodes[3].InnerText); } else if ("Date de sortie".Equals(key)) { result._dateSortie = trim(nodes[3].InnerText); } } } } // Resume { HtmlNodeCollection resume = doc.DocumentNode.SelectNodes("//div[@class='ovw-synopsis-txt']"); if (resume != null) { result._resume = trim(resume[0].InnerText); } } return(result); }
protected async override Task <InfosFilm> PageFilm(string requete) { MainForm.WriteMessageToConsole("Chargement de la page du film :" + requete); InfosFilm result = new InfosFilm(); HtmlDocument doc = Internet.getInstance().loadPage(requete); // Image HtmlNode img = doc.DocumentNode.SelectSingleNode(CHERCHE_IMAGE); if (img != null) { string lienImage = img.Attributes["src"].Value; MainForm.WriteMessageToConsole("Image: " + lienImage); result._image = await Internet.loadImage(lienImage); } // Date de sortie HtmlNode date = doc.DocumentNode.SelectSingleNode(@"//div[@class='title_wrapper']//a[contains(@href,'releaseinfo')]"); if (date != null) { result._dateSortie = trim(date.InnerText); } // Genres HtmlNodeCollection genres = doc.DocumentNode.SelectNodes(@"//div[@class='title_wrapper']//a[contains(@href,'/genre/')]"); if (genres?.Count > 0) { result._genres = trim(genres[0].InnerText); for (int i = 1; i < genres.Count; i++) { result._genres += ", " + trim(genres[i].InnerText); } } // Resume HtmlNode resume = doc.DocumentNode.SelectSingleNode(CHERCHE_RESUME); if (resume != null) { result._resume = trim(resume.InnerText); } // Realisateur HtmlNode realisateur = doc.DocumentNode.SelectSingleNode(CHERCHE_REALISATEUR); if (realisateur != null) { result._realisateur = trim(realisateur?.InnerText); } // Informations HtmlNodeCollection acteurs = doc.DocumentNode.SelectNodes(CHERCHE_ACTEURS); if (acteurs?.Count > 0) { result._acteurs = trim(acteurs[0].InnerText); for (int i = 1; i < acteurs.Count; i++) { result._acteurs += ", " + trim(acteurs[i].InnerText); } } return(result); }