projects
/
pompage.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
git-svn-id: svn://euphorik.ch/pompage@35 02bbb61a-6d21-0410-aba0-cb053bdfd66a
[pompage.git]
/
src
/
films.rb
diff --git
a/src/films.rb
b/src/films.rb
index
bc23fdc
..
59f4af7
100644
(file)
--- a/
src/films.rb
+++ b/
src/films.rb
@@
-8,6
+8,7
@@
require 'pays.rb'
require 'genre.rb'
\r
require 'personne.rb'
\r
require 'constantes.rb'
\r
require 'genre.rb'
\r
require 'personne.rb'
\r
require 'constantes.rb'
\r
+require 'iconv'
\r
\r
class Films
\r
def initialize(xmlFile)
\r
\r
class Films
\r
def initialize(xmlFile)
\r
@@
-16,15
+17,19
@@
class Films
# repertoire de base, par exemple C:/Divx/
\r
@repBase = ''
\r
\r
# repertoire de base, par exemple C:/Divx/
\r
@repBase = ''
\r
\r
- # Les films index
és
par leur titre
\r
+ # Les films index
é
par leur titre
\r
@films = {}
\r
\r
@films = {}
\r
\r
- # Les films index
és par leur nom de fichier, deux fichiers différents peuvent pointer sur le mê
me film
\r
+ # Les films index
é par leur nom de fichier, deux fichiers différents peuvent pointer sur le mê
me film
\r
@filmsFichier = {}
\r
\r
@filmsFichier = {}
\r
\r
- # Les films qui ont plusieurs r
éponses lors de la recherche, traités à
la fin
\r
+ # Les films qui ont plusieurs r
éponses lors de la recherche, traité à
la fin
\r
@filmsPlusieursReponses = []
\r
\r
@filmsPlusieursReponses = []
\r
\r
+ # Les films qui ont plusieurs réponses lors de la recherche, traité à la fin
\r
+ @filmsAucuneReponse = []
\r
+
\r
+ # permet de traiter facilement des groupes de thread
\r
@threadsWait = ThreadsWait::new
\r
@nbConn = 0 # le nombre de connexion
\r
\r
@threadsWait = ThreadsWait::new
\r
@nbConn = 0 # le nombre de connexion
\r
\r
@@
-34,17
+39,21
@@
class Films
chargerFilms
\r
end
\r
\r
chargerFilms
\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(r)
\r
\r
def pomper(r)
\r
@repBase = r
\r
repPrecedant = Dir::getwd
\r
Dir::chdir(r)
\r
\r
+ t = Time::now
\r
+
\r
pomperR('.')
\r
\r
# on attends que les threads se terminent
\r
@threadsWait.all_waits
\r
\r
pomperR('.')
\r
\r
# on attends que les threads se terminent
\r
@threadsWait.all_waits
\r
\r
+ puts "Pompage terminé, temps : #{Time::now - t} secondes"
\r
+
\r
# traite les films qui avaient plusieurs réponses lors de la recherche
\r
# l'utilisateur doit faire un choix
\r
i = 1
\r
# traite les films qui avaient plusieurs réponses lors de la recherche
\r
# l'utilisateur doit faire un choix
\r
i = 1
\r
@@
-57,6
+66,16
@@
class Films
i += 1
\r
}
\r
\r
i += 1
\r
}
\r
\r
+ i = 1
\r
+ @filmsAucuneReponse.each{|f|
\r
+ puts
\r
+ puts "Plop, Ce film n'a pas été trouvé{i} / #{@filmsAucuneReponse.length} :"
\r
+ if f.reglerConflitPlusieursReponses
\r
+ ajouterFilm(f)
\r
+ end
\r
+ i += 1
\r
+ }
\r
+
\r
Dir::chdir(repPrecedant)
\r
end
\r
\r
Dir::chdir(repPrecedant)
\r
end
\r
\r
@@
-73,7
+92,7
@@
class Films
pi = REXML::Instruction.new("xml-stylesheet", "type=\"text/xsl\" href=\"../xsl/yopyop.xsl\"")
\r
racine.previous_sibling = pi
\r
\r
pi = REXML::Instruction.new("xml-stylesheet", "type=\"text/xsl\" href=\"../xsl/yopyop.xsl\"")
\r
racine.previous_sibling = pi
\r
\r
- # on ajoute chaque film
à
la racine
\r
+ # on ajoute chaque film
à
la racine
\r
@films.each{|nom, f|
\r
racine.add(f.getXml)
\r
}
\r
@films.each{|nom, f|
\r
racine.add(f.getXml)
\r
}
\r
@@
-149,7
+168,7
@@
class Films
}
\r
end
\r
\r
}
\r
end
\r
\r
- # Retourne un nouvel id, utilis
é lors de la cré
ation d'un nouveau film
\r
+ # Retourne un nouvel id, utilis
é alors de la cré
ation d'un nouveau film
\r
def getNewId
\r
id = @idDisponible
\r
@idDisponible += 1
\r
def getNewId
\r
id = @idDisponible
\r
@idDisponible += 1
\r
@@
-163,7
+182,11
@@
class Films
return
\r
end
\r
\r
return
\r
end
\r
\r
- # le film existe déjà
\r
+ if film.nbReponses == 0
\r
+ @filmsAucuneReponse << film
\r
+ return
\r
+ end
\r
+
\r
if @films.has_key?(film.titre)
\r
# le fichier n'est pas connu -> nième partie d'un film
\r
if !@filmsFichier.has_key?(film.fichiers[0])
\r
if @films.has_key?(film.titre)
\r
# le fichier n'est pas connu -> nième partie d'un film
\r
if !@filmsFichier.has_key?(film.fichiers[0])
\r
@@
-180,7
+203,7
@@
class Films
end
\r
end
\r
\r
end
\r
end
\r
\r
- # Appel
é par 'pomper'. Cette méthode est ré
cursive.
\r
+ # Appel
é par 'pomper'. Cette méthode est ré
cursive.
\r
def pomperR(r)
\r
Dir::foreach(r){|f|
\r
next if f[0,1] == '.'
\r
def pomperR(r)
\r
Dir::foreach(r){|f|
\r
next if f[0,1] == '.'
\r
@@
-189,15
+212,15
@@
class Films
litRepertoireR(fichier)
\r
else
\r
\r
litRepertoireR(fichier)
\r
else
\r
\r
- # v
éri
fication de l'extension
\r
+ # v
é
fication de l'extension
\r
/^.*?\.(.{3,4})$/ =~ fichier
\r
if !FILMS_EXTENSIONS.include?($1)
\r
next
\r
end
\r
\r
/^.*?\.(.{3,4})$/ =~ fichier
\r
if !FILMS_EXTENSIONS.include?($1)
\r
next
\r
end
\r
\r
- fichier = CGI::escapeHTML(
fichier.unpack("C*").pack("U*")
)
\r
+ fichier = CGI::escapeHTML(
Iconv.iconv("UTF-8", "ISO-8859-1", fichier)[0]
)
\r
\r
\r
- # on skip si le film est d
éjàa
dans la BD
\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
next
\r
if film = @filmsFichier[fichier]
\r
puts "[i] Already exists in DB : #{film.titre} (#{fichier})"
\r
next
\r
@@
-205,7
+228,7
@@
class Films
\r
film = nil
\r
\r
\r
film = nil
\r
\r
- # pour limiter le nombre de connexion simultan
é
e
\r
+ # pour limiter le nombre de connexion simultan
é
e
\r
if @nbConn >= NB_CONN_MAX
\r
@threadsWait.next_wait
\r
end
\r
if @nbConn >= NB_CONN_MAX
\r
@threadsWait.next_wait
\r
end
\r
@@
-217,13
+240,13
@@
class Films
film = Film::new(fichier).loadData
\r
film.id = getNewId # on lui donne un nouvel ID
\r
\r
film = Film::new(fichier).loadData
\r
film.id = getNewId # on lui donne un nouvel ID
\r
\r
- unless film.nil? # le film a
été
correctement construit
\r
+ unless film.nil? # le film a
été
correctement construit
\r
ajouterFilm(film)
\r
end
\r
rescue Exception => e
\r
puts e.message
\r
puts e.backtrace
\r
ajouterFilm(film)
\r
end
\r
rescue Exception => e
\r
puts e.message
\r
puts e.backtrace
\r
- end
\r
+ end
\r
@nbConn -= 1
\r
}
\r
)
\r
@nbConn -= 1
\r
}
\r
)
\r