From: pifou Date: Thu, 28 Jun 2007 15:24:24 +0000 (+0000) Subject: git-svn-id: svn://euphorik.ch/pompage@35 02bbb61a-6d21-0410-aba0-cb053bdfd66a X-Git-Url: http://git.euphorik.ch/?p=pompage.git;a=commitdiff_plain;h=f2d0f55dc2e3dc77561c26703e382b1917498242 git-svn-id: svn://euphorik.ch/pompage@35 02bbb61a-6d21-0410-aba0-cb053bdfd66a --- diff --git a/src/basemodule.rb b/src/basemodule.rb new file mode 100644 index 0000000..725b212 --- /dev/null +++ b/src/basemodule.rb @@ -0,0 +1,18 @@ +# Attention : les méthodes peuvent être accédées par plusieurs threads simultanément +class Basemodule + # Retourne un Hash contenant les ids (de allocine) trouvés indexés par une chaine. + # Cette chaine contient des infos du film, par exemple le titre et l'année. + # Cette chaine sert, dans le cas ou il y a plusieurs réponses, à proposer un choix à l'utilisateur. + # Si la requête n'a pas aboutie alors le Hash est vide. + # p1 : le titre + # ret {infos => id} : le résultat de la recherche + def rechercherFilm(titre) + raise + end + + # Charge toutes les informations d'un films à partir de son id. + # p1 : l'id de allocine + def load(id) + raise + end +end \ No newline at end of file diff --git a/src/constantes.rb b/src/constantes.rb index 23452e5..af5b42d 100644 --- a/src/constantes.rb +++ b/src/constantes.rb @@ -1,13 +1,19 @@ - -$KCODE = 'u' # UTF-8 - #require 'profile' +# UTF-8 +$KCODE = 'u' #constantes FILMS_EXTENSIONS = ['avi', 'mkv', 'rmvb', 'ogm', 'divx'] -FICHIER_PATTERN = " [<codec>] [<lang-audio>] [<lang-st>] [<team>]" # la structure d'un fichier -LOAD_DATA = true # charge les informations depuis le web ? + +# la structure d'un fichier (pas utilisé) +FICHIER_PATTERN = "<title> [<codec>] [<lang-audio>] [<lang-st>] [<team>]" + +# charge les informations depuis le web ? +LOAD_DATA = true #le nombre de connexions simultanées sur le site de films -NB_CONN_MAX = 10 +NB_CONN_MAX = 5 + +# une aide pour l'utilisateur +USAGE = 'USAGE : yopyop.rb -x <xml file> [-d <directory>] [-m <module>]' \ No newline at end of file diff --git a/src/film.rb b/src/film.rb index a8a813b..b56ad07 100644 --- a/src/film.rb +++ b/src/film.rb @@ -3,14 +3,14 @@ # Permet d'effectuer des recherches depuis allocine.fr # TODO : rendre la classe indépendant de la source de donnée pour pouvoir utiliser d'autres sites comme par exemple imdb.com -require 'net/http' -require 'cgi' - require 'pays.rb' require 'genre.rb' require 'personne.rb' require 'constantes.rb' +require 'modules/allocine.rb' + +# ajout de deux méthodes à la classe String class String def virerBalisesHTML return gsub(/<(.*?)>/, '') @@ -21,11 +21,18 @@ class String end class Film + + def Film::setModule(m) + @@module = m + end + + # toutes les données membres sont accessibles par défaut (écriture/lecture) attr_accessor :id, :titre, :url, :fichiers, :annee, :realisateurs, :acteurs, :pays, :duree, :critiquePresse, :critiqueSpectateur, :genres, :synopsis, :budget # Constructeur. N'entreprend aucune action (chargement), crée juste un film vide. + # p1 [String] : le fichier correspondant au film def initialize(fichier) - @fichiers = [fichier] + @fichiers = [fichier] # le chemin des fichiers est relatif au repertoire de base @id = 0 @titre = '' @@ -41,26 +48,31 @@ class Film @budget = nil @budgetUnite = 'euro' @url + + @nbReponses = 0 - @aPlusieursReponses = false - # mémorise les tuples {nom => id} dans le cas ou il y a plusieurs réponses - @idsAllocine = {} + # mémorise les tuples {nom => id} dans le cas ou il y a plusieurs choix de films après une recherche + @choix = {} end # Est-ce qu'il y a eu plusieurs réponses pour ce film lors de la cherche sur le net ? def plusieursReponses? - return @aPlusieursReponses + return @nbReponses > 1 + end + + # Est-ce qu'il y a eu plusieurs réponses pour ce film lors de la cherche sur le net ? + def nbReponses + return @nbReponses end - # Demande à l'utilisateur de faire un choix + # Demande à l'utilisateur de faire un choix. # ret : true si le conflit à été résolu sinon false def reglerConflitPlusieursReponses - - @aPlusieursReponses = false # pour faire les choses bien + @nbReponses = 1 puts " -> " + @fichiers[0] puts "Fais ton choix jeune padawan (un caractère et pas plus)" - tabNoms = @idsAllocine.keys + tabNoms = @choix.keys choix = 1 loop do i = 1 @@ -87,7 +99,7 @@ class Film end end - loadDepuisIdAllocine(@idsAllocine[tabNoms[choix-1]]) + @@module.load(@choix[tabNoms[choix-1]], self) return true end @@ -101,14 +113,7 @@ class Film # Charge les informations du films à partir d'allocine.fr # ret [Film] - def loadData - unless LOAD_DATA - @titre = @fichiers[0] - return self - end - - connexionHttp = Net::HTTP::new('www.allocine.fr') - + def loadData #extrait le nom à partir du nom du fichier /^.*?([^\/]*?)\.(.{3,4})$/ =~ @fichiers[0] #remplace undescores et points par des espaces @@ -123,48 +128,24 @@ class Film @titre = titre.dup - donneesHtml = nil - begin - begin - reponse, donneesHtml = connexionHttp.get("/recherche/?motcle=#{CGI::escape(titre.unpack("U*").pack("C*"))}") - rescue Exception => e - p e - puts "[!] Connexion lost, retry.." - retry - end - - #convertit le code latin-1 en UTF8 - donneesHtml = donneesHtml.unpack("C*").pack("U*") - - #si pas trouvé alors on enlève un mot à la fin - if /.*?Pas de résultats.*?/ =~ donneesHtml || ! donneesHtml.include?("<h3><b>Films <h4>") - /(.*?)[^ ]+?$/ =~ titre.strip - titre = $1 - titre.strip! - else - break; - end - end while not titre.nil? and not titre.empty? + unless LOAD_DATA + return self + end - unless titre.nil? or titre.empty? - - r = donneesHtml.scan(/<a href="\/film\/fichefilm_gen_cfilm=(\d+)\.html" class="link1">(.*?)<\/a>(?:<\/h4><h5 style="color: #666666"> (.*?)<\/h5>){0,1}(?:<h4><br \/><\/h4>){0,1}(?:<h4 style="color: #666666"> de (.*?)<\/h4>){0,1}(?:<h4 style="color: #666666"> avec (.*?)<\/h4>){0,1}(?:<h4 style="color: #666666"> \((.*?)\)<\/h4>){0,1}/) - - if r.length > 1 - @aPlusieursReponses = true - r.each{|f| - @idsAllocine[f[1].virerBalisesHTML + (f[2] != nil ? " " + f[2].virerBalisesHTML : "") + (f[3] != nil ? " de " + f[3].virerBalisesHTML : "") + (f[4] != nil ? " avec " + f[4].virerBalisesHTML : "") + (f[5] != nil ? " (" + f[5].virerBalisesHTML + ")" : "")] = f[0] - } - elsif r.length == 1 - loadDepuisIdAllocine(r[0][0], connexionHttp) - else - puts "[!] Movie not found : #{@titre} (#{@fichier})" - end + reponses = @@module.rechercherFilm(titre) + @nbReponses = reponses.size + + if @nbReponses == 1 + @@module.load(reponses.values[0], self) + else + @choix = reponses end + self end - # Renvoie un film sous la forme d'un élément XML de type REXML::Element. + # Renvoie un film sous la forme d'un élément XML . + # ret [REXML::Element] : un element xml <film> def getXml racine = REXML::Element::new('film') @@ -226,80 +207,5 @@ class Film racine end - -private - def loadDepuisIdAllocine(id, connexionHttp = nil) - if (connexionHttp == nil) - connexionHttp = Net::HTTP::new('www.allocine.fr') - end - - r, ficheHtml = connexionHttp.get("/film/fichefilm_gen_cfilm=#{id}.html") - - #convertit le code latin-1 en UTF8 - ficheHtml = ficheHtml.unpack("C*").pack("U*") - - #url - @url = "http://www.allocine.fr/film/fichefilm_gen_cfilm=#{id}.html" - - # Titre - /<title>(.*?)<\/title>/ =~ ficheHtml - @titre = $1 unless $1.nil? - - puts "Movie found : #{@titre} (#{@fichiers[0]})" - - # Année - /<h4>Année de production : (\d+)<\/h4>/ =~ ficheHtml - @annee = $1 unless $1.nil? - - # Réalisateurs - /<h4>Réalisé par(.*?)<\/h4>/ =~ ficheHtml - $1.scan(/\s*<a class="link1" href=".*?">(.*?)<\/a>\s*/m){|a| - @realisateurs << Personne::ajouter(a[0]) unless a[0].nil? - } unless $1.nil? - - # Acteurs - /<h4>Avec(.*?)<\/h4>/ =~ ficheHtml - $1.scan(/\s*<a class="link1" href="\/personne\/fichepersonne_gen_cpersonne=\d+\.html">(.+?)<\/a>\s*/m){|a| - @acteurs << Personne::ajouter(a[0]) unless a[0].nil? - } unless $1.nil? - - # Pays - /<h4>Film (.*?)\. <\/h4>/ =~ ficheHtml - $1.split(',').each{|pays| - @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/ =~ ficheHtml - heure = $1.nil? ? 0 : $1.to_i - - /<h4>Durée :(?:.*?)(\d+)min/ =~ ficheHtml - min = $1.nil? ? 0 : $1.to_i - - @duree = heure * 60 + min - - # Critiques presse et spectateur - /Presse.*etoile_([012345]).*Spectateurs.*etoile_([012345])"/m =~ ficheHtml - @critiquePresse = $1 unless $1.nil? - @critiqueSpectateur = $2 unless $2.nil? - - # Genre - /<h4>Genre : (.*?)<\/h4>/ =~ ficheHtml - $1.scan(/<a href="\/film\/alaffiche_genre_gen_genre=.*?" class="link1">(.+?)<\/a>/m){|g| - @genres << Genre::ajouter(g[0]) unless g[0].nil? - } unless $1.nil? - - # Synopsis - /Synopsis.*?<h4>(.*?)<\/h4>/m =~ ficheHtml - unless $1.nil? - @synopsis = $1 - @synopsis.gsub!(/<br\s*\/>|<br\s*>/, "\n") - @synopsis.virerBalisesHTML! - end - - # Budget - /Budget<\/b> : (.+?) millions d'euros<\/h4>/ =~ ficheHtml - @budget = $1 unless $1.nil? - end end \ No newline at end of file diff --git a/src/films.rb b/src/films.rb index bc23fdc..59f4af7 100644 --- a/src/films.rb +++ b/src/films.rb @@ -8,6 +8,7 @@ require 'pays.rb' require 'genre.rb' require 'personne.rb' require 'constantes.rb' +require 'iconv' class Films def initialize(xmlFile) @@ -16,15 +17,19 @@ class Films # repertoire de base, par exemple C:/Divx/ @repBase = '' - # Les films indexés par leur titre + # Les films indexé par leur titre @films = {} - # Les films indexés par leur nom de fichier, deux fichiers différents peuvent pointer sur le même film + # Les films indexé par leur nom de fichier, deux fichiers différents peuvent pointer sur le même film @filmsFichier = {} - # Les films qui ont plusieurs réponses lors de la recherche, traités à la fin + # Les films qui ont plusieurs réponses lors de la recherche, traité à la fin @filmsPlusieursReponses = [] + # Les films qui ont plusieurs réponses lors de la recherche, traité à la fin + @filmsAucuneReponse = [] + + # permet de traiter facilement des groupes de thread @threadsWait = ThreadsWait::new @nbConn = 0 # le nombre de connexion @@ -34,17 +39,21 @@ class Films chargerFilms end - # Lit un repertoire de manière recursive et va chercher les informations concernant le film sur le net + # Lit un repertoire de manière recursive et va chercher les informations concernant le film sur le net def pomper(r) @repBase = r repPrecedant = Dir::getwd Dir::chdir(r) + t = Time::now + pomperR('.') # on attends que les threads se terminent @threadsWait.all_waits + puts "Pompage terminé, temps : #{Time::now - t} secondes" + # traite les films qui avaient plusieurs réponses lors de la recherche # l'utilisateur doit faire un choix i = 1 @@ -57,6 +66,16 @@ class Films i += 1 } + i = 1 + @filmsAucuneReponse.each{|f| + puts + puts "Plop, Ce film n'a pas été trouvé{i} / #{@filmsAucuneReponse.length} :" + if f.reglerConflitPlusieursReponses + ajouterFilm(f) + end + i += 1 + } + Dir::chdir(repPrecedant) end @@ -73,7 +92,7 @@ class Films pi = REXML::Instruction.new("xml-stylesheet", "type=\"text/xsl\" href=\"../xsl/yopyop.xsl\"") racine.previous_sibling = pi - # on ajoute chaque film à la racine + # on ajoute chaque film à la racine @films.each{|nom, f| racine.add(f.getXml) } @@ -149,7 +168,7 @@ class Films } end - # Retourne un nouvel id, utilisé lors de la création d'un nouveau film + # Retourne un nouvel id, utilisé alors de la création d'un nouveau film def getNewId id = @idDisponible @idDisponible += 1 @@ -163,7 +182,11 @@ class Films return end - # le film existe déjà + if film.nbReponses == 0 + @filmsAucuneReponse << film + return + end + if @films.has_key?(film.titre) # le fichier n'est pas connu -> nième partie d'un film if !@filmsFichier.has_key?(film.fichiers[0]) @@ -180,7 +203,7 @@ class Films end end - # Appelé par 'pomper'. Cette méthode est récursive. + # Appelé par 'pomper'. Cette méthode est récursive. def pomperR(r) Dir::foreach(r){|f| next if f[0,1] == '.' @@ -189,15 +212,15 @@ class Films litRepertoireR(fichier) else - # vérification de l'extension + # véfication de l'extension /^.*?\.(.{3,4})$/ =~ fichier if !FILMS_EXTENSIONS.include?($1) next end - fichier = CGI::escapeHTML(fichier.unpack("C*").pack("U*")) + fichier = CGI::escapeHTML(Iconv.iconv("UTF-8", "ISO-8859-1", fichier)[0]) - # on skip si le film est déjàa dans la BD + # on skip si le film est déjà dans la BD if film = @filmsFichier[fichier] puts "[i] Already exists in DB : #{film.titre} (#{fichier})" next @@ -205,7 +228,7 @@ class Films film = nil - # pour limiter le nombre de connexion simultanée + # pour limiter le nombre de connexion simultanée if @nbConn >= NB_CONN_MAX @threadsWait.next_wait end @@ -217,13 +240,13 @@ class Films film = Film::new(fichier).loadData film.id = getNewId # on lui donne un nouvel ID - unless film.nil? # le film a été correctement construit + unless film.nil? # le film a été correctement construit ajouterFilm(film) end rescue Exception => e puts e.message puts e.backtrace - end + end @nbConn -= 1 } ) diff --git a/src/modules/allocine.rb b/src/modules/allocine.rb new file mode 100644 index 0000000..bdbfa1c --- /dev/null +++ b/src/modules/allocine.rb @@ -0,0 +1,124 @@ +require 'net/http' +require 'cgi' +require 'thread' +require 'iconv' + +require "basemodule.rb" + +# un mixin pour allocine +class Allocine < Basemodule + + # Voir le parent. + def rechercherFilm(titre) + Thread.current["connexion"] = Net::HTTP::new('www.allocine.fr') if Thread.current["connexion"].nil? + connexion = Thread.current["connexion"] + + donneesHtml = nil + begin + begin + reponse, donneesHtml = connexion.get("/recherche/?motcle=#{CGI::escape(Iconv.iconv("ISO-8859-1", "UTF-8", titre)[0])}") + rescue Exception => e + p e + puts "[!] Connexion lost, retry.." + retry + end + + #convertit le code latin-1 en UTF8 + donneesHtml = Iconv.iconv("UTF-8", "ISO-8859-1", donneesHtml)[0] + + #si pas trouvé alors on enlève un mot à la fin + if /.*?Pas de résultats.*?/ =~ donneesHtml || ! donneesHtml.include?("<h3><b>Films <h4>") + /(.*?)[^ ]+?$/ =~ titre.strip + titre = $1 + titre.strip! + else + break; + end + end while not titre.nil? and not titre.empty? + + reponses = {} + unless titre.nil? or titre.empty? + + r = donneesHtml.scan(/<a href="\/film\/fichefilm_gen_cfilm=(\d+)\.html" class="link1">(.*?)<\/a>(?:<\/h4><h5 style="color: #666666"> (.*?)<\/h5>){0,1}(?:<h4><br \/><\/h4>){0,1}(?:<h4 style="color: #666666"> de (.*?)<\/h4>){0,1}(?:<h4 style="color: #666666"> avec (.*?)<\/h4>){0,1}(?:<h4 style="color: #666666"> \((.*?)\)<\/h4>){0,1}/) + + r.each{|f| + reponses[f[1].virerBalisesHTML + (f[2] != nil ? " " + f[2].virerBalisesHTML : "") + (f[3] != nil ? " de " + f[3].virerBalisesHTML : "") + (f[4] != nil ? " avec " + f[4].virerBalisesHTML : "") + (f[5] != nil ? " (" + f[5].virerBalisesHTML + ")" : "")] = f[0] + } + end + reponses + end + + # Voir le parent. + def load(id, film) + Thread.current["connexion"] = Net::HTTP::new('www.allocine.fr') if Thread.current["connexion"].nil? + connexion = Thread.current["connexion"] + + r, ficheHtml = connexion.get("/film/fichefilm_gen_cfilm=#{id}.html") + + #convertit le code latin-1 en UTF8 + ficheHtml = Iconv.iconv("UTF-8", "ISO-8859-1", ficheHtml)[0] + + #url + film.url = "http://www.allocine.fr/film/fichefilm_gen_cfilm=#{id}.html" + + # Titre + /<title>(.*?)<\/title>/ =~ ficheHtml + film.titre = $1 unless $1.nil? + + puts "Movie found : #{film.titre} (#{film.fichiers[0]})" + + # Année + /<h4>Année de production : (\d+)<\/h4>/ =~ ficheHtml + film.annee = $1 unless $1.nil? + + # Réalisateurs + /<h4>Réalisé par(.*?)<\/h4>/ =~ ficheHtml + $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>/ =~ ficheHtml + $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>/ =~ ficheHtml + $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/ =~ ficheHtml + heure = $1.nil? ? 0 : $1.to_i + + /<h4>Durée :(?:.*?)(\d+)min/ =~ ficheHtml + min = $1.nil? ? 0 : $1.to_i + + film.duree = heure * 60 + min + + # Critiques presse et spectateur + /Presse.*etoile_([012345]).*Spectateurs.*etoile_([012345])"/m =~ ficheHtml + film.critiquePresse = $1 unless $1.nil? + film.critiqueSpectateur = $2 unless $2.nil? + + # Genre + /<h4>Genre : (.*?)<\/h4>/ =~ ficheHtml + $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 =~ ficheHtml + 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>/ =~ ficheHtml + film.budget = $1 unless $1.nil? + end +end \ No newline at end of file diff --git a/src/yopyop.rb b/src/yopyop.rb index 8d87adf..786e6a1 100644 --- a/src/yopyop.rb +++ b/src/yopyop.rb @@ -14,26 +14,42 @@ # - Etablir une petit base de données des films au format xml require 'films.rb' +require 'film.rb' # non ce n'est pas du perl ;) $: << Dir::getwd + "/" + __FILE__.split('/')[0] # vérifie les arguments donnés +xmlFile = nil rep = '.' -if $*.empty? - puts 'USAGE : <xml file> [<directory>]' +mod = 'Allocine' + +aPrec = '' +$*.each{|a| + case aPrec + when '-x' + xmlFile = a + when '-d' + rep = a + when '-m' + mod = a + end + aPrec = a +} + +if xmlFile.nil? + puts USAGE exit 0 -elsif $*.size == 1 - puts 'no directory given, use the current' -else - rep = $*[1] end -xmlFile = $*[0] unless File::directory?(rep) puts "'#{rep}' is not a valid directory" exit 1 -end +end + +require "modules/#{mod}" + +Film::setModule(Module.class_eval(mod)::new) # charge les films à partir du fichier xml films = Films::new(xmlFile) diff --git a/start.bat b/start.bat index f9a110a..3aeee8c 100644 --- a/start.bat +++ b/start.bat @@ -1,3 +1,3 @@ cd src -C:\ruby\bin\ruby yopyop.rb ../xml/divx.xml F:\Films +C:\ruby\bin\ruby yopyop.rb -x ../xml/divx.xml -d F:\Films cd .. \ No newline at end of file diff --git a/start_test.bat b/start_test.bat index 07dc28f..17bc1d2 100644 --- a/start_test.bat +++ b/start_test.bat @@ -1,3 +1,3 @@ cd src -C:\ruby\bin\ruby yopyop.rb ../xml/test.xml ../test +C:\ruby\bin\ruby yopyop.rb -x ../xml/test.xml -d ../test cd .. \ No newline at end of file diff --git a/test/Sky High.srt b/test/Sky High.srt deleted file mode 100644 index e69de29..0000000 diff --git a/test/alksgsdv.avi b/test/alksgsdv.avi new file mode 100644 index 0000000..e69de29 diff --git a/xml/test.xml b/xml/test.xml index 21f5bc8..6f7eb80 100644 --- a/xml/test.xml +++ b/xml/test.xml @@ -1,275 +1,3 @@ <?xml version='1.0' encoding='UTF-8'?> <?xml-stylesheet type="text/xsl" href="../xsl/yopyop.xsl"?> -<filmographie> - <film id='10'> - <fichiers> - <fichier>Big Boss.avi</fichier> - </fichiers> - <titre>Big boss</titre> - <annee>1971</annee> - <realisateurs> - <realisateur>Lo Wei</realisateur> - </realisateurs> - <acteurs> - <acteur>Bruce Lee</acteur> - <acteur>James Tien</acteur> - <acteur>Yin-Chieh Han</acteur> - </acteurs> - <lespays> - <pays>hong-kongais</pays> - </lespays> - <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>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=53367.html</url> - </film> - <film id='9'> - <fichiers> - <fichier>Banlieue 13.avi</fichier> - </fichiers> - <titre>Banlieue 13</titre> - <annee>2003</annee> - <realisateurs/> - <acteurs> - <acteur>Cyril Raffaelli</acteur> - <acteur>David Belle</acteur> - <acteur>Tony D'Amario</acteur> - </acteurs> - <lespays> - <pays>français</pays> - </lespays> - <duree>95</duree> - <critiquePresse>4</critiquePresse> - <critiqueSpectateur>3</critiqueSpectateur> - <genres> - <genre>Action</genre> - <genre>Policier</genre> - </genres> - <synopsis> - <p>Paris, 2013. Damien est l'élite de la police. Officier d'une unité spéciale d'intervention, expert en arts martiaux, il est passé maître dans l'art de l'infiltration et sait mener à terme ses opérations par des actions rapides, précises et néanmoins musclées.</p> - <p>Et c'est bien la mission la plus extrême de sa carrière qui vient de lui être confiée : une arme de destruction massive a été dérobée par le plus puissant gang de la banlieue. Damien est chargé d'infiltrer dans le secteur pour désamorcer la bombe ou la récupérer.</p> - </synopsis> - <budget unite='euro'/> - <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=54107.html</url> - </film> - <film id='7'> - <fichiers> - <fichier>Le 51e Etat.rmvb</fichier> - </fichiers> - <titre>Le 51e Etat</titre> - <annee>2001</annee> - <realisateurs/> - <acteurs> - <acteur>Samuel L. Jackson</acteur> - <acteur>Robert Carlyle</acteur> - <acteur>Emily Mortimer</acteur> - </acteurs> - <lespays> - <pays>canadien</pays> - <pays> britannique</pays> - <pays> américain</pays> - </lespays> - <duree>91</duree> - <critiquePresse>4</critiquePresse> - <critiqueSpectateur>3</critiqueSpectateur> - <genres> - <genre>Comédie</genre> - <genre>Action</genre> - </genres> - <synopsis> - <p>Elmo McElroy est vraiment un individu à part. Chimiste génial, il a mis au point le POS 51, LA drogue parfaite, celle qui vous donne l'impression que Dieu lui-même est venu vous faire signe. Bien décidé à commercialiser son petit chef-d'oeuvre sans intermédiaire, Elmo se débarasse de son encombrant patron, Le Lézard, pour rallier l'Angleterre - le 51e Etat - et s'associe avec Félix Desouza, un petit nerveux qui règne sur l'underground de Liverpool, parle tout le temps et ne supporte pas ce qui est Américain.</p> - <p>Ce qu'ignore Elmo c'est que son ex-patron est toujours vivant, déterminé à se venger et à mettre la main sur la formule chimique. Et en plus il n'est pas le seul : la superbe et dangereuse Dakota Phillips est également sur ses traces.</p> - </synopsis> - <budget unite='euro'/> - <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=29085.html</url> - </film> - <film id='6'> - <fichiers> - <fichier>Robocop 3.avi</fichier> - </fichiers> - <titre>Robocop 3</titre> - <annee>1992</annee> - <realisateurs/> - <acteurs> - <acteur>Robert John Burke</acteur> - <acteur>Nancy Allen</acteur> - <acteur>Jill Hennessy</acteur> - </acteurs> - <lespays> - <pays>américain</pays> - </lespays> - <duree>105</duree> - <critiquePresse/> - <critiqueSpectateur/> - <genres> - <genre>Fantastique</genre> - <genre>Action</genre> - <genre>Science fiction</genre> - </genres> - <synopsis> - <p>Dans un futur proche, la multinationale OCP decide de construire Delta City sur les ruines du vieux Detroit. Un groupe d'habitants irreductibles refuse de quitter les lieux. Pour les convaincre, OCP decide de reprogrammer Rococop, policier d'elite fabrique a partir de l'officier Murphy. Mais le docteur Lazarus, charge de l'entretien de Robocop, refuse d'effacer la memoire de Murphy.</p> - </synopsis> - <budget unite='euro'/> - <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=8143.html</url> - </film> - <film id='8'> - <fichiers> - <fichier>Assaut sur le central 13 [H264 Aac] [Fr Eng] [Fr Eng Spa] [XCT].mkv</fichier> - </fichiers> - <titre>Assaut sur le central 13</titre> - <annee>2004</annee> - <realisateurs/> - <acteurs> - <acteur>Ethan Hawke</acteur> - <acteur>Laurence Fishburne</acteur> - <acteur>John Leguizamo</acteur> - </acteurs> - <lespays> - <pays>américain</pays> - <pays> français</pays> - </lespays> - <duree>110</duree> - <critiquePresse>4</critiquePresse> - <critiqueSpectateur>3</critiqueSpectateur> - <genres> - <genre>Action</genre> - </genres> - <synopsis> - <p>Une nuit de réveillon, l'un des membres les plus dangereux de la mafia, Marion Bishop, est temporairement incarcéré dans un bâtiment gardé par une équipe de police placée sous le commandement du sergent Jake Roenick.</p> - <p>Alors que le monde entier fait la fête, flics et malfrats vont devoir s'unir pour avoir une chance de survivre à l'assaut mortel venu du dehors. Face aux moyens démesurés des attaquants, un seul objectif : tenir jusqu'à l'aube... </p> - </synopsis> - <budget unite='euro'/> - <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=55907.html</url> - </film> - <film id='5'> - <fichiers> - <fichier>A Toute Epreuve.rmvb</fichier> - </fichiers> - <titre>A toute epreuve</titre> - <annee>1992</annee> - <realisateurs/> - <acteurs> - <acteur>Tony Leung Chiu Wai</acteur> - <acteur>Chow Yun-Fat</acteur> - <acteur>Teresa Mo</acteur> - </acteurs> - <lespays> - <pays>hong-kongais</pays> - <pays> chinois</pays> - </lespays> - <duree>130</duree> - <critiquePresse/> - <critiqueSpectateur/> - <genres> - <genre>Policier</genre> - <genre>Action</genre> - </genres> - <synopsis> - <p>Hong-Kong 1997. Les Britannique vont rendre dans quelques mois a la Chine populaire une ville corrompue par le crime. Alors que les policiers ont baissé les bras, un groupe d'inspecteurs, mene par Yuen, surnommé Tequila, décide de mettre fin a la suprématie des gangs.</p> - </synopsis> - <budget unite='euro'/> - <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=8035.html</url> - </film> - <film id='13'> - <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='11'> - <fichiers> - <fichier>Sky High.avi</fichier> - </fichiers> - <titre>L'Ecole fantastique</titre> - <annee>2003</annee> - <realisateurs> - <realisateur>Mike Mitchell</realisateur> - </realisateurs> - <acteurs> - <acteur>Michael Angarano</acteur> - <acteur>Danielle Panabaker</acteur> - <acteur>Mary Elizabeth Winstead</acteur> - </acteurs> - <lespays> - <pays>américain</pays> - </lespays> - <duree>102</duree> - <critiquePresse/> - <critiqueSpectateur/> - <genres> - <genre>Comédie</genre> - <genre>Famille</genre> - <genre>Fantastique</genre> - </genres> - <synopsis> - <p>Will est un jeune garçon tout à fait normal si ce n'est qu'il doit intégrer la prestigieuse école de super-héros appelée Sky High et qu'il n'a pour le moment, aucune idée des super-pouvoirs qui le caractérisent... Il devra jongler entre les super-moqueries de ses camarades et la déception de ses parents, un couple de super-héros légendaires...</p> - </synopsis> - <budget unite='euro'/> - <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=50152.html</url> - </film> - <film id='12'> - <fichiers> - <fichier>Rocky [x264 Aac] [Fr Eng] [Fr Eng].mkv</fichier> - </fichiers> - <titre>Rocky</titre> - <annee>1976</annee> - <realisateurs> - <realisateur>John G. Avildsen</realisateur> - </realisateurs> - <acteurs> - <acteur>Sylvester Stallone</acteur> - <acteur>Talia Shire</acteur> - <acteur>Burt Young</acteur> - </acteurs> - <lespays> - <pays>américain</pays> - </lespays> - <duree>119</duree> - <critiquePresse/> - <critiqueSpectateur/> - <genres> - <genre>Action</genre> - <genre>Drame</genre> - </genres> - <synopsis> - <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=28251.html</url> - </film> -</filmographie> \ No newline at end of file +<filmographie/> \ No newline at end of file