}\r
end\r
\r
- # Lit un repertoire de manière recursive et va chercher les informations concernant le film sur le net\r
+ # Lit un repertoire de manière recursive et va chercher les informations concernant le film sur le net.\r
def pomper(r)\r
@repBase = r\r
repPrecedant = Dir::getwd\r
Dir::chdir(repPrecedant) \r
end\r
\r
+ # Mise à jour des films dans la BD.\r
+ # p1 string : un motif Regex correspondant à un ou plusieurs champs\r
+ def update(champ, titre)\r
+ @films.each{|t, f|\r
+ next if !f.titre.match(Regexp::new(titre, true))\r
+ \r
+ ## si le film est complet on ne fait rien\r
+ if $force || f.url == nil || f.titre == '' || f.annee == nil ||\r
+ f.realisateurs.empty? || f.acteurs.empty? || f.pays.empty? ||\r
+ f.genres.empty? || f.synopsis == nil || !f.possedeImage?\r
+ \r
+ f.update(champ)\r
+ end\r
+ }\r
+ end\r
+ \r
# Sauve les films dans un fichier XML\r
def sauverFilms\r
# le document\r
end\r
\r
racine = REXML::Document::new(File::new(@xmlFile)).root\r
- racine.each_element{|e| \r
+ racine.elements.each("film"){|e| \r
id = e.attribute('id').to_s.to_i\r
\r
if id >= @idDisponible\r
@idDisponible = id + 1 \r
end\r
\r
- titre = e.get_elements('titre')[0].get_text\r
- url = e.get_elements('url')[0].get_text \r
- fichiers = e.get_elements('fichiers')[0].get_elements('fichier')\r
- annee = e.get_elements('annee')[0].get_text\r
- duree = e.get_elements('duree')[0].get_text\r
- critiquePresse = e.get_elements('critiquePresse')[0].get_text\r
- critiqueSpectateur = e.get_elements('critiqueSpectateur')[0].get_text\r
- synopsis = e.get_elements('synopsis')[0].get_elements('p')\r
- budget = e.get_elements('budget')[0].get_text \r
- realisateurs = e.get_elements('realisateurs')[0].get_elements('realisateur')\r
- acteurs = e.get_elements('acteurs')[0].get_elements('acteur')\r
- pays = e.get_elements('lespays')[0].get_elements('pays')\r
- genres = e.get_elements('genres')[0].get_elements('genre')\r
+ film = Film::new(nil, @modClasse::new)\r
+ film.id = id\r
+ \r
+ film.titre = e.get_text('titre')\r
+ film.titre = film.titre.value if film.titre != nil\r
\r
- film = Film::new(fichiers[0].get_text.value, @modClasse::new)\r
+ print "#{film.titre}.. "\r
+\r
\r
- film.id = id\r
- film.titre = titre.value unless titre.nil?\r
+ film.url = e.get_text('url')\r
+ film.url = film.url.value if film.url != nil\r
+\r
+ film.annee = e.get_text('annee')\r
+ film.annee = film.annee.value if film.annee != nil \r
+ \r
+ film.duree = e.get_text('duree')\r
+ film.duree = film.duree.value if film.duree != nil\r
+ \r
+ film.critiquePresse = e.get_text('critiquePresse')\r
+ film.critiquePresse = film.critiquePresse.value if film.critiquePresse != nil\r
\r
- film.url = url.value unless url.nil?\r
+ film.critiqueSpectateur = e.get_text('critiqueSpectateur')\r
+ film.critiqueSpectateur = film.critiqueSpectateur.value if film.critiqueSpectateur != nil\r
\r
- fichiers.each{|e|\r
- film.addFichier(e.get_text.value)\r
- @filmsFichier[e.get_text.value] = film\r
+ film.budget = e.get_text('budget')\r
+ film.budget = film.budget.value if film.budget != nil\r
+ \r
+ e.elements.each('fichiers/fichier'){|f|\r
+ next if f.get_text == nil\r
+ film.addFichier(f.get_text.value)\r
+ @filmsFichier[f.get_text.value] = film\r
}\r
- film.annee = annee.value unless annee.nil?\r
- acteurs.each{|e|\r
- film.acteurs << Personne::ajouter(e.get_text.value)\r
+ \r
+ e.elements.each('realisateurs/realisateur'){|f|\r
+ film.realisateurs << Personne::ajouter(f.get_text.value)\r
}\r
- pays.each{|e|\r
- film.pays << Pays::ajouter(e.get_text.value)\r
+ \r
+ e.elements.each('acteurs/acteur'){|f|\r
+ film.acteurs << Personne::ajouter(f.get_text.value)\r
}\r
- film.duree = duree.value unless duree.nil?\r
- film.critiquePresse = critiquePresse.value unless critiquePresse.nil?\r
- film.critiqueSpectateur = critiqueSpectateur.value unless critiqueSpectateur.nil?\r
- genres.each{|e|\r
- film.genres << Genre::ajouter(e.get_text.value) if e.get_text != nil\r
+ \r
+ e.elements.each('lespays/pays'){|f|\r
+ film.pays << Pays::ajouter(f.get_text.value)\r
}\r
+ \r
+ e.elements.each('genres/genre'){|f|\r
+ film.genres << Genre::ajouter(f.get_text.value)\r
+ } \r
+ \r
debut = true\r
film.synopsis = ""\r
- synopsis.each{|e|\r
- film.synopsis += "\n" unless debut\r
- film.synopsis += e.get_text.value if e.get_text != nil\r
+ e.elements.each('synopsis/p'){|f|\r
+ film.synopsis += "\n" unless debut \r
+ film.synopsis += f.get_text.value if f.get_text != nil\r
debut = false\r
- }\r
- film.budget = budget.value unless budget.nil?\r
+ } \r
+ film.synopsis = nil if film.synopsis == ""\r
+ \r
@films[film.titre] = film\r
}\r
end\r
\r
if @films.has_key?(film.titre)\r
if !@filmsFichier.has_key?(film.fichiers[0])\r
- puts "[i] movie #{film.titre} has a another file part : #{film.fichiers[0]}"\r
+ puts "[i] Le film #{film.titre} possède une autre partie : #{film.fichiers[0]}"\r
@films[film.titre].addFichier(film.fichiers[0])\r
@filmsFichier[film.fichiers[0]] = @films[film.titre] \r
else\r
- puts "[!] Duplicate movie : #{film.titre} (#{film.fichiers[0]})"\r
+ puts "[!] Film déjà dans la BD : #{film.titre} (#{film.fichiers[0]})"\r
end\r
else\r
- puts "[i] movie added : #{film.titre} (#{film.fichiers[0]})"\r
+ puts "[i] Film ajouté : #{film.titre} (#{film.fichiers[0]})"\r
@films[film.titre] = film\r
@filmsFichier[film.fichiers[0]] = film\r
end\r
pomperR(fichier) \r
else\r
\r
- #CGI::escapeHTML(\r
- fichier = Iconv.iconv("UTF-8", "ISO-8859-1", fichier)[0]\r
+ #fichier = Iconv.iconv("UTF-8", "ISO-8859-1", fichier)[0] // sous windows il faut décommenter cette ligne\r
\r
# véfication de l'extension\r
/^.*?\.([^.]{3,4})$/ =~ fichier\r
if !FILMS_EXTENSIONS.include?($1)\r
next\r
- end\r
- \r
+ end
+ \r
# on skip si le film est déjà dans la BD\r
if film = @filmsFichier[fichier]\r
- puts "[i] Already exists in DB : #{film.titre} (#{fichier})"\r
+ puts "[!] Film déjà dans la BD : #{film.titre} (#{film.fichiers[0]})"\r
next\r
end\r
\r
Thread::start{\r
begin \r
film = Film::new(fichier, @modClasse::new)\r
- @mutexId.synchronize {\r
+ @mutexId.synchronize{\r
film.id = getNewId # on lui donne un nouvel ID\r
}\r
- film.loadData # on charge ses données\r
\r
- @mutexAjout.synchronize {\r
+ film.loadData # chargement de ses données\r
+ \r
+ @mutexAjout.synchronize{\r
ajouterFilm(film)\r
- } \r
+ }\r
rescue Exception => e\r
puts e.message\r
puts e.backtrace\r