Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        /// <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);
            }
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }