movies_client 0.0.11 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +17 -17
- data/Gemfile +4 -4
- data/LICENSE.txt +22 -22
- data/README.md +29 -29
- data/Rakefile +1 -1
- data/lib/movies_client/schedule_parser.rb +274 -0
- data/lib/movies_client/tmdb_client.rb +96 -0
- data/lib/movies_client/version.rb +1 -1
- data/lib/movies_client.rb +89 -448
- data/test/movies_client/schedule_parser_test.rb +56 -0
- data/test/movies_client/tmdb_client_test.rb +50 -0
- data/test/movies_client_test.rb +4 -90
- metadata +27 -5
- checksums.yaml +0 -15
data/lib/movies_client.rb
CHANGED
@@ -1,449 +1,90 @@
|
|
1
|
-
#ENCODING:UTF-8
|
2
|
-
require "movies_client/version"
|
3
|
-
require "
|
4
|
-
require "
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
end
|
91
|
-
value_escaped = CGI::escape(value)
|
92
|
-
film.store(value,[value_escaped])
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
when 3
|
97
|
-
unless flagline
|
98
|
-
day[:date] = value
|
99
|
-
end
|
100
|
-
when 5
|
101
|
-
if flagline
|
102
|
-
day[:film4] = value
|
103
|
-
unless film.has_key?(value)
|
104
|
-
unless value.nil?
|
105
|
-
if value.include? ':'
|
106
|
-
value.sub!(':', ' ')
|
107
|
-
end
|
108
|
-
if value.include? "'"
|
109
|
-
value.sub!("'", ' ')
|
110
|
-
end
|
111
|
-
if value.include? ","
|
112
|
-
value.sub!(",", '')
|
113
|
-
end
|
114
|
-
value_escaped = CGI::escape(value)
|
115
|
-
film.store(value,[value_escaped])
|
116
|
-
end
|
117
|
-
end
|
118
|
-
else
|
119
|
-
day[:film2] = value
|
120
|
-
unless film.has_key?(value)
|
121
|
-
unless value.nil?
|
122
|
-
if value.include? ':'
|
123
|
-
value.sub!(':', ' ')
|
124
|
-
end
|
125
|
-
if value.include? "'"
|
126
|
-
value.sub!("'", ' ')
|
127
|
-
end
|
128
|
-
if value.include? ","
|
129
|
-
value.sub!(",", '')
|
130
|
-
end
|
131
|
-
value_escaped = CGI::escape(value)
|
132
|
-
film.store(value,[value_escaped])
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
else
|
137
|
-
# cellule non traité
|
138
|
-
end
|
139
|
-
x += 1
|
140
|
-
end
|
141
|
-
@daily_schedule.store(key, day)
|
142
|
-
if flagline
|
143
|
-
day = {}
|
144
|
-
end
|
145
|
-
y +=1
|
146
|
-
end
|
147
|
-
@result.store( :daily_schedule, @daily_schedule)
|
148
|
-
@result.store( :result, film)
|
149
|
-
@result
|
150
|
-
end
|
151
|
-
|
152
|
-
def self.parse_ods_with_day(date)
|
153
|
-
s = Roo::OpenOffice.new(@config[:prog], ods_options: {encoding: Encoding::UTF_8})
|
154
|
-
|
155
|
-
@result = {}
|
156
|
-
@daily_schedule = {}
|
157
|
-
day = {}
|
158
|
-
film = {}
|
159
|
-
lastrow = s.last_row
|
160
|
-
lastcolumn = s.last_column
|
161
|
-
y = 2 # Start on line 2 to avoid header
|
162
|
-
|
163
|
-
@result[:mois] = s.cell(1,3)
|
164
|
-
@result[:cinema1] = s.cell(1,2)
|
165
|
-
@result[:cinema2] = s.cell(1,5)
|
166
|
-
|
167
|
-
while y != lastrow do
|
168
|
-
x = 1
|
169
|
-
|
170
|
-
while x != lastcolumn+1 do
|
171
|
-
|
172
|
-
value = s.cell(y,x)
|
173
|
-
|
174
|
-
if s.cell(y, 3).nil?
|
175
|
-
key = s.cell(y-1, 3).gsub(/[^\d]/, '').to_s
|
176
|
-
flagline = true # second line of a date
|
177
|
-
else
|
178
|
-
key = s.cell(y, 3).gsub(/[^\d]/, '').to_s
|
179
|
-
flagline = false #first line of a date
|
180
|
-
end
|
181
|
-
|
182
|
-
case key
|
183
|
-
when date
|
184
|
-
case x
|
185
|
-
when 1
|
186
|
-
if flagline
|
187
|
-
day[:horaire2] = value
|
188
|
-
else
|
189
|
-
day[:horaire1] = value
|
190
|
-
end
|
191
|
-
when 2
|
192
|
-
if flagline == false
|
193
|
-
day[:film1] = value
|
194
|
-
unless film.has_key?(value)
|
195
|
-
unless value.nil?
|
196
|
-
if value.include? ':'
|
197
|
-
value.sub!(':', ' ')
|
198
|
-
end
|
199
|
-
if value.include? "'"
|
200
|
-
value.sub!("'", ' ')
|
201
|
-
end
|
202
|
-
if value.include? ","
|
203
|
-
value.sub!(",", '')
|
204
|
-
end
|
205
|
-
value_escaped = CGI::escape(value)
|
206
|
-
film.store(value,[value_escaped])
|
207
|
-
end
|
208
|
-
end
|
209
|
-
elsif flagline == true
|
210
|
-
day[:film3] = value
|
211
|
-
unless film.has_key?(value)
|
212
|
-
unless value.nil?
|
213
|
-
if value.include? ':'
|
214
|
-
value.sub!(':', ' ')
|
215
|
-
end
|
216
|
-
if value.include? "'"
|
217
|
-
value.sub!("'", ' ')
|
218
|
-
end
|
219
|
-
if value.include? ","
|
220
|
-
value.sub!(",", '')
|
221
|
-
end
|
222
|
-
value_escaped = CGI::escape(value)
|
223
|
-
film.store(value,[value_escaped])
|
224
|
-
end
|
225
|
-
end
|
226
|
-
end
|
227
|
-
when 3
|
228
|
-
unless flagline == true
|
229
|
-
day[:date] = value
|
230
|
-
end
|
231
|
-
when 5
|
232
|
-
if flagline == false
|
233
|
-
day[:film2] = value
|
234
|
-
unless film.has_key?(value)
|
235
|
-
unless value.nil?
|
236
|
-
if value.include? ':'
|
237
|
-
value.sub!(':', ' ')
|
238
|
-
end
|
239
|
-
if value.include? "'"
|
240
|
-
value.sub!("'", ' ')
|
241
|
-
end
|
242
|
-
if value.include? ","
|
243
|
-
value.sub!(",", '')
|
244
|
-
end
|
245
|
-
value_escaped = CGI::escape(value)
|
246
|
-
film.store(value,[value_escaped])
|
247
|
-
end
|
248
|
-
end
|
249
|
-
elsif flagline == true
|
250
|
-
day[:film4] = value
|
251
|
-
unless film.has_key?(value)
|
252
|
-
unless value.nil?
|
253
|
-
if value.include? ':'
|
254
|
-
value.sub!(':', ' ')
|
255
|
-
end
|
256
|
-
if value.include? "'"
|
257
|
-
value.sub!("'", ' ')
|
258
|
-
end
|
259
|
-
if value.include? ","
|
260
|
-
value.sub!(",", '')
|
261
|
-
end
|
262
|
-
value_escaped = CGI::escape(value)
|
263
|
-
film.store(value,[value_escaped])
|
264
|
-
end
|
265
|
-
end
|
266
|
-
end
|
267
|
-
else
|
268
|
-
# cellule non traité
|
269
|
-
end
|
270
|
-
else
|
271
|
-
# date non traité
|
272
|
-
end
|
273
|
-
x += 1
|
274
|
-
end
|
275
|
-
unless day[:date].nil?
|
276
|
-
@daily_schedule.store( key, day)
|
277
|
-
end
|
278
|
-
if flagline == true
|
279
|
-
day = {}
|
280
|
-
end
|
281
|
-
y +=1
|
282
|
-
end
|
283
|
-
@result.store( :daily_schedule, @daily_schedule)
|
284
|
-
@result.store( :result, film)
|
285
|
-
@result
|
286
|
-
end
|
287
|
-
|
288
|
-
def self.get_movie_details(id)
|
289
|
-
Tmdb::Api.key(@config[:key])
|
290
|
-
Tmdb::Api.language("fr")
|
291
|
-
movie = Tmdb::Movie.detail(id)
|
292
|
-
movie
|
293
|
-
end
|
294
|
-
|
295
|
-
def self.get_id_from_title(title)
|
296
|
-
Tmdb::Api.key(@config[:key])
|
297
|
-
Tmdb::Api.language("fr")
|
298
|
-
@search = Tmdb::Search.new
|
299
|
-
@search.resource('movie')
|
300
|
-
@search.query(title)
|
301
|
-
@movie = @search.fetch
|
302
|
-
if @movie.nil?
|
303
|
-
puts title
|
304
|
-
else
|
305
|
-
f = @movie.length
|
306
|
-
i = 0
|
307
|
-
while i != f
|
308
|
-
unless @movie[i][:release_date] == ''
|
309
|
-
date = Date.parse @movie[i][:release_date]
|
310
|
-
if date.year == Date.today.year or date.year == Date.today.prev_year
|
311
|
-
@movie_id = @movie[i][:id]
|
312
|
-
else
|
313
|
-
@movie_id = @movie[0][:id]
|
314
|
-
end
|
315
|
-
end
|
316
|
-
i += 1
|
317
|
-
end
|
318
|
-
@movie_id
|
319
|
-
end
|
320
|
-
end
|
321
|
-
|
322
|
-
def self.get_trailer(id)
|
323
|
-
Tmdb::Api.key(@config[:key])
|
324
|
-
Tmdb::Api.language("fr")
|
325
|
-
trailer = Tmdb::Movie.trailers(id)
|
326
|
-
link = ''
|
327
|
-
unless trailer["youtube"][0].nil?
|
328
|
-
source = trailer["youtube"][0]["source"]
|
329
|
-
link = 'https://www.youtube.com/watch?v='+source.to_s
|
330
|
-
end
|
331
|
-
link
|
332
|
-
end
|
333
|
-
|
334
|
-
def self.get_credits(id)
|
335
|
-
Tmdb::Api.key(@config[:key])
|
336
|
-
Tmdb::Api.language("fr")
|
337
|
-
@credit = Tmdb::Movie.credits(id)
|
338
|
-
@credits = {}
|
339
|
-
cred = {}
|
340
|
-
@credit["crew"].each do |r|
|
341
|
-
key = r["job"]
|
342
|
-
value = r["name"]
|
343
|
-
if cred.has_key?(key)
|
344
|
-
cred[key] << value
|
345
|
-
else
|
346
|
-
cred.store(key, [value])
|
347
|
-
end
|
348
|
-
end
|
349
|
-
@credits.store(:credit, cred)
|
350
|
-
@credits
|
351
|
-
end
|
352
|
-
|
353
|
-
def self.get_movie_casts(id)
|
354
|
-
Tmdb::Api.key(@config[:key])
|
355
|
-
Tmdb::Api.language("fr")
|
356
|
-
@casts = Tmdb::Movie.casts(id)
|
357
|
-
@credit = Tmdb::Movie.credits(id)
|
358
|
-
@casting = {}
|
359
|
-
actor = {}
|
360
|
-
i = 0
|
361
|
-
if @casts.nil?
|
362
|
-
actor = 'casting non disponible'
|
363
|
-
@casting = actor
|
364
|
-
else
|
365
|
-
while i < 3
|
366
|
-
unless @casts[i].nil?
|
367
|
-
actor[:role] = @casts[i]["character"]
|
368
|
-
actor[:name] = @casts[i]["name"]
|
369
|
-
end
|
370
|
-
@casting.store(i, actor)
|
371
|
-
actor = {}
|
372
|
-
i += 1
|
373
|
-
end
|
374
|
-
end
|
375
|
-
@casting
|
376
|
-
end
|
377
|
-
|
378
|
-
def self.get_movie_info_from_list(list, size)
|
379
|
-
result = {}
|
380
|
-
@listresult = {}
|
381
|
-
list.each_pair do |k, v|
|
382
|
-
id = MoviesClient.get_id_from_title(v)
|
383
|
-
movie = MoviesClient.get_movie_details(id)
|
384
|
-
casting = MoviesClient.get_movie_casts(id)
|
385
|
-
credits = MoviesClient.get_credits(id)
|
386
|
-
trailer = MoviesClient.get_trailer(id)
|
387
|
-
|
388
|
-
result[:id] = id
|
389
|
-
result[:title_list] = k
|
390
|
-
unless movie.title == ''
|
391
|
-
result[:title] = movie.title
|
392
|
-
end
|
393
|
-
unless movie.overview == ''
|
394
|
-
result[:synopsis] = movie.overview
|
395
|
-
end
|
396
|
-
unless movie.tagline == ''
|
397
|
-
result[:tagline] = movie.tagline
|
398
|
-
end
|
399
|
-
unless movie.release_date == ''
|
400
|
-
result[:release_date] = movie.release_date
|
401
|
-
end
|
402
|
-
unless trailer == ''
|
403
|
-
result[:trailer] = trailer
|
404
|
-
end
|
405
|
-
unless movie.genres.nil?
|
406
|
-
result[:genre] = movie.genres.collect { |g| g[:name] }
|
407
|
-
end
|
408
|
-
unless movie.poster_path.nil?
|
409
|
-
result[:poster] = 'http://image.tmdb.org/t/p/'+size+'/'+movie.poster_path
|
410
|
-
end
|
411
|
-
unless casting.nil?
|
412
|
-
result[:casting] = casting
|
413
|
-
end
|
414
|
-
unless credits.nil?
|
415
|
-
result[:credits] = credits
|
416
|
-
end
|
417
|
-
|
418
|
-
@listresult.store(k, result)
|
419
|
-
result = {}
|
420
|
-
end
|
421
|
-
@listresult
|
422
|
-
end
|
423
|
-
|
424
|
-
def self.assemble_prog_with_info(prog,info)
|
425
|
-
prog.store(:result, info)
|
426
|
-
prog
|
427
|
-
end
|
428
|
-
|
429
|
-
def self.get_info(path, key, size)
|
430
|
-
MoviesClient.configure_file_path(path)
|
431
|
-
MoviesClient.configure_api_key(key)
|
432
|
-
@programme = MoviesClient.parse_ods
|
433
|
-
@movie_info = MoviesClient.get_movie_info_from_list(@programme[:result], size)
|
434
|
-
@result = MoviesClient.assemble_prog_with_info(@programme, @movie_info)
|
435
|
-
@cinema_object = MoviesObject.new(@result)
|
436
|
-
@cinema_object
|
437
|
-
end
|
438
|
-
|
439
|
-
def self.select_daily_program(path, key, size, date)
|
440
|
-
MoviesClient.configure_file_path(path)
|
441
|
-
MoviesClient.configure_api_key(key)
|
442
|
-
@result = MoviesClient.parse_ods_with_day(date)
|
443
|
-
@movie_info = MoviesClient.get_movie_info_from_list(@result[:result], size)
|
444
|
-
@result = MoviesClient.assemble_prog_with_info(@result, @movie_info)
|
445
|
-
@cinema_object = MoviesObject.new(@result)
|
446
|
-
@cinema_object
|
447
|
-
end
|
448
|
-
|
1
|
+
#ENCODING:UTF-8
|
2
|
+
require "movies_client/version"
|
3
|
+
require "movies_client/schedule_parser"
|
4
|
+
require "movies_client/tmdb_client"
|
5
|
+
|
6
|
+
module MoviesClient
|
7
|
+
|
8
|
+
# default information
|
9
|
+
@config = { :prog => "../../data/PROG_GB_JUILLET_2014.ods",
|
10
|
+
:key => ""
|
11
|
+
}
|
12
|
+
|
13
|
+
def self.configure_file_path(path)
|
14
|
+
@config[:prog] = path
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.configure_api_key(key)
|
18
|
+
@config[:key] = key
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.get_movie_info_from_list(list, size)
|
22
|
+
result = {}
|
23
|
+
listresult = {}
|
24
|
+
list.each_pair do |k, v|
|
25
|
+
id = TmdbClient.get_id_from_title(v, @config[:key])
|
26
|
+
movie = TmdbClient.get_movie_details(id, @config[:key])
|
27
|
+
casting = TmdbClient.get_movie_casts(id, @config[:key])
|
28
|
+
credits = TmdbClient.get_credits(id, @config[:key])
|
29
|
+
trailer = TmdbClient.get_trailer(id, @config[:key])
|
30
|
+
|
31
|
+
result[:id] = id
|
32
|
+
result[:title_list] = k
|
33
|
+
unless movie.title == ''
|
34
|
+
result[:title] = movie.title
|
35
|
+
end
|
36
|
+
unless movie.overview == ''
|
37
|
+
result[:synopsis] = movie.overview
|
38
|
+
end
|
39
|
+
unless movie.tagline == ''
|
40
|
+
result[:tagline] = movie.tagline
|
41
|
+
end
|
42
|
+
unless movie.release_date == ''
|
43
|
+
result[:release_date] = movie.release_date
|
44
|
+
end
|
45
|
+
unless trailer == ''
|
46
|
+
result[:trailer] = trailer
|
47
|
+
end
|
48
|
+
unless movie.genres.nil?
|
49
|
+
result[:genre] = movie.genres.collect { |g| g[:name] }
|
50
|
+
end
|
51
|
+
unless movie.poster_path.nil?
|
52
|
+
result[:poster] = 'http://image.tmdb.org/t/p/'+size+'/'+movie.poster_path
|
53
|
+
end
|
54
|
+
unless casting.nil?
|
55
|
+
result[:casting] = casting
|
56
|
+
end
|
57
|
+
unless credits.nil?
|
58
|
+
result[:credits] = credits
|
59
|
+
end
|
60
|
+
|
61
|
+
listresult.store(k, result)
|
62
|
+
result = {}
|
63
|
+
end
|
64
|
+
listresult
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.assemble_prog_with_info(prog,info)
|
68
|
+
prog.store(:result, info)
|
69
|
+
prog
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.get_info(path, key, size)
|
73
|
+
configure_file_path(path)
|
74
|
+
configure_api_key(key)
|
75
|
+
programme = ScheduleParser.parse_ods(@config[:prog])
|
76
|
+
movie_info = get_movie_info_from_list(programme[:result], size)
|
77
|
+
result = assemble_prog_with_info(programme, movie_info)
|
78
|
+
MoviesObject.new(result)
|
79
|
+
end
|
80
|
+
|
81
|
+
def self.select_daily_program(path, key, size, date)
|
82
|
+
MoviesClient.configure_file_path(path)
|
83
|
+
MoviesClient.configure_api_key(key)
|
84
|
+
result = ScheduleParser.parse_ods_with_day(@config[:prog], date)
|
85
|
+
movie_info = get_movie_info_from_list(result[:result], size)
|
86
|
+
result = assemble_prog_with_info(result, movie_info)
|
87
|
+
MoviesObject.new(result)
|
88
|
+
end
|
89
|
+
|
449
90
|
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
#ENCODING:UTF-8
|
2
|
+
require "rubygems"
|
3
|
+
gem "shoulda"
|
4
|
+
require "test/unit"
|
5
|
+
require "shoulda"
|
6
|
+
require "movies_client/schedule_parser"
|
7
|
+
|
8
|
+
class ScheduleParserTest < Test::Unit::TestCase
|
9
|
+
|
10
|
+
setup do
|
11
|
+
@ods_path = File.join('..', '..', 'data', 'PROG_GB_JUILLET_2014.ods')
|
12
|
+
end
|
13
|
+
|
14
|
+
should 'parse ods file ' do
|
15
|
+
result_expected = {:mois=>"JUILLET", :cinema1=>"LES RHODOS VILLAGE", :cinema2=>"LE CHARMIEUX CHINAILLON", :daily_schedule=>{"5"=>{:horaire1=>"17h30", :film1=>"SOUS LES JUPES DES FILLES", :date=>"SAM 5", :film2=>"BABYSITTING", :horaire2=>"21H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"BABYSITTING"}, "6"=>{:horaire1=>"17h30", :film1=>"DEUX JOURS UNE NUIT", :date=>"DIM 6", :film2=>"SOUS LES JUPES DES FILLES", :horaire2=>"21H", :film3=>"DE TOUTES NOS FORCES", :film4=>"SOUS LES JUPES DES FILLES"}, "7"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"LUN 7", :film2=>"RIO 2", :horaire2=>"21H", :film3=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :film4=>"DE TOUTES NOS FORCES"}, "8"=>{:horaire1=>"17h30", :film1=>"BARBECUE", :date=>"MAR 8", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>"21H", :film3=>"BABYSITTING", :film4=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?"}, "9"=>{:horaire1=>"17h30", :film1=>"LA LISTE DE MES ENVIES", :date=>"MER 9", :film2=>"DRAGONS 2", :horaire2=>"21 H", :film3=>"MALEFIQUE", :film4=>"BARBECUE"}, "10"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"JEU 10", :film2=>"MALEFIQUE", :horaire2=>"21 H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"LA LISTE DE MES ENVIES"}, "11"=>{:horaire1=>"17h30", :film1=>"RIO 2", :date=>"VEN 11", :film2=>"SOUS LES JUPES DES FILLES", :horaire2=>"21 H", :film3=>"ON A FAILLI \u00CATRE AMIES", :film4=>"DEUX JOURS UNE NUIT"}, "12"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"SAM 12", :film2=>"BABYSITTING", :horaire2=>"21 H", :film3=>"LA RITOURNELLE", :film4=>"ON A FAILLI \u00CATRE AMIES"}, "13"=>{:horaire1=>"17h30", :film1=>"LES VACANCES DU PETIT NICOLAS", :date=>"DIM 13 ", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>nil, :film3=>nil, :film4=>nil}, "14"=>{:horaire1=>"17h30", :film1=>"MALEFIQUE", :date=>"LUN 14", :film2=>"LES VACANCES DU PETIT NICOLAS", :horaire2=>"21 H", :film3=>"LA LISTE DE MES ENVIES", :film4=>"LES VACANCES DU PETIT NICOLAS"}, "15"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"MAR 15", :film2=>"LA RITOURNELLE", :horaire2=>"21H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"LA LISTE DE MES ENVIES"}, "16"=>{:horaire1=>"17h30", :film1=>"DEUX JOURS UNE NUIT", :date=>"MER 16", :film2=>"DRAGONS 2", :horaire2=>"21 H", :film3=>"ON A FAILLI \u00CATRE AMIES", :film4=>"SOUS LES JUPES DES FILLES"}, "17"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"JEU 17", :film2=>"RIO 2", :horaire2=>"21H", :film3=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :film4=>"ON A FAILLI \u00CATRE AMIES"}, "18"=>{:horaire1=>"17h30", :film1=>"LES VACANCES DU PETIT NICOLAS", :date=>"VEN 18", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>"21 H", :film3=>"LES VACANCES DU PETIT NICOLAS", :film4=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?"}, "19"=>{:horaire1=>"17h30", :film1=>"MALEFIQUE", :date=>"SAM 19", :film2=>"LES VACANCES DU PETIT NICOLAS", :horaire2=>"21 H", :film3=>"TRANSFORMERS L AGE DE L'EXTINCTION", :film4=>"LES VACANCES DU PETIT NICOLAS"}, "20"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"DIM 20", :film2=>"MALEFIQUE", :horaire2=>"21 H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"TRANSFORMERS L AGE DE L'EXTINCTION"}, "21"=>{:horaire1=>"17h30", :film1=>"RIO 2", :date=>"LUN 21", :film2=>"DRAGONS 2", :horaire2=>"21 H", :film3=>"TRANSCENDANCE", :film4=>"SOUS LES JUPES DES FILLES"}, "22"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"MAR 22", :film2=>"RIO 2", :horaire2=>"21 H", :film3=>"LA RITOURNELLE", :film4=>"TRANSCENDANCE"}, "23"=>{:horaire1=>"17h30", :film1=>"LES VACANCES DU PETIT NICOLAS", :date=>"MER 23", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>"21 H", :film3=>"LES VACANCES DU PETIT NICOLAS", :film4=>"LA RITOURNELLE"}, "24"=>{:horaire1=>"17h30", :film1=>"DE TOUTES NOS FORCES", :date=>"JEU 24", :film2=>"LES VACANCES DU PETIT NICOLAS", :horaire2=>"21 H", :film3=>"TRANSFORMERS L AGE DE L'EXTINCTION", :film4=>"LES VACANCES DU PETIT NICOLAS"}, "25"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"VEN 25", :film2=>"MALEFIQUE", :horaire2=>"21 H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"TRANSFORMERS L AGE DE L'EXTINCTION"}, "26"=>{:horaire1=>"17h30", :film1=>"PLANES 2", :date=>"SAM 26", :film2=>"DRAGONS 2", :horaire2=>"21 H", :film3=>"TRANSCENDANCE", :film4=>"SOUS LES JUPES DES FILLES"}, "27"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"DIM 27", :film2=>"PLANES 2", :horaire2=>"21 H", :film3=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :film4=>"ON A FAILLI \u00CATRE AMIES"}, "28"=>{:horaire1=>"17h30", :film1=>"LES VACANCES DU PETIT NICOLAS", :date=>"LUN 28", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>"21 H", :film3=>"LES VACANCES DU PETIT NICOLAS", :film4=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?"}, "29"=>{:horaire1=>"17h30", :film1=>"MALEFIQUE", :date=>"MAR 29", :film2=>"LES VACANCES DU PETIT NICOLAS", :horaire2=>"21 H", :film3=>"TRANSFORMERS L AGE DE L'EXTINCTION", :film4=>"LES VACANCES DU PETIT NICOLAS"}, "30"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"MER 30", :film2=>"DE TOUTES NOS FORCES", :horaire2=>"21 H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"TRANSFORMERS L AGE DE L'EXTINCTION"}, "31"=>{:horaire1=>"17h30", :film1=>"PLANES 2", :date=>"JEU 31", :film2=>"DRAGONS 2"}}, :result=>{"SOUS LES JUPES DES FILLES"=>["SOUS+LES+JUPES+DES+FILLES"], "BABYSITTING"=>["BABYSITTING"], "DEUX JOURS UNE NUIT"=>["DEUX+JOURS+UNE+NUIT"], "DE TOUTES NOS FORCES"=>["DE+TOUTES+NOS+FORCES"], "QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?"=>["QU+EST+CE+QU%27ON+A+FAIT+AU+BON+DIEU%C2%A0%3F"], "RIO 2"=>["RIO+2"], "BARBECUE"=>["BARBECUE"], "LA LISTE DE MES ENVIES"=>["LA+LISTE+DE+MES+ENVIES"], "DRAGONS 2"=>["DRAGONS+2"], "MALEFIQUE"=>["MALEFIQUE"], "ON A FAILLI \u00CATRE AMIES"=>["ON+A+FAILLI+%C3%8ATRE+AMIES"], "LA RITOURNELLE"=>["LA+RITOURNELLE"], "LES VACANCES DU PETIT NICOLAS"=>["LES+VACANCES+DU+PETIT+NICOLAS"], "TRANSFORMERS L AGE DE L'EXTINCTION"=>["TRANSFORMERS+L+AGE+DE+L%27EXTINCTION"], "TRANSCENDANCE"=>["TRANSCENDANCE"], "PLANES 2"=>["PLANES+2"]}}
|
16
|
+
daily_schedule = {"5"=>{:horaire1=>"17h30", :film1=>"SOUS LES JUPES DES FILLES", :date=>"SAM 5", :film2=>"BABYSITTING", :horaire2=>"21H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"BABYSITTING"}, "6"=>{:horaire1=>"17h30", :film1=>"DEUX JOURS UNE NUIT", :date=>"DIM 6", :film2=>"SOUS LES JUPES DES FILLES", :horaire2=>"21H", :film3=>"DE TOUTES NOS FORCES", :film4=>"SOUS LES JUPES DES FILLES"}, "7"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"LUN 7", :film2=>"RIO 2", :horaire2=>"21H", :film3=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :film4=>"DE TOUTES NOS FORCES"}, "8"=>{:horaire1=>"17h30", :film1=>"BARBECUE", :date=>"MAR 8", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>"21H", :film3=>"BABYSITTING", :film4=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?"}, "9"=>{:horaire1=>"17h30", :film1=>"LA LISTE DE MES ENVIES", :date=>"MER 9", :film2=>"DRAGONS 2", :horaire2=>"21 H", :film3=>"MALEFIQUE", :film4=>"BARBECUE"}, "10"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"JEU 10", :film2=>"MALEFIQUE", :horaire2=>"21 H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"LA LISTE DE MES ENVIES"}, "11"=>{:horaire1=>"17h30", :film1=>"RIO 2", :date=>"VEN 11", :film2=>"SOUS LES JUPES DES FILLES", :horaire2=>"21 H", :film3=>"ON A FAILLI \u00CATRE AMIES", :film4=>"DEUX JOURS UNE NUIT"}, "12"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"SAM 12", :film2=>"BABYSITTING", :horaire2=>"21 H", :film3=>"LA RITOURNELLE", :film4=>"ON A FAILLI \u00CATRE AMIES"}, "13"=>{:horaire1=>"17h30", :film1=>"LES VACANCES DU PETIT NICOLAS", :date=>"DIM 13 ", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>nil, :film3=>nil, :film4=>nil}, "14"=>{:horaire1=>"17h30", :film1=>"MALEFIQUE", :date=>"LUN 14", :film2=>"LES VACANCES DU PETIT NICOLAS", :horaire2=>"21 H", :film3=>"LA LISTE DE MES ENVIES", :film4=>"LES VACANCES DU PETIT NICOLAS"}, "15"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"MAR 15", :film2=>"LA RITOURNELLE", :horaire2=>"21H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"LA LISTE DE MES ENVIES"}, "16"=>{:horaire1=>"17h30", :film1=>"DEUX JOURS UNE NUIT", :date=>"MER 16", :film2=>"DRAGONS 2", :horaire2=>"21 H", :film3=>"ON A FAILLI \u00CATRE AMIES", :film4=>"SOUS LES JUPES DES FILLES"}, "17"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"JEU 17", :film2=>"RIO 2", :horaire2=>"21H", :film3=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :film4=>"ON A FAILLI \u00CATRE AMIES"}, "18"=>{:horaire1=>"17h30", :film1=>"LES VACANCES DU PETIT NICOLAS", :date=>"VEN 18", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>"21 H", :film3=>"LES VACANCES DU PETIT NICOLAS", :film4=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?"}, "19"=>{:horaire1=>"17h30", :film1=>"MALEFIQUE", :date=>"SAM 19", :film2=>"LES VACANCES DU PETIT NICOLAS", :horaire2=>"21 H", :film3=>"TRANSFORMERS L AGE DE L'EXTINCTION", :film4=>"LES VACANCES DU PETIT NICOLAS"}, "20"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"DIM 20", :film2=>"MALEFIQUE", :horaire2=>"21 H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"TRANSFORMERS L AGE DE L'EXTINCTION"}, "21"=>{:horaire1=>"17h30", :film1=>"RIO 2", :date=>"LUN 21", :film2=>"DRAGONS 2", :horaire2=>"21 H", :film3=>"TRANSCENDANCE", :film4=>"SOUS LES JUPES DES FILLES"}, "22"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"MAR 22", :film2=>"RIO 2", :horaire2=>"21 H", :film3=>"LA RITOURNELLE", :film4=>"TRANSCENDANCE"}, "23"=>{:horaire1=>"17h30", :film1=>"LES VACANCES DU PETIT NICOLAS", :date=>"MER 23", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>"21 H", :film3=>"LES VACANCES DU PETIT NICOLAS", :film4=>"LA RITOURNELLE"}, "24"=>{:horaire1=>"17h30", :film1=>"DE TOUTES NOS FORCES", :date=>"JEU 24", :film2=>"LES VACANCES DU PETIT NICOLAS", :horaire2=>"21 H", :film3=>"TRANSFORMERS L AGE DE L'EXTINCTION", :film4=>"LES VACANCES DU PETIT NICOLAS"}, "25"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"VEN 25", :film2=>"MALEFIQUE", :horaire2=>"21 H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"TRANSFORMERS L AGE DE L'EXTINCTION"}, "26"=>{:horaire1=>"17h30", :film1=>"PLANES 2", :date=>"SAM 26", :film2=>"DRAGONS 2", :horaire2=>"21 H", :film3=>"TRANSCENDANCE", :film4=>"SOUS LES JUPES DES FILLES"}, "27"=>{:horaire1=>"17h30", :film1=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :date=>"DIM 27", :film2=>"PLANES 2", :horaire2=>"21 H", :film3=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :film4=>"ON A FAILLI \u00CATRE AMIES"}, "28"=>{:horaire1=>"17h30", :film1=>"LES VACANCES DU PETIT NICOLAS", :date=>"LUN 28", :film2=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?", :horaire2=>"21 H", :film3=>"LES VACANCES DU PETIT NICOLAS", :film4=>"QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?"}, "29"=>{:horaire1=>"17h30", :film1=>"MALEFIQUE", :date=>"MAR 29", :film2=>"LES VACANCES DU PETIT NICOLAS", :horaire2=>"21 H", :film3=>"TRANSFORMERS L AGE DE L'EXTINCTION", :film4=>"LES VACANCES DU PETIT NICOLAS"}, "30"=>{:horaire1=>"17h30", :film1=>"DRAGONS 2", :date=>"MER 30", :film2=>"DE TOUTES NOS FORCES", :horaire2=>"21 H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"TRANSFORMERS L AGE DE L'EXTINCTION"}, "31"=>{:horaire1=>"17h30", :film1=>"PLANES 2", :date=>"JEU 31", :film2=>"DRAGONS 2"}}
|
17
|
+
result = {"SOUS LES JUPES DES FILLES"=>["SOUS+LES+JUPES+DES+FILLES"], "BABYSITTING"=>["BABYSITTING"], "DEUX JOURS UNE NUIT"=>["DEUX+JOURS+UNE+NUIT"], "DE TOUTES NOS FORCES"=>["DE+TOUTES+NOS+FORCES"], "QU EST CE QU'ON A FAIT AU BON DIEU\u00A0?"=>["QU+EST+CE+QU%27ON+A+FAIT+AU+BON+DIEU%C2%A0%3F"], "RIO 2"=>["RIO+2"], "BARBECUE"=>["BARBECUE"], "LA LISTE DE MES ENVIES"=>["LA+LISTE+DE+MES+ENVIES"], "DRAGONS 2"=>["DRAGONS+2"], "MALEFIQUE"=>["MALEFIQUE"], "ON A FAILLI \u00CATRE AMIES"=>["ON+A+FAILLI+%C3%8ATRE+AMIES"], "LA RITOURNELLE"=>["LA+RITOURNELLE"], "LES VACANCES DU PETIT NICOLAS"=>["LES+VACANCES+DU+PETIT+NICOLAS"], "TRANSFORMERS L AGE DE L'EXTINCTION"=>["TRANSFORMERS+L+AGE+DE+L%27EXTINCTION"], "TRANSCENDANCE"=>["TRANSCENDANCE"], "PLANES 2"=>["PLANES+2"]}
|
18
|
+
|
19
|
+
@result = ScheduleParser.parse_ods(@ods_path)
|
20
|
+
puts @result
|
21
|
+
assert_equal daily_schedule , @result[:daily_schedule]
|
22
|
+
assert_equal result, @result[:result]
|
23
|
+
assert_equal result_expected , @result
|
24
|
+
assert_equal 'JUILLET' , @result[:mois]
|
25
|
+
assert_equal 'LES RHODOS VILLAGE' , @result[:cinema1]
|
26
|
+
assert_equal 'LE CHARMIEUX CHINAILLON' , @result[:cinema2]
|
27
|
+
assert_equal 'SAM 5' , @result[:daily_schedule]["5"][:date]
|
28
|
+
assert_equal '17h30' , @result[:daily_schedule]["5"][:horaire1]
|
29
|
+
assert_equal '21H' , @result[:daily_schedule]["5"][:horaire2]
|
30
|
+
assert_equal 'SOUS LES JUPES DES FILLES' , @result[:daily_schedule]["5"][:film1]
|
31
|
+
assert_equal 'BABYSITTING' , @result[:daily_schedule]["5"][:film2]
|
32
|
+
assert_equal 'SOUS LES JUPES DES FILLES' , @result[:daily_schedule]["5"][:film3]
|
33
|
+
assert_equal 'BABYSITTING' , @result[:daily_schedule]["5"][:film4]
|
34
|
+
assert_equal 'SOUS+LES+JUPES+DES+FILLES' , @result[:result][@result[:daily_schedule]["5"][:film3]][0]
|
35
|
+
assert_equal 'QU+EST+CE+QU%27ON+A+FAIT+AU+BON+DIEU%C2%A0%3F' , @result[:result][@result[:daily_schedule]["7"][:film3]][0]
|
36
|
+
end
|
37
|
+
|
38
|
+
should 'parse ods file with day information ' do
|
39
|
+
result_expected = {:mois=>"JUILLET", :cinema1=>"LES RHODOS VILLAGE", :cinema2=>"LE CHARMIEUX CHINAILLON", :daily_schedule=>{"5"=>{:horaire1=>"17h30", :film1=>"SOUS LES JUPES DES FILLES", :date=>"SAM 5", :film2=>"BABYSITTING", :horaire2=>"21H", :film3=>"SOUS LES JUPES DES FILLES", :film4=>"BABYSITTING"}}, :result=>{"SOUS LES JUPES DES FILLES"=>["SOUS+LES+JUPES+DES+FILLES"], "BABYSITTING"=>["BABYSITTING"]}}
|
40
|
+
|
41
|
+
@result = ScheduleParser.parse_ods_with_day(@ods_path, '5')
|
42
|
+
puts @result
|
43
|
+
assert_equal result_expected , @result
|
44
|
+
assert_equal 'JUILLET' , @result[:mois]
|
45
|
+
assert_equal 'LES RHODOS VILLAGE' , @result[:cinema1]
|
46
|
+
assert_equal 'LE CHARMIEUX CHINAILLON' , @result[:cinema2]
|
47
|
+
assert_equal 'SAM 5' , @result[:daily_schedule]["5"][:date]
|
48
|
+
assert_equal '17h30' , @result[:daily_schedule]["5"][:horaire1]
|
49
|
+
assert_equal '21H' , @result[:daily_schedule]["5"][:horaire2]
|
50
|
+
assert_equal 'SOUS LES JUPES DES FILLES' , @result[:daily_schedule]["5"][:film1]
|
51
|
+
assert_equal 'BABYSITTING' , @result[:daily_schedule]["5"][:film2]
|
52
|
+
assert_equal 'SOUS LES JUPES DES FILLES' , @result[:daily_schedule]["5"][:film3]
|
53
|
+
assert_equal 'BABYSITTING' , @result[:daily_schedule]["5"][:film4]
|
54
|
+
assert_equal 'SOUS+LES+JUPES+DES+FILLES' , @result[:result][@result[:daily_schedule]["5"][:film3]][0]
|
55
|
+
end
|
56
|
+
end
|