cine-passion 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +0 -1
- data/README.txt +8 -5
- data/lib/cine_passion.rb +111 -63
- data/test/test_cine_passion.rb +86 -22
- metadata +5 -6
- data/lib/cine_passion_config.rb.sample +0 -2
data/Manifest.txt
CHANGED
data/README.txt
CHANGED
@@ -22,7 +22,13 @@ http://passion-xbmc.org/scraper-cine-passion-support-francais/
|
|
22
22
|
|
23
23
|
== SYNOPSIS:
|
24
24
|
|
25
|
-
|
25
|
+
require 'cine_passion'
|
26
|
+
@scrap = CinePassion.new("my-real-api-key")
|
27
|
+
@scrap.MovieSearch("Home")
|
28
|
+
#=> Return you a movies list
|
29
|
+
@scrap.movies_info
|
30
|
+
#=> All info are here
|
31
|
+
|
26
32
|
|
27
33
|
== REQUIREMENTS:
|
28
34
|
|
@@ -31,14 +37,11 @@ In my project, you can't find Cine Passion API Key.
|
|
31
37
|
In fact you need a key your own side, you can request one here :
|
32
38
|
http://passion-xbmc.org/demande-clef-api-api-key-request/
|
33
39
|
|
34
|
-
See INSTALL
|
40
|
+
See INSTALL & SYNOPSIS
|
35
41
|
|
36
42
|
== INSTALL:
|
37
43
|
|
38
44
|
* gem install cine-passion
|
39
|
-
* cd /lib/to/gem/cine-passion
|
40
|
-
* cp lib/cine_passion_config.rb.sample lib/cine_passion_config.rb
|
41
|
-
* edit lib/cine_passion_config.rb # And replace APIKEY
|
42
45
|
|
43
46
|
== DEVELOPERS:
|
44
47
|
|
data/lib/cine_passion.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
1
2
|
# This class can be used to extract data from Cine Passion scraper
|
2
3
|
#
|
3
4
|
# = API Key
|
@@ -16,75 +17,112 @@ require 'net/http'
|
|
16
17
|
require 'rexml/document'
|
17
18
|
include REXML
|
18
19
|
|
19
|
-
begin
|
20
|
-
require 'cine_passion_config'
|
21
|
-
rescue LoadError => load_error
|
22
|
-
# Define default variables
|
23
|
-
SITEURL="http://scraper-cine-passion-demo.ledez.net"
|
24
|
-
APIKEY="fake-7945cb-fake"
|
25
|
-
|
26
|
-
puts '*'*50
|
27
|
-
puts File.join(File.dirname(__FILE__), 'cine_passion_config.rb') + " is missing"
|
28
|
-
puts " Please see README to create it"
|
29
|
-
puts "currently I use theres values :"
|
30
|
-
puts "SITEURL: #{SITEURL}"
|
31
|
-
puts "APIKEY; #{APIKEY}"
|
32
|
-
puts '*'*50
|
33
|
-
end
|
34
|
-
|
35
|
-
if not (defined? SITEURL || (not SITEURL.nil?))
|
36
|
-
raise 'Need to define SITEURL'
|
37
|
-
end
|
38
|
-
|
39
|
-
if not (defined? APIKEY || (not APIKEY.nil?))
|
40
|
-
raise 'Need to define APIKEY'
|
41
|
-
end
|
42
|
-
|
43
20
|
class CinePassion
|
44
|
-
attr_reader :xml_data, :movies_info, :result_nb, :status, :quota
|
45
|
-
|
46
|
-
VERSION = '0.
|
47
|
-
|
21
|
+
attr_reader :xml_data, :movies_info, :result_nb, :status, :quota, :apikey, :siteurl, :proxyinfo, :lang
|
22
|
+
|
23
|
+
VERSION = '0.8.0'
|
24
|
+
|
48
25
|
# This class does not require parameters
|
49
26
|
# First action is reset object
|
50
|
-
def initialize
|
27
|
+
def initialize(apikey=nil, proxy=nil)
|
28
|
+
if apikey.nil?
|
29
|
+
@apikey = "fake-7945cb-fake"
|
30
|
+
defineOtherSiteURL("http://scraper-cine-passion-demo.ledez.net")
|
31
|
+
puts '*'*50
|
32
|
+
puts "I need a apikey to get real values"
|
33
|
+
puts " Please see README to create it"
|
34
|
+
puts "currently I use theres values :"
|
35
|
+
puts "@siteurl: #{@siteurl}"
|
36
|
+
puts "@apikey; #{@apikey}"
|
37
|
+
puts '*'*50
|
38
|
+
else
|
39
|
+
@apikey = apikey
|
40
|
+
defineOtherSiteURL("http://passion-xbmc.org")
|
41
|
+
end
|
42
|
+
|
43
|
+
@proxy_host = @proxy_port = @proxy_user = @proxy_password = nil
|
44
|
+
if (ENV['http_proxy'] || proxy)
|
45
|
+
uri=URI.parse(ENV['http_proxy']) if proxy.nil?
|
46
|
+
uri=URI.parse(proxy) if ENV['http_proxy'].nil?
|
47
|
+
@proxy_host = uri.host
|
48
|
+
@proxy_port = uri.port
|
49
|
+
@proxy_user, @proxy_password = uri.userinfo.split(/:/) if uri.userinfo
|
50
|
+
end
|
51
|
+
@proxyinfo = [@proxy_host, @proxy_port, @proxy_user, @proxy_password]
|
52
|
+
|
53
|
+
self.defineLanguage()
|
51
54
|
self.DataReset()
|
52
55
|
end
|
53
|
-
|
56
|
+
|
57
|
+
# Define other host to scrap
|
58
|
+
# Default http://passion-xbmc.org
|
59
|
+
def defineOtherSiteURL(siteurl=nil)
|
60
|
+
if siteurl.nil?
|
61
|
+
@siteurl = "http://passion-xbmc.org"
|
62
|
+
else
|
63
|
+
@siteurl = siteurl
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
# define a language to scrap
|
68
|
+
# Default en
|
69
|
+
def defineLanguage(lang="en")
|
70
|
+
@lang = lang
|
71
|
+
end
|
72
|
+
|
54
73
|
# Reset object (With empty XML xml_data)
|
55
74
|
def DataReset()
|
56
75
|
@xml_data = ""
|
57
76
|
end
|
58
|
-
|
77
|
+
|
59
78
|
# Load XML data from online Cine Passion Scraper
|
60
79
|
# Put movie name in parameter
|
61
|
-
def DataLoadFromSite(
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
url = URI.parse(URI.escape(api_url))
|
68
|
-
res = Net::HTTP.start(url.host, url.port) {|http|
|
69
|
-
http.get(url.path)
|
80
|
+
def DataLoadFromSite(url)
|
81
|
+
conn = Net::HTTP::Proxy(@proxy_host, @proxy_port, @proxy_user, @proxy_password)
|
82
|
+
|
83
|
+
request = URI.parse(URI.escape(url))
|
84
|
+
res = conn.start(request.host, request.port) {|http|
|
85
|
+
http.get(request.path)
|
70
86
|
}
|
71
|
-
|
87
|
+
|
72
88
|
@xml_data = res.body
|
73
89
|
self.ScrapAnalyse()
|
74
90
|
end
|
75
|
-
|
91
|
+
|
92
|
+
# Generate URL For Movie.Search
|
93
|
+
def GenerateURLMovieSearch(search, query="Title", format="XML")
|
94
|
+
"#{@siteurl}/scraper/API/1/Movie.Search/#{query}/#{@lang}/#{format}/#{@apikey}/#{search}"
|
95
|
+
end
|
96
|
+
|
97
|
+
# Generate URL For Movie.GetInfo
|
98
|
+
def GenerateURLMovieGetInfo(search, query="Title", format="XML")
|
99
|
+
"#{@siteurl}/scraper/API/1/Movie.GetInfo/#{query}/#{@lang}/#{format}/#{@apikey}/#{search}"
|
100
|
+
end
|
101
|
+
|
102
|
+
# Execute a MovieSearch on scraper
|
103
|
+
def MovieSearch(search)
|
104
|
+
DataLoadFromSite(GenerateURLMovieSearch(search))
|
105
|
+
@xml_data
|
106
|
+
end
|
107
|
+
|
108
|
+
# Execute a MovieGetInfo on scraper
|
109
|
+
def MovieGetInfo(search)
|
110
|
+
DataLoadFromSite(GenerateURLMovieSearch(search))
|
111
|
+
@xml_data
|
112
|
+
end
|
113
|
+
|
76
114
|
# Load XML data from file
|
77
115
|
# Put filename with full path in parameter
|
78
116
|
def DataLoadFromFile(filename)
|
79
117
|
file = File.new(filename)
|
80
|
-
|
118
|
+
|
81
119
|
@xml_data = file
|
82
120
|
self.ScrapAnalyse()
|
83
121
|
end
|
84
|
-
|
122
|
+
|
85
123
|
# Explore XML data to extract informations
|
86
124
|
# At this time the class get there informations:
|
87
|
-
# * Movie -> See
|
125
|
+
# * Movie -> See ScrapAnalyseOneMovieElement function
|
88
126
|
# * Quota
|
89
127
|
# - authorize
|
90
128
|
# - use
|
@@ -96,16 +134,16 @@ class CinePassion
|
|
96
134
|
@result_nb = 0
|
97
135
|
@quota = {}
|
98
136
|
@movies_info = []
|
99
|
-
|
137
|
+
|
100
138
|
doc = Document.new(@xml_data)
|
101
139
|
root = doc.root
|
102
|
-
|
140
|
+
|
103
141
|
@movies_info = []
|
104
142
|
root.each_element('movie') do |movie|
|
105
|
-
@movies_info.push
|
143
|
+
@movies_info.push ScrapAnalyseOneMovieElement(movie)
|
106
144
|
end
|
107
145
|
@result_nb = @movies_info.count()
|
108
|
-
|
146
|
+
|
109
147
|
if @result_nb == 0
|
110
148
|
@status = 0
|
111
149
|
elsif @result_nb == 1
|
@@ -114,23 +152,23 @@ class CinePassion
|
|
114
152
|
@status = 2
|
115
153
|
end
|
116
154
|
|
117
|
-
quota = root.elements['quota']
|
155
|
+
quota = root.elements['quota']
|
118
156
|
if not quota.nil?
|
119
157
|
@quota['authorize'] = quota.attributes['authorize']
|
120
158
|
@quota['use'] = quota.attributes['use']
|
121
159
|
@quota['reset_date'] = quota.attributes['reset_date']
|
122
160
|
end
|
123
|
-
|
161
|
+
|
124
162
|
@result['quota'] = @quota
|
125
163
|
@result['result_nb'] = @result_nb
|
126
164
|
@result['line'] = @line
|
127
165
|
@result['xml'] = doc.root
|
128
166
|
@result['status'] = @status
|
129
167
|
@result['movies_info'] = @movies_info
|
130
|
-
|
168
|
+
|
131
169
|
return @result
|
132
170
|
end
|
133
|
-
|
171
|
+
|
134
172
|
# * Movie
|
135
173
|
# - id
|
136
174
|
# - id_allocine
|
@@ -144,9 +182,9 @@ class CinePassion
|
|
144
182
|
# - plot
|
145
183
|
# - images
|
146
184
|
# - ratings
|
147
|
-
def
|
185
|
+
def ScrapAnalyseOneMovieElement(oneMovieXML)
|
148
186
|
movie_info = {}
|
149
|
-
|
187
|
+
|
150
188
|
movie_info['id'] = oneMovieXML.elements['id'].text
|
151
189
|
movie_info['id_allocine'] = oneMovieXML.elements['id_allocine'].text
|
152
190
|
movie_info['id_imdb'] = oneMovieXML.elements['id_imdb'].text
|
@@ -157,18 +195,18 @@ class CinePassion
|
|
157
195
|
movie_info['year'] = oneMovieXML.elements['year'].text
|
158
196
|
movie_info['runtime'] = oneMovieXML.elements['runtime'].text
|
159
197
|
movie_info['plot'] = oneMovieXML.elements['plot'].text
|
160
|
-
|
198
|
+
|
161
199
|
movie_info['images'] = {}
|
162
200
|
images = oneMovieXML.elements["images"]
|
163
201
|
if not images.nil?
|
164
202
|
images.each_element("image") do |image|
|
165
203
|
img_id = image.attributes['id']
|
166
204
|
img_size = image.attributes['size']
|
167
|
-
|
205
|
+
|
168
206
|
if not movie_info['images'].has_key? img_id
|
169
207
|
movie_info['images'][img_id] = {}
|
170
208
|
end
|
171
|
-
|
209
|
+
|
172
210
|
movie_info['images'][img_id]['type'] = image.attributes['type']
|
173
211
|
if not movie_info['images'][img_id].has_key? img_size
|
174
212
|
movie_info['images'][img_id][img_size] = {}
|
@@ -178,7 +216,7 @@ class CinePassion
|
|
178
216
|
movie_info['images'][img_id][img_size]['height'] = image.attributes['height']
|
179
217
|
end
|
180
218
|
end
|
181
|
-
|
219
|
+
|
182
220
|
movie_info['ratings'] = {}
|
183
221
|
movie_info['ratings']['cinepassion'] = {}
|
184
222
|
movie_info['ratings']['allocine'] = {}
|
@@ -193,16 +231,26 @@ class CinePassion
|
|
193
231
|
ratings_imdb = ratings.elements["rating[@type='imdb']"]
|
194
232
|
movie_info['ratings']['imdb']['votes'] = ratings_imdb.attributes['votes']
|
195
233
|
movie_info['ratings']['imdb']['value'] = ratings_imdb.text
|
196
|
-
|
234
|
+
|
235
|
+
nfo_base = "#{@siteurl}/scraper/index.php?id=#{movie_info['id']}&Download=1"
|
236
|
+
movie_info['nfo'] = {}
|
237
|
+
movie_info['nfo']['Babylon'] = {}
|
238
|
+
movie_info['nfo']['Camelot'] = {}
|
239
|
+
nfo_babylon = "#{nfo_base}&Version=0"
|
240
|
+
movie_info['nfo']['Babylon']['fr'] = "#{nfo_babylon}&Lang=fr&OK=1"
|
241
|
+
movie_info['nfo']['Babylon']['en'] = "#{nfo_babylon}&Lang=en&OK=1"
|
242
|
+
nfo_camelot = "#{nfo_base}&Version=1"
|
243
|
+
movie_info['nfo']['Camelot']['fr'] = "#{nfo_camelot}&Lang=fr&OK=1"
|
244
|
+
movie_info['nfo']['Camelot']['en'] = "#{nfo_camelot}&Lang=en&OK=1"
|
245
|
+
|
197
246
|
return movie_info
|
198
247
|
end
|
199
|
-
|
200
248
|
|
201
249
|
# Scrap get a filename with garbage information & clean it
|
202
|
-
def
|
250
|
+
def CleanMovieName(search)
|
203
251
|
short_name = search.gsub(/\./, ' ')
|
204
252
|
short_name.gsub!(/ (DVDRip|LiMiTED|REPACK|720p|FRENCH|UNRATED|iNTERNAL|TRUEFRENCH).*$/, '')
|
205
253
|
|
206
|
-
|
254
|
+
short_name
|
207
255
|
end
|
208
256
|
end
|
data/test/test_cine_passion.rb
CHANGED
@@ -1,54 +1,114 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
1
2
|
require 'test/unit'
|
2
3
|
require 'cine_passion'
|
3
4
|
|
4
5
|
# Suite tests of CinePassion scraper binding
|
5
6
|
# Many tests can be launch offline
|
6
7
|
class TestCinePassion < Test::Unit::TestCase
|
7
|
-
|
8
|
+
|
8
9
|
# Test creation of object with right class
|
9
10
|
def test_create_object
|
10
11
|
@test = CinePassion.new
|
11
12
|
assert_not_nil(@test)
|
12
13
|
assert_instance_of(CinePassion, @test)
|
13
14
|
end
|
14
|
-
|
15
|
+
|
16
|
+
# Test ability to define a apikey
|
17
|
+
def test_can_have_apikey
|
18
|
+
@test1 = CinePassion.new()
|
19
|
+
assert_equal(@test1.apikey, "test-api-key")
|
20
|
+
@test2 = CinePassion.new("fake-7945cb-fake")
|
21
|
+
assert_equal(@test2.apikey, "test-api-key")
|
22
|
+
end
|
23
|
+
|
24
|
+
# Test ability to define a server
|
25
|
+
def test_can_change_siteurl
|
26
|
+
@test1 = CinePassion.new()
|
27
|
+
assert_equal(@test1.siteurl, "http://scraper-cine-passion-demo.ledez.net")
|
28
|
+
@test2 = CinePassion.new("a-key")
|
29
|
+
assert_equal(@test2.siteurl, "http://passion-xbmc.org")
|
30
|
+
@test2.defineOtherSiteURL("http://localhost:4567")
|
31
|
+
assert_equal(@test2.siteurl, "http://localhost:4567")
|
32
|
+
@test2.defineOtherSiteURL()
|
33
|
+
assert_equal(@test2.siteurl, "http://passion-xbmc.org")
|
34
|
+
end
|
35
|
+
|
36
|
+
# Test GenerateURLMovieSearch & GenerateURLMovieGetInfo
|
37
|
+
def test_generate_url
|
38
|
+
@test1 = CinePassion.new()
|
39
|
+
assert_equal(@test1.GenerateURLMovieSearch("toto"), "http://scraper-cine-passion-demo.ledez.net/scraper/API/1/Movie.Search/Title/en/XML/fake-7945cb-fake/toto")
|
40
|
+
assert_equal(@test1.GenerateURLMovieGetInfo("toto"), "http://scraper-cine-passion-demo.ledez.net/scraper/API/1/Movie.GetInfo/Title/en/XML/fake-7945cb-fake/toto")
|
41
|
+
end
|
42
|
+
|
43
|
+
# Test ability to define a language for requests
|
44
|
+
def test_can_change_language
|
45
|
+
@test1 = CinePassion.new()
|
46
|
+
assert_equal(@test1.lang, "en")
|
47
|
+
@test1.defineLanguage("fr")
|
48
|
+
assert_equal(@test1.lang, "fr")
|
49
|
+
end
|
50
|
+
|
51
|
+
# Test ability to define a proxy
|
52
|
+
def test_can_have_apikey
|
53
|
+
@test1 = CinePassion.new("test-api-key")
|
54
|
+
assert_equal(@test1.proxyinfo, [nil, nil, nil, nil])
|
55
|
+
|
56
|
+
@test2 = CinePassion.new("test-api-key", "http://127.0.0.1:3128/")
|
57
|
+
assert_equal(@test2.proxyinfo, ["127.0.0.1", 3128, nil, nil])
|
58
|
+
|
59
|
+
@test3 = CinePassion.new("test-api-key", "http://user:pass@127.0.0.1:3128/")
|
60
|
+
assert_equal(@test3.proxyinfo, ["127.0.0.1", 3128, "user", "pass"])
|
61
|
+
end
|
62
|
+
|
15
63
|
# Test ability to load data from xml & reset data
|
16
64
|
def test_data_load_and_reset
|
17
65
|
@test = CinePassion.new
|
18
66
|
assert_equal(@test.xml_data, "")
|
19
|
-
|
67
|
+
|
20
68
|
@test.DataLoadFromFile("test/data/cinepassion-scraper-test-01-one-response.xml")
|
21
69
|
assert_not_equal(@test.xml_data, "")
|
22
|
-
|
70
|
+
|
23
71
|
@test.DataReset()
|
24
72
|
assert_equal(@test.xml_data, "")
|
25
73
|
end
|
26
|
-
|
74
|
+
|
27
75
|
# Test ability to load data from network
|
28
76
|
def test_data_load_from_network
|
29
77
|
@test = CinePassion.new
|
30
|
-
|
31
|
-
@test.
|
78
|
+
|
79
|
+
@test.MovieSearch("Home")
|
80
|
+
assert_not_equal(@test.xml_data, "")
|
81
|
+
@test.DataReset()
|
82
|
+
|
83
|
+
@test.MovieGetInfo("136356")
|
32
84
|
assert_not_equal(@test.xml_data, "")
|
33
85
|
end
|
34
|
-
|
86
|
+
|
35
87
|
# Test if scrap working
|
36
|
-
def
|
88
|
+
def test_clean_moviename_working
|
37
89
|
@test = CinePassion.new
|
38
|
-
|
39
|
-
@test.
|
40
|
-
|
90
|
+
|
91
|
+
assert_equal(@test.CleanMovieName("Home.DVDRip"), "Home")
|
92
|
+
assert_equal(@test.CleanMovieName("Home.LiMiTED"), "Home")
|
93
|
+
assert_equal(@test.CleanMovieName("Home.REPACK"), "Home")
|
94
|
+
assert_equal(@test.CleanMovieName("Home.720p"), "Home")
|
95
|
+
assert_equal(@test.CleanMovieName("Home.FRENCH"), "Home")
|
96
|
+
assert_equal(@test.CleanMovieName("Home.UNRATED"), "Home")
|
97
|
+
assert_equal(@test.CleanMovieName("Home.iNTERNAL"), "Home")
|
98
|
+
assert_equal(@test.CleanMovieName("Home.TRUEFRENCH"), "Home")
|
99
|
+
assert_equal(@test.CleanMovieName("Home.DVDRip.LiMiTED.REPACK.720p.FRENCH.UNRATED.iNTERNAL.TRUEFRENCH"), "Home")
|
100
|
+
assert_equal(@test.CleanMovieName("Home.TRUEFRENCH.iNTERNAL.UNRATED.FRENCH.720p.REPACK.LiMiTED.DVDRip"), "Home")
|
41
101
|
end
|
42
|
-
|
102
|
+
|
43
103
|
# Test if datas was properly extracted
|
44
104
|
def test_xml_load_data
|
45
105
|
@test = CinePassion.new
|
46
|
-
|
106
|
+
|
47
107
|
# Test no response
|
48
108
|
@test.DataLoadFromFile("test/data/cinepassion-scraper-test-00-no-response.xml")
|
49
109
|
assert_not_equal(@test.xml_data, "")
|
50
110
|
assert_equal(@test.result_nb, 0)
|
51
|
-
|
111
|
+
|
52
112
|
# Extract all data in one result
|
53
113
|
@test.DataLoadFromFile("test/data/cinepassion-scraper-test-01-one-response.xml")
|
54
114
|
assert_not_equal(@test.xml_data, "")
|
@@ -63,39 +123,43 @@ class TestCinePassion < Test::Unit::TestCase
|
|
63
123
|
assert_equal(@test.movies_info[0]['year'], "2009")
|
64
124
|
assert_equal(@test.movies_info[0]['runtime'], "90")
|
65
125
|
assert_equal(@test.movies_info[0]['plot'], "Bob Wilton, un journaliste désespéré fait l'heureuse rencontre de Lyn Cassady, un soldat aux pouvoirs paranormaux combattant le terrorisme. Ils se rendent ensemble en Irak ou ils rencontrent Bill Django, le fondateur de l'unité, et Larry Hooper, soldat de l'unité qui dirige une prison.")
|
66
|
-
|
126
|
+
|
67
127
|
assert_equal(@test.movies_info[0]['images']['311335']['type'], "Poster")
|
68
128
|
assert_equal(@test.movies_info[0]['images']['311335']['original']['height'], "2716")
|
69
129
|
assert_equal(@test.movies_info[0]['images']['311335']['original']['width'], "2000")
|
70
130
|
assert_equal(@test.movies_info[0]['images']['311335']['original']['url'], "http://passion-xbmc.org/scraper/Gallery/main/Poster_LesChvresduPentagone-311335.jpg")
|
71
131
|
assert_equal(@test.movies_info[0]['images']['311335']['preview']['url'], "http://passion-xbmc.org/scraper/Gallery/preview/Poster_LesChvresduPentagone-311335.jpg")
|
72
132
|
assert_equal(@test.movies_info[0]['images']['311335']['thumb']['url'], "http://passion-xbmc.org/scraper/Gallery/thumb/Poster_LesChvresduPentagone-311335.jpg")
|
73
|
-
|
133
|
+
|
74
134
|
assert_equal(@test.movies_info[0]['images']['316672']['type'], "Fanart")
|
75
135
|
assert_equal(@test.movies_info[0]['images']['316672']['original']['height'], "1080")
|
76
136
|
assert_equal(@test.movies_info[0]['images']['316672']['original']['width'], "1920")
|
77
137
|
assert_equal(@test.movies_info[0]['images']['316672']['original']['url'], "http://passion-xbmc.org/scraper/Gallery/main/Fanart_LesChvresduPentagone-316672.jpg")
|
78
138
|
assert_equal(@test.movies_info[0]['images']['316672']['preview']['url'], "http://passion-xbmc.org/scraper/Gallery/preview/Fanart_LesChvresduPentagone-316672.jpg")
|
79
139
|
assert_equal(@test.movies_info[0]['images']['316672']['thumb']['url'], "http://passion-xbmc.org/scraper/Gallery/thumb/Fanart_LesChvresduPentagone-316672.jpg")
|
80
|
-
|
140
|
+
|
81
141
|
assert_equal(@test.movies_info[0]['ratings']['cinepassion']['votes'], "1")
|
82
142
|
assert_equal(@test.movies_info[0]['ratings']['cinepassion']['value'], "7")
|
83
143
|
assert_equal(@test.movies_info[0]['ratings']['allocine']['votes'], "1603")
|
84
144
|
assert_equal(@test.movies_info[0]['ratings']['allocine']['value'], "2,5")
|
85
145
|
assert_equal(@test.movies_info[0]['ratings']['imdb']['votes'], "30695")
|
86
146
|
assert_equal(@test.movies_info[0]['ratings']['imdb']['value'], "6,4")
|
87
|
-
|
147
|
+
|
148
|
+
assert_equal(@test.movies_info[0]['nfo']['Babylon']['fr'], "http://scraper-cine-passion-demo.ledez.net/scraper/index.php?id=136356&Download=1&Version=0&Lang=fr&OK=1")
|
149
|
+
assert_equal(@test.movies_info[0]['nfo']['Babylon']['en'], "http://scraper-cine-passion-demo.ledez.net/scraper/index.php?id=136356&Download=1&Version=0&Lang=en&OK=1")
|
150
|
+
assert_equal(@test.movies_info[0]['nfo']['Camelot']['fr'], "http://scraper-cine-passion-demo.ledez.net/scraper/index.php?id=136356&Download=1&Version=1&Lang=fr&OK=1")
|
151
|
+
assert_equal(@test.movies_info[0]['nfo']['Camelot']['en'], "http://scraper-cine-passion-demo.ledez.net/scraper/index.php?id=136356&Download=1&Version=1&Lang=en&OK=1")
|
152
|
+
|
88
153
|
# Quota extraction
|
89
154
|
assert_equal(@test.quota['authorize'], "300")
|
90
155
|
assert_equal(@test.quota['use'], "1")
|
91
156
|
assert_equal(@test.quota['reset_date'], "2010-08-04 12:45:26")
|
92
|
-
|
93
157
|
end
|
94
158
|
|
95
159
|
def test_xml_load_data_multiple_movies
|
96
160
|
@test = CinePassion.new
|
97
161
|
@test.DataLoadFromFile("test/data/cinepassion-scraper-test-02-mutiple-response.xml")
|
98
|
-
|
162
|
+
|
99
163
|
# Quota extraction
|
100
164
|
assert_not_equal(@test.xml_data, "")
|
101
165
|
|
@@ -105,7 +169,7 @@ class TestCinePassion < Test::Unit::TestCase
|
|
105
169
|
assert_equal(@test.movies_info[0]['id_allocine'], "128179")
|
106
170
|
assert_equal(@test.movies_info[0]['id_imdb'], "1014762")
|
107
171
|
assert_equal(@test.movies_info[0]['last_change'], "1279466610")
|
108
|
-
|
172
|
+
|
109
173
|
assert_equal(@test.movies_info[1]['id'], "125081")
|
110
174
|
assert_equal(@test.movies_info[1]['id_allocine'], "125081")
|
111
175
|
assert_equal(@test.movies_info[1]['id_imdb'], "822388")
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cine-passion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 63
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 8
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.8.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Nicolas Ledez
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-09-05 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -66,7 +66,6 @@ files:
|
|
66
66
|
- README.txt
|
67
67
|
- Rakefile
|
68
68
|
- lib/cine_passion.rb
|
69
|
-
- lib/cine_passion_config.rb.sample
|
70
69
|
- test/test_cine_passion.rb
|
71
70
|
- test/data/cinepassion-scraper-test-00-no-response.xml
|
72
71
|
- test/data/cinepassion-scraper-test-01-one-response.xml
|
@@ -81,7 +80,7 @@ licenses: []
|
|
81
80
|
post_install_message: |
|
82
81
|
**************************************************
|
83
82
|
|
84
|
-
Thank you for installing cine-passion-0.
|
83
|
+
Thank you for installing cine-passion-0.8.0
|
85
84
|
|
86
85
|
Please be copy lib/lib/cine_passion_config.rb.sample to lib/cine_passion_config.rb
|
87
86
|
And replace APIKEY with your own.
|