From 5b3fa6fac8a53d1ce7d43d6c506db104a42c206a Mon Sep 17 00:00:00 2001 From: pifou Date: Tue, 10 Jul 2007 16:40:04 +0000 Subject: [PATCH] =?utf8?q?ADD=20Ajout=20de=20la=20possibilit=C3=A9=20de=20?= =?utf8?q?mettre=20=C3=A0=20jour=20des=20champs=20de=20la=20bd?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: svn://euphorik.ch/pompage@51 02bbb61a-6d21-0410-aba0-cb053bdfd66a --- img/affichette_test/14.jpg | Bin 8416 -> 11878 bytes src/basemodule.rb | 18 ++- src/constantes.rb | 11 +- src/film.rb | 8 ++ src/films.rb | 19 ++- src/modules/allocine.rb | 207 ++++++++++++++++++-------------- src/yopyop.rb | 13 +- update.bat | 14 +++ update_test.bat | 14 +++ xml/test.xml | 238 +++++++++++++++++++++++++++++-------- 10 files changed, 399 insertions(+), 143 deletions(-) create mode 100644 update.bat create mode 100644 update_test.bat diff --git a/img/affichette_test/14.jpg b/img/affichette_test/14.jpg index ac906f17435f723daedac6ea4d8b04ec47d16bbe..be20dd7a2c0996cf75d951f14e67d72778dd1b35 100644 GIT binary patch delta 11490 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 nOa9Dgi{9XG$kYcKs literal 8416 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 diff --git a/src/basemodule.rb b/src/basemodule.rb index e67a729..0cd132e 100644 --- a/src/basemodule.rb +++ b/src/basemodule.rb @@ -1,3 +1,4 @@ +# coding: utf-8 class Basemodule # Retourne un Hash contenant les ids (de allocine) trouvés indexés par une chaine. @@ -12,11 +13,26 @@ class Basemodule # Charge toutes les informations d'un films à partir de son id. # p1 : l'id de allocine - def load(id) + def load(id, film) + raise + end + + # Charge toutes les informations d'un films à partir d'un url. + # p1 : l'id de allocine + def loadURL(url, film) raise end # appelé lorsque le module n'est plus utile (permet de libérer des ressource par exemple). def finish end + + def setChamp(c) + @champ = c + end + + def take?(champ) + return true if !defined? @champ + return champ.match(Regexp::new(@champ, true)) != nil + end end \ No newline at end of file diff --git a/src/constantes.rb b/src/constantes.rb index 7642ed1..9b0a80c 100644 --- a/src/constantes.rb +++ b/src/constantes.rb @@ -19,4 +19,13 @@ LOAD_DATA = true NB_CONN_MAX = 20 # une aide pour l'utilisateur -USAGE = "1. USAGE : yopyop.rb -x [-d ] [-m ] [-a ]\r\n2. OU : yopyop.rb -p -x -a " +USAGE = < [-u champ] [-d ] [-m ] [-a ] +2. OU : yopyop.rb -p -x -a + -x : le fichier xml, si il n'existe pas, il est créé. + -u : mise à jour (update) des films dans la BD. 'champ' est une expression régulière représentant un ou plusieurs champs. + -d : le répertoire dans lequel se trouvent les films. + -m : le module à utiliser pour le pompage. Défaut = 'Allocine'. Voir le repertoire /src/modules/ + -a : le repertoire dans lequel sont stocké les images (affichettes). + -p : Efface les images qui n'ont pas de correspondance dans la BD (purge). +USAGECHAINE diff --git a/src/film.rb b/src/film.rb index 834ca26..b070abb 100644 --- a/src/film.rb +++ b/src/film.rb @@ -77,6 +77,7 @@ class Film puts "#{i}. #{n}" i += 1 } + puts "______" puts "A. Passer et l'ajouter" puts "B. Ignorer" puts "C. Tout ignorer" @@ -144,6 +145,13 @@ class Film self end + # Met à jour un ou plusieurs champs correspondant à 'champ'. + def update(champ) + return if @url == nil || @url == "" + @mod.setChamp(champ) + @mod.loadURL(@url, self) + end + # Renvoie un film sous la forme d'un élément XML . # ret [REXML::Element] : un element xml def getXml diff --git a/src/films.rb b/src/films.rb index 7d9c17e..4eff4e8 100644 --- a/src/films.rb +++ b/src/films.rb @@ -103,6 +103,14 @@ class Films Dir::chdir(repPrecedant) end + # Mise à jour des films dans la BD. + # p1 string : un motif Regex correspondant à un ou plusieurs champs + def update(champ) + @films.each{|t, f| + f.update(champ) + } + end + # Sauve les films dans un fichier XML def sauverFilms # le document @@ -171,6 +179,9 @@ class Films acteurs.each{|e| film.acteurs << Personne::ajouter(e.get_text.value) } + realisateurs.each{|e| + film.realisateurs << Personne::ajouter(e.get_text.value) + } pays.each{|e| film.pays << Pays::ajouter(e.get_text.value) } @@ -213,14 +224,14 @@ class Films if @films.has_key?(film.titre) if !@filmsFichier.has_key?(film.fichiers[0]) - puts "[i] movie #{film.titre} has a another file part : #{film.fichiers[0]}" + puts "[i] Le film #{film.titre} possède une autre partie : #{film.fichiers[0]}" @films[film.titre].addFichier(film.fichiers[0]) @filmsFichier[film.fichiers[0]] = @films[film.titre] else - puts "[!] Duplicate movie : #{film.titre} (#{film.fichiers[0]})" + puts "[!] Film déjà dans la BD : #{film.titre} (#{film.fichiers[0]})" end else - puts "[i] movie added : #{film.titre} (#{film.fichiers[0]})" + puts "[i] Film ajouté : #{film.titre} (#{film.fichiers[0]})" @films[film.titre] = film @filmsFichier[film.fichiers[0]] = film end @@ -246,7 +257,7 @@ class Films # on skip si le film est déjà dans la BD if film = @filmsFichier[fichier] - puts "[i] Already exists in DB : #{film.titre} (#{fichier})" + puts "[!] Film déjà dans la BD : #{film.titre} (#{film.fichiers[0]})" next end diff --git a/src/modules/allocine.rb b/src/modules/allocine.rb index 23a26b8..5a4e759 100644 --- a/src/modules/allocine.rb +++ b/src/modules/allocine.rb @@ -20,7 +20,6 @@ module Net end end - # un module d'importation pour le site "www.allocine.fr" class Allocine < Basemodule @@ -28,7 +27,7 @@ class Allocine < Basemodule begin @connexion = Net::HTTP::new('www.allocine.fr').start if @connexion == nil || !@connexion.started? rescue - Puts "Impossible de se connecter à Allocine. Retry.." + Puts "[!] Impossible de se connecter à Allocine. Retry.." retry end end @@ -80,11 +79,20 @@ class Allocine < Basemodule # Voir le parent. def load(id, film) + loadPath("/film/fichefilm_gen_cfilm=#{id}.html") + end + + def loadURL(url, film) + loadPath(URI.parse(url).path, film) + end + + # Voir le parent. + def loadPath(path, film) createConnexion html = nil begin - html = @connexion.get("/film/fichefilm_gen_cfilm=#{id}.html").body + html = @connexion.get(path).body rescue Exception => e p e puts "[!] Erreur lors du chargement de #{film.fichiers[0]}, retry.." @@ -92,92 +100,119 @@ class Allocine < Basemodule createConnexion retry end - - // =~ html - unless $1.nil? - @threadImage = Thread::start($1){|imageUrl| - nbRetry = 0 - begin - imageUrlParsed = URI.parse(imageUrl) - connexionImage = Net::HTTP::new(imageUrlParsed.host).start - image = connexionImage.get(imageUrlParsed.path).body - f = File::new($repBase + "/" + $repAffichette + film.id.to_s + ".jpg", 'w').binmode - f.write(image) - f.close - connexionImage.finish - rescue Exception => e - puts e.message - puts e.backtrace - puts "[!] Erreur lors du chargement de l'image '#{imageUrl}', retry.." - retry if (nbRetry += 1) < 5 - end - } - end - + + puts "Pompage de #{film.titre} (#{film.fichiers[0]}) ..." + #convertit le code latin-1 en UTF8 html = Iconv.iconv("UTF-8", "ISO-8859-1", html)[0] + + if take?("image") + // =~ html + unless $1.nil? + @threadImage = Thread::start($1){|imageUrl| + nbRetry = 0 + begin + imageUrlParsed = URI.parse(imageUrl) + connexionImage = Net::HTTP::new(imageUrlParsed.host).start + image = connexionImage.get(imageUrlParsed.path).body + f = File::new($repBase + "/" + $repAffichette + film.id.to_s + ".jpg", 'w').binmode + f.write(image) + f.close + connexionImage.finish + rescue Exception => e + puts e.message + puts e.backtrace + puts "[!] Erreur lors du chargement de l'image '#{imageUrl}', retry.." + retry if (nbRetry += 1) < 5 + end + } + end + end + #url - film.url = "http://www.allocine.fr/film/fichefilm_gen_cfilm=#{id}.html" - - # Titre - /(.*?)<\/title>/ =~ html - film.titre = $1 unless $1.nil? - - puts "Movie found : #{film.titre} (#{film.fichiers[0]})" - - # Année - /<h4>Année de production : (\d+)<\/h4>/ =~ html - film.annee = $1 unless $1.nil? - - # Réalisateurs - /<h4>Réalisé par(.*?)<\/h4>/ =~ html - $1.scan(/\s*<a class="link1" href=".*?">(.*?)<\/a>\s*/m){|a| - film.realisateurs << Personne::ajouter(a[0]) unless a[0].nil? - } unless $1.nil? - - # Acteurs - /<h4>Avec(.*?)<\/h4>/ =~ html - $1.scan(/\s*<a class="link1" href="\/personne\/fichepersonne_gen_cpersonne=\d+\.html">(.+?)<\/a>\s*/m){|a| - film.acteurs << Personne::ajouter(a[0]) unless a[0].nil? - } unless $1.nil? - - # Pays - /<h4>Film (.*?)\. <\/h4>/ =~ html - $1.split(',').each{|pays| - film.pays << Pays::ajouter(pays) unless pays.nil? - } unless $1.nil? - - # Duree (capture des heures et des minutes séparement vue que c'est le bordel sur allocine - /<h4>Durée :(?:.*?)(\d+)h/ =~ html - heure = $1.nil? ? 0 : $1.to_i - - /<h4>Durée :(?:.*?)(\d+)min/ =~ html - min = $1.nil? ? 0 : $1.to_i - - film.duree = heure * 60 + min - - # Critiques presse et spectateur - /Presse.*etoile_([012345]).*Spectateurs.*etoile_([012345])"/m =~ html - film.critiquePresse = $1 unless $1.nil? - film.critiqueSpectateur = $2 unless $2.nil? - - # Genre - /<h4>Genre : (.*?)<\/h4>/ =~ html - $1.scan(/<a href="\/film\/alaffiche_genre_gen_genre=.*?" class="link1">(.+?)<\/a>/m){|g| - film.genres << Genre::ajouter(g[0]) unless g[0].nil? - } unless $1.nil? - - # Synopsis - /Synopsis.*?<h4>(.*?)<\/h4>/m =~ html - unless $1.nil? - film.synopsis = $1 - film.synopsis.gsub!(/<br\s*\/>|<br\s*>/, "\n") - film.synopsis.virerBalisesHTML! - end - - # Budget - /Budget<\/b> : (.+?) millions d'euros<\/h4>/ =~ html - film.budget = $1 unless $1.nil? + if take?("url") + film.url = "http://www.allocine.fr" + path + end + + if take?("titre") + # Titre + /<title>(.*?)<\/title>/ =~ html + film.titre = $1 unless $1.nil? + end + + if take?("annee") + # Année + /<h4>Année de production : (\d+)<\/h4>/ =~ html + film.annee = $1 unless $1.nil? + end + + if take?("realisateurs") + # Réalisateurs + film.realisateurs.clear + /<h4>Réalisé par(.*?)<\/h4>/ =~ html + $1.scan(/\s*<a class="link1" href=".*?">(.*?)<\/a>\s*/m){|a| + film.realisateurs << Personne::ajouter(a[0]) unless a[0].nil? + } unless $1.nil? + end + + if take?("acteurs") + # Acteurs + film.acteurs.clear + /<h4>Avec(.*?)<\/h4>/ =~ html + $1.scan(/\s*<a class="link1" href="\/personne\/fichepersonne_gen_cpersonne=\d+\.html">(.+?)<\/a>\s*/m){|a| + film.acteurs << Personne::ajouter(a[0]) unless a[0].nil? + } unless $1.nil? + end + + if take?("pays") + # Pays + film.pays.clear + /<h4>Film (.*?)\. <\/h4>/ =~ html + $1.split(',').each{|pays| + film.pays << Pays::ajouter(pays) unless pays.nil? + } unless $1.nil? + end + + if take?("duree") + # Duree (capture des heures et des minutes séparement vue que c'est le bordel sur allocine + /<h4>Durée :(?:.*?)(\d+)h/ =~ html + heure = $1.nil? ? 0 : $1.to_i + /<h4>Durée :(?:.*?)(\d+)min/ =~ html + min = $1.nil? ? 0 : $1.to_i + film.duree = heure * 60 + min + end + + if take?("critiquenote") + # Critiques presse et spectateur + /Presse.*etoile_([012345]).*Spectateurs.*etoile_([012345])"/m =~ html + film.critiquePresse = $1 unless $1.nil? + film.critiqueSpectateur = $2 unless $2.nil? + end + + if take?("genre") + # Genre + film.genres.clear + /<h4>Genre : (.*?)<\/h4>/ =~ html + $1.scan(/<a href="\/film\/alaffiche_genre_gen_genre=.*?" class="link1">(.+?)<\/a>/m){|g| + film.genres << Genre::ajouter(g[0]) unless g[0].nil? + } unless $1.nil? + end + + if take?("synopsis") + # Synopsis + /Synopsis.*?<h4>(.*?)<\/h4>/m =~ html + unless $1.nil? + film.synopsis = $1 + film.synopsis.gsub!(/<br\s*\/>|<br\s*>/, "\n") + film.synopsis.virerBalisesHTML! + end + end + + if take?("budget") + # Budget + /Budget<\/b> : (.+?) millions d'euros<\/h4>/ =~ html + film.budget = $1 unless $1.nil? + end fermerConnexion end diff --git a/src/yopyop.rb b/src/yopyop.rb index 47da578..f99b39d 100644 --- a/src/yopyop.rb +++ b/src/yopyop.rb @@ -26,6 +26,7 @@ $repFilms = '.' $repAffichette = '../img/affichette/' mod = 'Allocine' purgeImages = false +update = nil aPrec = '' $*.each{|a| @@ -43,6 +44,8 @@ $*.each{|a| mod = a when '-a' $repAffichette = a + when '-u' + update = a end aPrec = a } @@ -71,9 +74,13 @@ films = Films::new($xmlFile, Module.class_eval(mod)) if purgeImages Images.nettoyer(films, $repAffichette) else - # parcours le dossier donné et recherche les infos sur le net - films.pomper($repFilms) - + if update == nil + # parcours le dossier donné et recherche les infos sur le net + films.pomper($repFilms) + else + films.update(update) + end + # écrit le fichier XML films.sauverFilms() end diff --git a/update.bat b/update.bat new file mode 100644 index 0000000..6c51bd3 --- /dev/null +++ b/update.bat @@ -0,0 +1,14 @@ +@echo off + +if "%1" == "" goto plop + +cd src +C:\ruby\bin\ruby yopyop.rb -u %1 -x ../xml/divx.xml +cd .. + +goto fin + +:plop +echo Il faut donner le nom d'un champ comme argument (regexp). * correspond à tous les champs + +:fin \ No newline at end of file diff --git a/update_test.bat b/update_test.bat new file mode 100644 index 0000000..5c73465 --- /dev/null +++ b/update_test.bat @@ -0,0 +1,14 @@ +@echo off + +if "%1" == "" goto plop + +cd src +C:\ruby\bin\ruby yopyop.rb -u %1 -x ../xml/test.xml +cd .. + +goto fin + +:plop +echo Il faut donner le nom d'un champ comme argument (regexp). * correspond à tous les champs + +:fin \ No newline at end of file diff --git a/xml/test.xml b/xml/test.xml index 8b710cc..f1bfe95 100644 --- a/xml/test.xml +++ b/xml/test.xml @@ -1,71 +1,73 @@ <?xml version='1.0' encoding='UTF-8'?> <?xml-stylesheet type="text/xsl" href="../xsl/yopyop.xsl"?> <filmographie> - <film id='9'> + <film id='19'> <fichiers> - <fichier>Rocky [x264 Aac] [Fr Eng] [Fr Eng].mkv</fichier> + <fichier>Big Boss.avi</fichier> </fichiers> - <titre>Rocky Balboa</titre> - <annee>2006</annee> + <titre>Big boss</titre> + <annee>1971</annee> <realisateurs> - <realisateur>Sylvester Stallone</realisateur> + <realisateur>Lo Wei</realisateur> </realisateurs> <acteurs> - <acteur>Sylvester Stallone</acteur> - <acteur>Burt Young</acteur> - <acteur>Antonio Tarver</acteur> + <acteur>Bruce Lee</acteur> + <acteur>James Tien</acteur> + <acteur>Yin-Chieh Han</acteur> </acteurs> <lespays> - <pays>américain</pays> + <pays>hong-kongais</pays> </lespays> - <duree>105</duree> - <critiquePresse>4</critiquePresse> - <critiqueSpectateur>3</critiqueSpectateur> + <duree>94</duree> + <critiquePresse/> + <critiqueSpectateur/> <genres> <genre>Drame</genre> + <genre>Divers</genre> <genre>Action</genre> + <genre>Drame</genre> + <genre>Arts Martiaux</genre> </genres> <synopsis> - <p>Rocky Balboa, le légendaire boxeur, a depuis longtemps quitté le ring. De ses succès, il ne reste plus que des histoires qu'il raconte aux clients de son restaurant. La mort de son épouse lui pèse chaque jour et son fils ne vient jamais le voir.</p> - <p>Le champion d'aujourd'hui s'appelle Mason Dixon, et tout le monde s'accorde à le définir comme un tueur sans élégance ni coeur. Alors que les promoteurs lui cherchent désespérément un adversaire à sa taille, la légende de Rocky refait surface. L'idée d'opposer deux écoles, deux époques et deux titans aussi différents enflamme tout le monde. Pour Balboa, c'est l'occasion de ranimer les braises d'une passion qui ne l'a jamais quitté. L'esprit d'un champion ne meurt jamais...</p> + <p>Un ouvrier venant de la campagne se révolte contre la milice engagée par son patron pour briser une grève.</p> </synopsis> <budget unite='euro'/> - <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=109061.html</url> + <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=53367.html</url> </film> - <film id='5'> + <film id='18'> <fichiers> - <fichier>Big Boss.avi</fichier> + <fichier>Ben Hur [Rv9 Aac] [Fr Eng] [Fr Eng Dut] [XCT] [2].mkv</fichier> + <fichier>Ben Hur [Rv9 Aac] [Fr Eng] [Fr Eng Dut] [XCT] [1].mkv</fichier> + <fichier>test/Ben Hur &.mkv</fichier> </fichiers> - <titre>Big boss</titre> - <annee>1971</annee> + <titre>Ben-Hur</titre> + <annee>1959</annee> <realisateurs> - <realisateur>Lo Wei</realisateur> + <realisateur>William Wyler</realisateur> </realisateurs> <acteurs> - <acteur>Bruce Lee</acteur> - <acteur>James Tien</acteur> - <acteur>Yin-Chieh Han</acteur> + <acteur>Charlton Heston</acteur> + <acteur>Stephen Boyd</acteur> + <acteur>Jack Hawkins</acteur> </acteurs> <lespays> - <pays>hong-kongais</pays> + <pays>américain</pays> </lespays> - <duree>94</duree> + <duree>212</duree> <critiquePresse/> <critiqueSpectateur/> <genres> - <genre>Drame</genre> - <genre>Arts Martiaux</genre> - <genre>Divers</genre> - <genre>Action</genre> + <genre>Péplum</genre> <genre>Drame</genre> </genres> <synopsis> - <p>Un ouvrier venant de la campagne se révolte contre la milice engagée par son patron pour briser une grève.</p> + <p>Judas Ben-Hur, prince de Judée, retrouve son ami d'enfance Messala, venu prendre la tête de la garnison de Jérusalem. Mais leur amitié ne peut résister à leurs caractères différents.</p> + <p>Alors qu'une pierre tombe du balcon de la maison familiale de Ben-Hur, manquant de tuer le gouverneur qui paradait plus bas, Messala trahit son ami qu'il sait innocent en l'envoyant aux galères et en jetant en prison sa mère et sa soeur. Ben-Hur jure alors de reconquérir sa liberté et prépare sa vengeance.</p> </synopsis> <budget unite='euro'/> - <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=53367.html</url> + <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=1532.html</url> </film> - <film id='4'> + <film id='6'> <fichiers> <fichier>Banlieue 13.avi</fichier> </fichiers> @@ -96,7 +98,7 @@ <budget unite='euro'/> <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=54107.html</url> </film> - <film id='6'> + <film id='10'> <fichiers> <fichier>Le 51e Etat.rmvb</fichier> </fichiers> @@ -129,7 +131,99 @@ <budget unite='euro'/> <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=29085.html</url> </film> - <film id='8'> + <film id='3'> + <fichiers> + <fichier>Ace Ventura detective chiens et chats [x264 AC3] [Fr Eng] [Fr Eng] [™]..mkv</fichier> + </fichiers> + <titre>Ace Ventura, détective chiens et chats</titre> + <annee>1994</annee> + <realisateurs> + <realisateur>Tom Shadyac</realisateur> + </realisateurs> + <acteurs> + <acteur>Jim Carrey</acteur> + <acteur>Courteney Cox</acteur> + <acteur>Sean Young</acteur> + </acteurs> + <lespays> + <pays>américain</pays> + </lespays> + <duree>90</duree> + <critiquePresse/> + <critiqueSpectateur/> + <genres> + <genre>Comédie</genre> + </genres> + <synopsis> + <p>Ace Ventura, un jeune homme décontracté à la banane arrogante et à la démarche élastique, est le Sherlock Holmes de la gent canine. Le voici à nouveau sur les dents quand le dauphin Flocon de neige, la mascotte de l'équipe de football americain de Miami, manque à l'appel.</p> + </synopsis> + <budget unite='euro'/> + <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=11944.html</url> + </film> + <film id='15'> + <fichiers> + <fichier>A True Mob Story [x264 Aac] [Fr Chn] [Fr].mkv</fichier> + </fichiers> + <titre>Gaby : a true story</titre> + <annee>1987</annee> + <realisateurs> + <realisateur>Luis Mandoki</realisateur> + </realisateurs> + <acteurs> + <acteur>Liv Ullmann</acteur> + <acteur>Norma Aleandro</acteur> + <acteur>Robert Loggia</acteur> + </acteurs> + <lespays> + <pays>américain</pays> + <pays> mexicain</pays> + </lespays> + <duree>110</duree> + <critiquePresse/> + <critiqueSpectateur/> + <genres> + <genre>Drame</genre> + </genres> + <synopsis> + <p>La relation entre une femme écrivain paralysée et son infirmière.</p> + </synopsis> + <budget unite='euro'/> + <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=50443.html</url> + </film> + <film id='20'> + <fichiers> + <fichier>Le Jour d'Apres [RV9 Aac] [Fr Eng] [Fr Eng Ne] [XCT].avi</fichier> + </fichiers> + <titre>Le Jour d'après</titre> + <annee>2004</annee> + <realisateurs> + <realisateur>Roland Emmerich</realisateur> + </realisateurs> + <acteurs> + <acteur>Dennis Quaid</acteur> + <acteur>Jake Gyllenhaal</acteur> + <acteur>Ian Holm</acteur> + </acteurs> + <lespays> + <pays>américain</pays> + </lespays> + <duree>120</duree> + <critiquePresse>4</critiquePresse> + <critiqueSpectateur>3</critiqueSpectateur> + <genres> + <genre>Action</genre> + <genre>Science Fiction</genre> + <genre>Thriller</genre> + </genres> + <synopsis> + <p>Le climatologue Jack Hall avait prédit l'arrivée d'un autre âge de glace, mais n'avait jamais pensé que cela se produirait de son vivant.</p> + <p>Un changement climatique imprévu et violent à l'échelle mondiale entraîne à travers toute la planète de gigantesques ravages : inondations, grêle, tornades et températures d'une magnitude inédite. Jack a peu de temps pour convaincre le Président des Etats-Unis d'évacuer le pays pour sauver des millions de personnes en danger, dont son fils Sam.</p> + <p>A New York où la température est inférieure à - 20° C, Jack entreprend une périlleuse course contre la montre pour sauver son fils.</p> + </synopsis> + <budget unite='euro'/> + <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=45361.html</url> + </film> + <film id='13'> <fichiers> <fichier>Robocop 3.avi</fichier> </fichiers> @@ -160,7 +254,7 @@ <budget unite='euro'/> <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=8143.html</url> </film> - <film id='3'> + <film id='5'> <fichiers> <fichier>Assaut sur le central 13 [H264 Aac] [Fr Eng] [Fr Eng Spa] [XCT].mkv</fichier> </fichiers> @@ -222,7 +316,36 @@ <budget unite='euro'/> <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=8035.html</url> </film> - <film id='10'> + <film id='21'> + <fichiers> + <fichier>Robocop 1.avi</fichier> + </fichiers> + <titre>Robocop</titre> + <annee>1987</annee> + <realisateurs> + <realisateur>Paul Verhoeven</realisateur> + </realisateurs> + <acteurs> + <acteur>Nancy Allen</acteur> + <acteur>Peter Weller</acteur> + <acteur>Dan O'Herlihy</acteur> + </acteurs> + <lespays> + <pays>américain</pays> + </lespays> + <duree>102</duree> + <critiquePresse/> + <critiqueSpectateur/> + <genres> + <genre>Fantastique</genre> + </genres> + <synopsis> + <p>A l'aube de l'an 2000, Detroit est, comme toujours dans cette sorte d'histoire, la proie du crime et de la corruption. Pour pallier ce terrible etat, les services de police inventent une nouvelle arme infaillible, Robocop, mi-homme, mi-robot, policier electronique de chair et d'acier qui a pour mission de sauvegarder la tranquillite de la ville. Mais comme souvent, ce cyborg a aussi une ame.</p> + </synopsis> + <budget unite='euro'/> + <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=3085.html</url> + </film> + <film id='22'> <fichiers> <fichier>Sky High.avi</fichier> </fichiers> @@ -253,33 +376,52 @@ <budget unite='euro'/> <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=50152.html</url> </film> - <film id='7'> + <film id='14'> <fichiers> - <fichier>Robocop 1.avi</fichier> + <fichier>Rocky [x264 Aac] [Fr Eng] [Fr Eng].mkv</fichier> </fichiers> - <titre>Robocop</titre> - <annee>1987</annee> + <titre>Rocky</titre> + <annee>1976</annee> <realisateurs> - <realisateur>Paul Verhoeven</realisateur> + <realisateur>John G. Avildsen</realisateur> </realisateurs> <acteurs> - <acteur>Nancy Allen</acteur> - <acteur>Peter Weller</acteur> - <acteur>Dan O'Herlihy</acteur> + <acteur>Sylvester Stallone</acteur> + <acteur>Talia Shire</acteur> + <acteur>Burt Young</acteur> </acteurs> <lespays> <pays>américain</pays> </lespays> - <duree>102</duree> + <duree>119</duree> <critiquePresse/> <critiqueSpectateur/> <genres> - <genre>Fantastique</genre> + <genre>Action</genre> + <genre>Drame</genre> </genres> <synopsis> - <p>A l'aube de l'an 2000, Detroit est, comme toujours dans cette sorte d'histoire, la proie du crime et de la corruption. Pour pallier ce terrible etat, les services de police inventent une nouvelle arme infaillible, Robocop, mi-homme, mi-robot, policier electronique de chair et d'acier qui a pour mission de sauvegarder la tranquillite de la ville. Mais comme souvent, ce cyborg a aussi une ame.</p> + <p>Dans les quartiers populaires de Philadelphie, Rocky Balboa collecte des dettes non payées pour Tony Gazzo, un usurier, et dispute de temps à autre, pour quelques dizaines de dollars, des combats de boxe sous l'appellation de "l'étalon italien". Cependant, Mickey, son vieil entraîneur, le laisse tomber. Son ami Paulie, qui travaille dans un entrepôt frigorifique, encourage Rocky à sortir avec sa soeur Adrian, une jeune vendeuse réservée d'un magasin d'animaux domestiques.</p> + <p>Pendant ce temps, Apollo Creed, le champion du monde de boxe catégorie poids lourd, recherche un nouvel adversaire pour remettre son titre en jeu. Son choix se portera sur Rocky.</p> </synopsis> <budget unite='euro'/> - <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=3085.html</url> + <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=28251.html</url> + </film> + <film id='23'> + <fichiers> + <fichier>alksgsdv.avi</fichier> + </fichiers> + <titre>alksgsdv</titre> + <annee/> + <realisateurs/> + <acteurs/> + <lespays/> + <duree></duree> + <critiquePresse/> + <critiqueSpectateur/> + <genres/> + <synopsis/> + <budget unite='euro'/> + <url/> </film> </filmographie> \ No newline at end of file -- 2.45.2