if (\r
afficherTout ||\r
document.getElementById("checkRechercheTitre").checked && rechercheRegExp.test(lignes[i].childNodes[2].textContent) \r
- || document.getElementById("checkRechercheGenres").checked && rechercheRegExp.test(tableDetails[0].firstChild.nextSibling.textContent) \r
+ || document.getElementById("checkRechercheGenres").checked && rechercheRegExp.test(tableDetails[0].firstChild.nextSibling.nextSibling.textContent) \r
|| document.getElementById("checkRechercheRealisateurs").checked && rechercheRegExp.test(tableDetails[1].firstChild.nextSibling.textContent)\r
|| document.getElementById("checkRechercheActeurs").checked && rechercheRegExp.test(tableDetails[2].firstChild.nextSibling.textContent) \r
|| document.getElementById("checkRecherchePays").checked && rechercheRegExp.test(tableDetails[3].firstChild.nextSibling.textContent)) \r
-# Attention : les méthodes peuvent être accédées par plusieurs threads simultanément\r
-class Basemodule\r
+\r
+class Basemodule \r
# Retourne un Hash contenant les ids (de allocine) trouvés indexés par une chaine.\r
# Cette chaine contient des infos du film, par exemple le titre et l'année.\r
# Cette chaine sert, dans le cas ou il y a plusieurs réponses, à proposer un choix à l'utilisateur.\r
def load(id)\r
raise\r
end \r
+ \r
+ # appelé lorsque le module n'est plus utile (permet de libérer des ressource par exemple).\r
+ def finish\r
+ \r
+ end\r
end
\ No newline at end of file
NB_CONN_MAX = 1\r
\r
# une aide pour l'utilisateur\r
-USAGE = 'USAGE : yopyop.rb -x <xml file> [-d <directory>] [-m <module>]'
\ No newline at end of file
+USAGE = 'USAGE : yopyop.rb -x <xml file> [-d <directory>] [-m <module>] [-a <dir affichettes>]'
\ No newline at end of file
end\r
\r
class Film\r
- \r
- def Film::setModule(m)\r
- @@module = m\r
- end\r
- \r
+ \r
# toutes les données membres sont accessibles par défaut (écriture/lecture)\r
- attr_accessor :id, :titre, :url, :fichiers, :annee, :realisateurs, :acteurs, :pays, :duree, :critiquePresse, :critiqueSpectateur, :genres, :synopsis, :budget\r
+ attr_accessor :id, :titre, :url, :fichiers, :mod, :annee, :realisateurs, :acteurs, :pays, :duree, :critiquePresse, :critiqueSpectateur, :genres, :synopsis, :budget\r
\r
# Constructeur. N'entreprend aucune action (chargement), crée juste un film vide.\r
# p1 [String] : le fichier correspondant au film\r
- def initialize(fichier)\r
+ def initialize(fichier, mod)\r
@fichiers = [fichier] # le chemin des fichiers est relatif au repertoire de base\r
+ @mod = mod\r
\r
@id = 0\r
@titre = ''\r
end\r
end\r
\r
- @@module.load(@choix[tabNoms[choix-1]], self)\r
+ @mod.load(@choix[tabNoms[choix-1]], self)\r
\r
return 1\r
end\r
return self\r
end\r
\r
- reponses = @@module.rechercherFilm(titre)\r
+ reponses = @mod.rechercherFilm(titre)\r
@nbReponses = reponses.size\r
\r
if @nbReponses == 1\r
- @@module.load(reponses.values[0], self)\r
+ @mod.load(reponses.values[0], self)\r
else\r
@choix = reponses \r
end\r
-# Représente un ensemble de films\r
+# Représente un ensemble de films\r
\r
require 'rexml/document'\r
require 'thwait'\r
require 'iconv'\r
\r
class Films\r
- def initialize(xmlFile)\r
+ def initialize(xmlFile, modClasse)\r
@xmlFile = xmlFile\r
\r
+ @modClasse = modClasse\r
+ \r
# repertoire de base, par exemple C:/Divx/\r
@repBase = '' \r
\r
i += 1\r
}\r
\r
+ @films.each{|t,f|\r
+ f.mod.finish\r
+ }\r
+ \r
Dir::chdir(repPrecedant) \r
end\r
\r
racine.each_element{|e| \r
id = e.attribute('id').to_s.to_i\r
\r
- if id > @idDisponible\r
+ if id >= @idDisponible\r
@idDisponible = id + 1 \r
end\r
\r
pays = e.get_elements('lespays')[0].get_elements('pays')\r
genres = e.get_elements('genres')[0].get_elements('genre')\r
\r
- film = Film::new(fichiers[0].get_text.value)\r
+ film = Film::new(fichiers[0].get_text.value, @modClasse::new)\r
\r
film.id = id\r
film.titre = titre.value unless titre.nil?\r
@threadsWait.join_nowait(\r
Thread::new{\r
begin \r
- film = Film::new(fichier).loadData\r
+ film = Film::new(fichier, @modClasse::new)\r
film.id = getNewId # on lui donne un nouvel ID\r
+ film.loadData # on charge ses données\r
\r
unless film.nil? # le film a été correctement construit\r
ajouterFilm(film)\r
require 'net/http'\r
+require 'uri'\r
require 'cgi'\r
require 'thread'\r
require 'iconv'\r
\r
# un mixin pour allocine\r
class Allocine < Basemodule\r
- \r
+ \r
# Voir le parent.\r
def rechercherFilm(titre)\r
- Thread.current["connexion"] = Net::HTTP::new('www.allocine.fr') if Thread.current["connexion"].nil?\r
- connexion = Thread.current["connexion"]\r
+ @connexion = Net::HTTP::new('www.allocine.fr') if @connexion.nil?\r
\r
donneesHtml = nil\r
begin\r
begin\r
- reponse, donneesHtml = connexion.get("/recherche/?rub=1&motcle=#{CGI::escape(Iconv.iconv("ISO-8859-1", "UTF-8", titre)[0])}")\r
+ reponse, donneesHtml = @connexion.get("/recherche/?rub=1&motcle=#{CGI::escape(Iconv.iconv("ISO-8859-1", "UTF-8", titre)[0])}")\r
rescue Exception => e\r
p e\r
puts "[!] Connexion lost, retry.."\r
\r
reponses = {}\r
unless titre.nil? or titre.empty?\r
- \r
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
\r
r.each{|f|\r
\r
# Voir le parent.\r
def load(id, film) \r
- Thread.current["connexion"] = Net::HTTP::new('www.allocine.fr') if Thread.current["connexion"].nil?\r
- connexion = Thread.current["connexion"]\r
- \r
- r, ficheHtml = connexion.get("/film/fichefilm_gen_cfilm=#{id}.html") \r
+ @connexion = Net::HTTP::new('www.allocine.fr') if @connexion.nil?\r
+\r
+ r, ficheHtml = @connexion.get("/film/fichefilm_gen_cfilm=#{id}.html") \r
\r
+ /<img src="(.*?)" border="0" alt="" class="affichette" \/>/ =~ ficheHtml\r
+ unless $1.nil?\r
+ @threadImage = Thread::new($1){|imageUrl|\r
+ begin\r
+ imageUrl = URI.parse(imageUrl) \r
+ connexionImage = Net::HTTP::new(imageUrl.host)\r
+ r, image = connexionImage.get(imageUrl.path)\r
+ f = File::new($repBase + "/" + $repAffichette + film.id.to_s + ".jpg", 'w').binmode\r
+ f.write(image)\r
+ f.close\r
+ rescue Exception => e\r
+ puts e.message\r
+ puts e.backtrace \r
+ end\r
+ }\r
+ end\r
+\r
#convertit le code latin-1 en UTF8\r
ficheHtml = Iconv.iconv("UTF-8", "ISO-8859-1", ficheHtml)[0]\r
\r
/Budget<\/b> : (.+?) millions d'euros<\/h4>/ =~ ficheHtml\r
film.budget = $1 unless $1.nil?\r
end \r
+ \r
+ def finish\r
+ @threadImage.join if defined? @threadImage\r
+ end\r
end
\ No newline at end of file
$: << Dir::getwd + "/" + __FILE__.split('/')[0]\r
\r
# vérifie les arguments donnés\r
-xmlFile = nil\r
-rep = '.'\r
+$xmlFile = nil\r
+$repBase = Dir::getwd\r
+$repFilms = '.'\r
+$repAffichette = '../img/affichette/'\r
mod = 'Allocine'\r
\r
aPrec = ''\r
$*.each{|a|\r
case aPrec\r
when '-x'\r
- xmlFile = a\r
+ $xmlFile = a\r
when '-d'\r
- rep = a\r
+ $repFilms = a\r
when '-m'\r
mod = a\r
+ when '-a'\r
+ mod = a\r
end \r
aPrec = a\r
}\r
\r
-if xmlFile.nil?\r
+if $xmlFile.nil?\r
puts USAGE\r
exit 0\r
end\r
\r
-unless File::directory?(rep)\r
- puts "'#{rep}' is not a valid directory"\r
+unless File::directory?($repFilms)\r
+ puts "'#{$repFilms}' is not a valid directory"\r
exit 1\r
end \r
\r
require "modules/#{mod}"\r
\r
-Film::setModule(Module.class_eval(mod)::new)\r
-\r
# charge les films à partir du fichier xml\r
-films = Films::new(xmlFile)\r
+films = Films::new($xmlFile, Module.class_eval(mod))\r
\r
# parcours le dossier donné et recherche les infos sur le net\r
-films.pomper(rep)\r
+films.pomper($repFilms)\r
\r
# ecrit le fichier XML\r
films.sauverFilms()\r
<?xml version='1.0' encoding='UTF-8'?>\r
<?xml-stylesheet type="text/xsl" href="../xsl/yopyop.xsl"?>\r
<filmographie>\r
+ <film id='9'>\r
+ <fichiers>\r
+ <fichier>Rocky [x264 Aac] [Fr Eng] [Fr Eng].mkv</fichier>\r
+ </fichiers>\r
+ <titre>Rocky Balboa</titre>\r
+ <annee>2006</annee>\r
+ <realisateurs>\r
+ <realisateur>Sylvester Stallone</realisateur>\r
+ </realisateurs>\r
+ <acteurs>\r
+ <acteur>Sylvester Stallone</acteur>\r
+ <acteur>Burt Young</acteur>\r
+ <acteur>Antonio Tarver</acteur>\r
+ </acteurs>\r
+ <lespays>\r
+ <pays>américain</pays>\r
+ </lespays>\r
+ <duree>105</duree>\r
+ <critiquePresse>4</critiquePresse>\r
+ <critiqueSpectateur>3</critiqueSpectateur>\r
+ <genres>\r
+ <genre>Drame</genre>\r
+ <genre>Action</genre>\r
+ </genres>\r
+ <synopsis>\r
+ <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>\r
+ <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>\r
+ </synopsis>\r
+ <budget unite='euro'/>\r
+ <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=109061.html</url>\r
+ </film>\r
<film id='5'>\r
+ <fichiers>\r
+ <fichier>Big Boss.avi</fichier>\r
+ </fichiers>\r
+ <titre>Big boss</titre>\r
+ <annee>1971</annee>\r
+ <realisateurs>\r
+ <realisateur>Lo Wei</realisateur>\r
+ </realisateurs>\r
+ <acteurs>\r
+ <acteur>Bruce Lee</acteur>\r
+ <acteur>James Tien</acteur>\r
+ <acteur>Yin-Chieh Han</acteur>\r
+ </acteurs>\r
+ <lespays>\r
+ <pays>hong-kongais</pays>\r
+ </lespays>\r
+ <duree>94</duree>\r
+ <critiquePresse/>\r
+ <critiqueSpectateur/>\r
+ <genres>\r
+ <genre>Drame</genre>\r
+ <genre>Arts Martiaux</genre>\r
+ <genre>Divers</genre>\r
+ <genre>Action</genre>\r
+ <genre>Drame</genre>\r
+ </genres>\r
+ <synopsis>\r
+ <p>Un ouvrier venant de la campagne se révolte contre la milice engagée par son patron pour briser une grève.</p>\r
+ </synopsis>\r
+ <budget unite='euro'/>\r
+ <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=53367.html</url>\r
+ </film>\r
+ <film id='4'>\r
<fichiers>\r
<fichier>Banlieue 13.avi</fichier>\r
</fichiers>\r
<budget unite='euro'/>\r
<url>http://www.allocine.fr/film/fichefilm_gen_cfilm=54107.html</url>\r
</film>\r
- <film id='9'>\r
+ <film id='6'>\r
<fichiers>\r
<fichier>Le 51e Etat.rmvb</fichier>\r
</fichiers>\r
<budget unite='euro'/>\r
<url>http://www.allocine.fr/film/fichefilm_gen_cfilm=29085.html</url>\r
</film>\r
- <film id='2'>\r
- <fichiers>\r
- <fichier>Ace Ventura detective chiens et chats [x264 AC3] [Fr Eng] [Fr Eng] [\99]..mkv</fichier>\r
- </fichiers>\r
- <titre>Ace Ventura, détective chiens et chats</titre>\r
- <annee>1994</annee>\r
- <realisateurs>\r
- <realisateur>Tom Shadyac</realisateur>\r
- </realisateurs>\r
- <acteurs>\r
- <acteur>Jim Carrey</acteur>\r
- <acteur>Courteney Cox</acteur>\r
- <acteur>Sean Young</acteur>\r
- </acteurs>\r
- <lespays>\r
- <pays>américain</pays>\r
- </lespays>\r
- <duree>90</duree>\r
- <critiquePresse/>\r
- <critiqueSpectateur/>\r
- <genres>\r
- <genre>Comédie</genre>\r
- </genres>\r
- <synopsis>\r
- <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>\r
- </synopsis>\r
- <budget unite='euro'/>\r
- <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=11944.html</url>\r
- </film>\r
- <film id='12'>\r
+ <film id='8'>\r
<fichiers>\r
<fichier>Robocop 3.avi</fichier>\r
</fichiers>\r
<budget unite='euro'/>\r
<url>http://www.allocine.fr/film/fichefilm_gen_cfilm=8143.html</url>\r
</film>\r
- <film id='4'>\r
+ <film id='3'>\r
<fichiers>\r
<fichier>Assaut sur le central 13 [H264 Aac] [Fr Eng] [Fr Eng Spa] [XCT].mkv</fichier>\r
</fichiers>\r
<acteur>John Leguizamo</acteur>\r
</acteurs>\r
<lespays>\r
- <pays>français</pays>\r
- <pays> américain</pays>\r
+ <pays>américain</pays>\r
+ <pays> français</pays>\r
</lespays>\r
<duree>110</duree>\r
<critiquePresse>4</critiquePresse>\r
<budget unite='euro'/>\r
<url>http://www.allocine.fr/film/fichefilm_gen_cfilm=55907.html</url>\r
</film>\r
+ <film id='1'>\r
+ <fichiers>\r
+ <fichier>A Toute Epreuve.rmvb</fichier>\r
+ </fichiers>\r
+ <titre>A toute epreuve</titre>\r
+ <annee>1992</annee>\r
+ <realisateurs>\r
+ <realisateur>John Woo</realisateur>\r
+ </realisateurs>\r
+ <acteurs>\r
+ <acteur>Tony Leung Chiu Wai</acteur>\r
+ <acteur>Chow Yun-Fat</acteur>\r
+ <acteur>Teresa Mo</acteur>\r
+ </acteurs>\r
+ <lespays>\r
+ <pays>hong-kongais</pays>\r
+ <pays> chinois</pays>\r
+ </lespays>\r
+ <duree>130</duree>\r
+ <critiquePresse/>\r
+ <critiqueSpectateur/>\r
+ <genres>\r
+ <genre>Policier</genre>\r
+ <genre>Action</genre>\r
+ </genres>\r
+ <synopsis>\r
+ <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>\r
+ </synopsis>\r
+ <budget unite='euro'/>\r
+ <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=8035.html</url>\r
+ </film>\r
+ <film id='10'>\r
+ <fichiers>\r
+ <fichier>Sky High.avi</fichier>\r
+ </fichiers>\r
+ <titre>L'Ecole fantastique</titre>\r
+ <annee>2003</annee>\r
+ <realisateurs>\r
+ <realisateur>Mike Mitchell</realisateur>\r
+ </realisateurs>\r
+ <acteurs>\r
+ <acteur>Michael Angarano</acteur>\r
+ <acteur>Danielle Panabaker</acteur>\r
+ <acteur>Mary Elizabeth Winstead</acteur>\r
+ </acteurs>\r
+ <lespays>\r
+ <pays>américain</pays>\r
+ </lespays>\r
+ <duree>102</duree>\r
+ <critiquePresse/>\r
+ <critiqueSpectateur/>\r
+ <genres>\r
+ <genre>Comédie</genre>\r
+ <genre>Famille</genre>\r
+ <genre>Fantastique</genre>\r
+ </genres>\r
+ <synopsis>\r
+ <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>\r
+ </synopsis>\r
+ <budget unite='euro'/>\r
+ <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=50152.html</url>\r
+ </film>\r
+ <film id='7'>\r
+ <fichiers>\r
+ <fichier>Robocop 1.avi</fichier>\r
+ </fichiers>\r
+ <titre>Robocop</titre>\r
+ <annee>1987</annee>\r
+ <realisateurs>\r
+ <realisateur>Paul Verhoeven</realisateur>\r
+ </realisateurs>\r
+ <acteurs>\r
+ <acteur>Nancy Allen</acteur>\r
+ <acteur>Peter Weller</acteur>\r
+ <acteur>Dan O'Herlihy</acteur>\r
+ </acteurs>\r
+ <lespays>\r
+ <pays>américain</pays>\r
+ </lespays>\r
+ <duree>102</duree>\r
+ <critiquePresse/>\r
+ <critiqueSpectateur/>\r
+ <genres>\r
+ <genre>Fantastique</genre>\r
+ </genres>\r
+ <synopsis>\r
+ <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>\r
+ </synopsis>\r
+ <budget unite='euro'/>\r
+ <url>http://www.allocine.fr/film/fichefilm_gen_cfilm=3085.html</url>\r
+ </film>\r
</filmographie>
\ No newline at end of file
<body onload="doRecherche(true)" >\r
\r
<div class="entete" >
- <h1>DivX - TV</h1>\r
+ <h1>DivX</h1>\r
<div id="nbFilms" ></div>\r
<img src="../img/logo.png" />\r
<form class="formulaireRecherche">\r
<td colspan="5" class="detail">\r
<table class="detail" id="detail{@id}">\r
<tr>\r
+ <td rowspan="5">\r
+ <img src="../img/affichette/{@id}.jpg" />\r
+ </td> \r
<td class="titreDetail">Genre<xsl:if test="count(genres/genre) > 1">s</xsl:if></td>\r
<td><xsl:for-each select="genres/genre"><a onclick="rechercheElement('{.}', 'Genres')"><xsl:value-of select="."/></a><xsl:if test="not(position() = last())">, </xsl:if></xsl:for-each></td>\r
</tr>\r