/// <summary> /// Jeu /// </summary> /// <param name="ficheJeuJVC">ficheJeuJVC</param> /// <param name="genre">genre</param> public Jeu(FicheJeuJVC ficheJeuJVC, Genre genre, Machine machine) : this() { this.Titre = ficheJeuJVC.Titre; this.Developpeur.Nom = ficheJeuJVC.Developpeur; this.Editeur.Nom = ficheJeuJVC.Editeur; if (!String.IsNullOrEmpty(ficheJeuJVC.DateSortie)) { if (ficheJeuJVC.DateSortie.Length == 4) { this.DateSortie = new DateTime(Int32.Parse(ficheJeuJVC.DateSortie), 1, 1); } else { this.DateSortie = DateTime.Parse(ficheJeuJVC.DateSortie); } } this.Synopsys = ficheJeuJVC.Description; this.LeGenre = genre; this.Photo = ficheJeuJVC.NomPhoto; this.LaMachine = machine; }
/// <summary> /// Désérialisation d'une liste de jeux /// </summary> /// <param name="stream"></param> /// <returns></returns> private ListeFichesJeuxJVC DeserialiserListeJeux(Stream stream) { string machine; string urlFiche; ListeFichesJeuxJVC listeFichesJeuxJVC = new ListeFichesJeuxJVC(); try { Log.MonitoringLogger().Info(KS_NOM_MODULE + "Début DeserialiserListeJeux"); StreamReader streamReader = new StreamReader(stream); string resultat = streamReader.ReadToEnd(); int indexDebut = resultat.LastIndexOf("[")+1; int indexFin = resultat.IndexOf("]")-1; resultat = resultat.Substring(indexDebut, indexFin - indexDebut); indexDebut = resultat.IndexOf("ul>") + 3; resultat = resultat.Substring(indexDebut, resultat.Length - indexDebut); resultat = resultat.Replace("&", "and"); XmlDocument xdoc = new XmlDocument(); xdoc.LoadXml(resultat); XPathNavigator xpathNavigator; xpathNavigator = xdoc.CreateNavigator(); XPathNodeIterator xpathNodeIterator; xpathNodeIterator = xpathNavigator.Select("/div/h3"); // On parcourt les chunks while (xpathNodeIterator.MoveNext()) { // On recupère le nom de machine machine = xpathNodeIterator.Current.Value; //on va à ul xpathNodeIterator.Current.MoveToNext(); // balises li xpathNodeIterator.Current.MoveToChild("li", ""); do { // Chaque balise li correspond à une fiche FicheJeuJVC ficheJeuJVC = new FicheJeuJVC(); ficheJeuJVC.Machine = xpathNodeIterator.Current.Value; xpathNodeIterator.Current.MoveToChild("a", ""); ficheJeuJVC.Titre = xpathNodeIterator.Current.Value; urlFiche = xpathNodeIterator.Current.GetAttribute("href", ""); urlFiche = urlFiche.Replace("jv:/", "http://ws.jeuxvideo.com"); ficheJeuJVC.UrlSimple = urlFiche; xpathNodeIterator.Current.MoveToParent(); if (xpathNodeIterator.Current.MoveToChild("strong", "")) { ficheJeuJVC.Machine = xpathNodeIterator.Current.Value; xpathNodeIterator.Current.MoveToParent(); } else { ficheJeuJVC.Machine = machine; } FicheJeuJVC ficheComplementaire = ObtenirFicheSimpleJeu(urlFiche); ficheJeuJVC.UrlVignette = ficheComplementaire.UrlVignette; ficheJeuJVC.Editeur = ficheComplementaire.Editeur; ficheJeuJVC.Developpeur = ficheComplementaire.Developpeur; ficheJeuJVC.DateSortie = ficheComplementaire.DateSortie; ficheJeuJVC.NomJaquette = ficheComplementaire.NomJaquette; ficheJeuJVC.Genre = ficheComplementaire.Genre; listeFichesJeuxJVC.AjouterFicheJeuJVC(ficheJeuJVC); } while (xpathNodeIterator.Current.MoveToNext()); xpathNodeIterator.Current.MoveToParent(); } foreach (FicheJeuJVC fiche in listeFichesJeuxJVC) { Console.WriteLine(fiche.ToString()); } return listeFichesJeuxJVC; } catch (Exception ex) { Log.MonitoringLogger().Info(KS_NOM_MODULE + "Erreur = " + ex.Message); throw; } finally { Log.MonitoringLogger().Info(KS_NOM_MODULE + "Fin DeserialiserListeJeux"); } }
/// <summary> /// Téléchargement d'une jaquette /// </summary> /// <param name="pUrlFilm"></param> /// <param name="film"></param> private void DownloadJaquette(FicheJeuJVC ficheJeu) { try { Log.MonitoringLogger().Info(KS_NOM_MODULE + "Début DownloadJaquette"); // Construction de l'url de recherche string url = string.Format(Properties.Settings.Default.UrlScreenshotsJVC, ficheJeu.CodeJeu); // Création de la requête HttpWebRequest request = CreateWebRequest(url); // Récupération de la réponse HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode != HttpStatusCode.OK) { string message = String.Format("POST failed. Received HTTP {0}", response.StatusCode); throw new ApplicationException(message); } // Récupération du flux Stream responseStream = response.GetResponseStream(); StreamReader streamReader = new StreamReader(responseStream); string resultat = streamReader.ReadToEnd(); // Récupération de l'url de la jaquette XmlDocument xdoc = new XmlDocument(); xdoc.LoadXml(resultat); XPathNavigator xpathNavigator; xpathNavigator = xdoc.CreateNavigator(); XPathNodeIterator xpathNodeIterator; xpathNodeIterator = xpathNavigator.Select("/screenshots/screenshot"); //TODO : accéder directement au bon // On parcourt les item screenshot jusqu'à la jaquette while (xpathNodeIterator.MoveNext() && ficheJeu.UrlJaquette == null) { // balises id xpathNodeIterator.Current.MoveToChild("id", ""); // On recupère le nom de machine string id = xpathNodeIterator.Current.Value; Console.WriteLine(id); // le screenshot correspond à la jaquette if (id == IdScreenShotFront) { //on va à url_screenshot xpathNodeIterator.Current.MoveToNext("url_screenshot", ""); ficheJeu.UrlJaquette = xpathNodeIterator.Current.Value; } xpathNodeIterator.Current.MoveToParent(); } string nomJaquette = ficheJeu.Titre + ".jpg"; if (nomJaquette.IndexOf(":") > 0) { nomJaquette = nomJaquette.Remove(nomJaquette.IndexOf(":"), 1); } // Enregistrement dans Temp string cheminFichier = Properties.Settings.Default.RepertoireTemp + nomJaquette; //Création du controle client WebClient webClient = new WebClient(); webClient.DownloadFile(ficheJeu.UrlJaquette, cheminFichier); ficheJeu.NomJaquette = nomJaquette; } catch (Exception ex) { Log.MonitoringLogger().Info(KS_NOM_MODULE + "Erreur", ex); throw ex; } finally { Log.MonitoringLogger().Info(KS_NOM_MODULE + "Fin DownloadJaquette"); } }
/// <summary> /// Fonction qui retourne la fiche détaillée d'un jeu /// </summary> /// <param name="critere"></param> public FicheJeuJVC ObtenirFicheDetailleJeu(FicheJeuJVC ficheJeuSimple) { Log.MonitoringLogger().Info(KS_NOM_MODULE + "Début ObtenirFicheDetailleJeu"); try { string responseValue = String.Empty; // Construction de l'url de recherche string url = string.Format(Properties.Settings.Default.UrlObtenirFicheJVC, ficheJeuSimple.CodeJeu); // Création de la requête HttpWebRequest request = CreateWebRequest(url); // Récupération de la réponse HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode != HttpStatusCode.OK) { string message = String.Format("POST failed. Received HTTP {0}", response.StatusCode); throw new ApplicationException(message); } // Récupération du flux Stream responseStream = response.GetResponseStream(); StringBuilder resultat = new StringBuilder(Properties.Settings.Default.EnteteXML); StreamReader streamReader = new StreamReader(responseStream); resultat.Append(streamReader.ReadToEnd()); resultat.Replace("<details_jeu>", "<jeu>"); resultat.Replace("</details_jeu>", "</jeu>"); resultat.Replace("<![CDATA[",""); resultat.Replace("]]>", ""); resultat.Replace("&", ""); StringReader sr = new StringReader(resultat.ToString()); // Désérialisation FicheJeuJVC ficheJeu = DeserialiserJeu(sr); ficheJeu.CodeJeu = ficheJeuSimple.CodeJeu; ficheJeu.DateSortie = ficheJeuSimple.DateSortie; ficheJeu.Developpeur = ficheJeuSimple.Developpeur; ficheJeu.Editeur = ficheJeuSimple.Editeur; ficheJeu.Genre = ficheJeuSimple.Genre; ficheJeu.Machine = ficheJeuSimple.Machine; ficheJeu.NomJaquette = ficheJeuSimple.NomJaquette; ficheJeu.Note = ficheJeuSimple.Note; ficheJeu.Titre = ficheJeuSimple.Titre; ficheJeu.UrlJaquette = ficheJeuSimple.UrlJaquette; ficheJeu.UrlVignette = ficheJeuSimple.UrlVignette; ficheJeu.UrlSimple = ficheJeuSimple.UrlSimple; ficheJeu.UrlDetaille = url; DownloadJaquette(ficheJeu); return ficheJeu; } catch (Exception ex) { Log.MonitoringLogger().Info(KS_NOM_MODULE + "Erreur = " + ex.Message); throw; } finally { Log.MonitoringLogger().Info(KS_NOM_MODULE + "Fin ObtenirFicheFilm"); } }
/// <summary> /// Create depuis la liste des fiches trouvées dans Allocine /// GET: /Home/Create /// </summary> /// <param name="codeJeuAllocine">codeJeuAllocine</param> /// <returns></returns> public ActionResult Create(string codeJeuJVC) { if (Request.IsAuthenticated) { try { MediaViewModel mediaViewModel = new MediaViewModel(Modele.Constantes.EnumTypeMedia.JEU); mediaViewModel.ListeProprietaire = DataManager.ListeProprietaires; mediaViewModel.ListeMachines = DataManager.ListeMachines; mediaViewModel.ListeGenres = DataManager.ObtenirListeGenre(Modele.Constantes.EnumTypeMedia.JEU); mediaViewModel.ListeEtatsMedia = DataManager.ListeEtatsMedia; if (String.IsNullOrEmpty(codeJeuJVC)) { } else { //Ajout via JVC GestionnaireJVC gestionnaireJVC = new GestionnaireJVC(); //FicheJeuJVC ficheJeuJVC = gestionnaireJVC.ObtenirFicheSimpleJeu(codeJeuJVC); FicheJeuJVC ficheJeuJVC = new FicheJeuJVC(); ficheJeuJVC.CodeJeu = codeJeuJVC; ficheJeuJVC = gestionnaireJVC.ObtenirFicheDetailleJeu(ficheJeuJVC); Genre genre = mediaViewModel.ListeGenres.Find( item => item.Libelle.ToLower().Replace(" ", "").Replace("-", "").Contains( ficheJeuJVC.Genre.ToLower().Replace(" ", "").Replace("-", ""))); Machine machine = mediaViewModel.ListeMachines.Find(item => item.Nom.ToLower().Equals(ficheJeuJVC.Machine.ToLower())); FileInfo sourceFile = new FileInfo("C:\\Temp\\" + ficheJeuJVC.NomPhoto); if (sourceFile.Exists) { FileInfo destFile = new FileInfo("D:\\Jaymz\\Images\\Pochettes\\Jeux\\" + ficheJeuJVC.NomPhoto); if (destFile.Exists) { destFile.Delete(); } sourceFile.MoveTo(destFile.FullName); } mediaViewModel.LeJeu = new Jeu(ficheJeuJVC, genre, machine); mediaViewModel.Developpeur = ficheJeuJVC.Developpeur; mediaViewModel.Editeur = ficheJeuJVC.Editeur; mediaViewModel.AnneeSortie = ficheJeuJVC.DateSortie; } //Sélection du propriétaire par défaut pour la création de l'exemplaire mediaViewModel.LeProprietaire.Code = mediaViewModel.ListeProprietaire.Find( item => item.Login.Equals(System.Web.HttpContext.Current.User.Identity.Name)).Code; return View(mediaViewModel); } catch (Exception ex) { HandleErrorInfo error = new HandleErrorInfo(ex, "Jeu", "Create"); return View("Error", error); } } else { return RedirectToAction("LogOn", "Account"); } }
/// <summary> /// Téléchargement d'une jaquette /// </summary> /// <param name="pUrlFilm"></param> /// <param name="film"></param> private void DownloadPhoto(FicheJeuJVC ficheJeu) { try { Log.MonitoringLogger().Info(KS_NOM_MODULE + "Début DownloadPhoto"); string nomPhoto = ficheJeu.Titre + ".jpg"; if (nomPhoto.IndexOf(":") > 0) { nomPhoto = nomPhoto.Remove(nomPhoto.IndexOf(":"), 1); } // Enregistrement dans Temp string cheminFichier = Properties.Settings.Default.RepertoireTemp + nomPhoto; //Création du controle client WebClient webClient = new WebClient(); webClient.DownloadFile(ficheJeu.UrlVignetteGrande, cheminFichier); ficheJeu.NomPhoto = nomPhoto; } catch (Exception ex) { Log.MonitoringLogger().Info(KS_NOM_MODULE + "Erreur", ex); throw ex; } finally { Log.MonitoringLogger().Info(KS_NOM_MODULE + "Fin DownloadPhoto"); } }