X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;ds=sidebyside;f=src%2Ffilm.rb;h=21c27cbe33c91fb792d5ea051413e5c7f9ea0108;hb=e34f06962c1450efb1aab6d814540c415466a01c;hp=91dcf37f18c3056a17aef89aaceefb3279a2a903;hpb=2a499b47db2419a221fed7cc0e9b899b2505d26f;p=pompage.git
diff --git a/src/film.rb b/src/film.rb
index 91dcf37..21c27cb 100644
--- a/src/film.rb
+++ b/src/film.rb
@@ -1,3 +1,5 @@
+# Attention, le but de ce fichier n'est pas d'être le plus clair possible ^-^´´
+
require 'rexml/document'
require 'net/http'
require 'thread'
@@ -12,13 +14,19 @@ require 'constantes.rb'
class String
def virerBalisesHTML
- return self.gsub(/<(.*?)>/, '')
+ return gsub(/<(.*?)>/, '')
+ end
+ def virerBalisesHTML!
+ gsub!(/<(.*?)>/, '')
end
end
class Film
attr_accessor :id, :titre, :fichiers, :annee, :realisateurs, :acteurs, :pays, :duree, :critiquePresse, :critiqueSpectateur, :genres, :synopsis, :budget
+ # repertoire de base, par exemple C:/Divx/
+ @@repBase = ''
+
# Les films indexés par leur titre
@@films = {}
@@ -28,7 +36,6 @@ class Film
# Les films qui ont plusieurs réponses lors de la recherche, traités à la fin
@@filmsPlusieursReponses = []
- @@mutex = Mutex::new
@@threadsWait = ThreadsWait::new
@@nbConn = 0
@@ -44,17 +51,28 @@ class Film
# Lit un repertoire de manière recursive
def Film::litRepertoire(r)
- Film::litRepertoireR(r)
+ @@repBase = r
+ repPrecedant = Dir::getwd
+ Dir::chdir(r)
+
+ Film::litRepertoireR('.')
+
# on attends que les threads se terminent
@@threadsWait.all_waits
# traite les films qui avaient plusieurs réponses lors de la recherche
# l'utilisateur doit faire un choix
+ i = 1
@@filmsPlusieursReponses.each{|f|
+ puts
+ puts "Plop, ya un conflit #{i} / #{@@filmsPlusieursReponses.length} :"
if f.reglerConflitPlusieursReponses
Film::ajouterFilm(f)
end
+ i += 1
}
+
+ Dir::chdir(repPrecedant)
end
# Charge les films contenus dans un fichier XML.
@@ -143,8 +161,8 @@ private
def Film::litRepertoireR(r)
Dir::foreach(r){|f|
- next if f == '.' or f == '..'
- fichier = r + "/" + f
+ next if f[0,1] == '.'
+ fichier = (r == '.' ? '' : r + "/") + f
if File::directory?(fichier)
litRepertoireR(fichier)
else
@@ -167,21 +185,23 @@ private
film = nil
+ if @@nbConn >= NB_CONN_MAX
+ @@threadsWait.next_wait
+ end
+
@@nbConn += 1
@@threadsWait.join_nowait(
- Thread::new{
- begin
- @@mutex.lock if @@nbConn >= NB_CONN_MAX
+ Thread::new{
+ begin
film = Film::filmsFactory(fichier)
unless film.nil? # le film a été correctement construit
Film::ajouterFilm(film)
end
- @@nbConn -= 1
- @@mutex.unlock
rescue Exception => e
puts e.message
puts e.backtrace
- end
+ end
+ @@nbConn -= 1
}
)
end
@@ -247,8 +267,7 @@ public
@aPlusieursReponses = false # pour faire les choses bien
- puts
- puts "Plop, ya un conflit : #{@fichiers[0]}"
+ puts " -> " + @fichiers[0]
puts "Fais ton choix jeune padawan (un caractère et pas plus)"
tabNoms = @idsAllocine.keys
choix = 1
@@ -341,12 +360,12 @@ public
#// =~ donneesHtml
#r = donneesHtml.scan(/(.*?)<\/a>/)
- r = donneesHtml.scan(/(.*?)<\/a>(?:<\/h4>