opensubtitles 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/.rspec +1 -0
  4. data/.travis.yml +10 -0
  5. data/Gemfile +3 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +50 -0
  8. data/Rakefile +9 -0
  9. data/bin/getsub +157 -0
  10. data/lib/opensubtitles.rb +21 -0
  11. data/lib/opensubtitles/finder.rb +8 -0
  12. data/lib/opensubtitles/finder/first.rb +13 -0
  13. data/lib/opensubtitles/finder/interactive.rb +21 -0
  14. data/lib/opensubtitles/finder/score.rb +13 -0
  15. data/lib/opensubtitles/language.rb +84 -0
  16. data/lib/opensubtitles/movie.rb +16 -0
  17. data/lib/opensubtitles/movie_file.rb +67 -0
  18. data/lib/opensubtitles/search.rb +9 -0
  19. data/lib/opensubtitles/search/imdb.rb +27 -0
  20. data/lib/opensubtitles/search/movie_hash.rb +21 -0
  21. data/lib/opensubtitles/search/name.rb +28 -0
  22. data/lib/opensubtitles/search/path.rb +20 -0
  23. data/lib/opensubtitles/selector.rb +7 -0
  24. data/lib/opensubtitles/selector/format.rb +17 -0
  25. data/lib/opensubtitles/selector/movie.rb +29 -0
  26. data/lib/opensubtitles/server.rb +70 -0
  27. data/lib/opensubtitles/sub.rb +55 -0
  28. data/lib/opensubtitles/subtitle_finder.rb +30 -0
  29. data/lib/opensubtitles/version.rb +3 -0
  30. data/lib/opensubtitles/xmlrpc_monkey_patch.rb +88 -0
  31. data/opensubtitles.gemspec +26 -0
  32. data/spec/fixtures/http/check_movie_hash.yml +225 -0
  33. data/spec/fixtures/http/get_imdb_movie_details.yml +342 -0
  34. data/spec/fixtures/http/log_in.yml +86 -0
  35. data/spec/fixtures/http/log_out.yml +68 -0
  36. data/spec/fixtures/http/search_imdb.yml +761 -0
  37. data/spec/fixtures/http/search_subtitles_for_himym.yml +1189 -0
  38. data/spec/fixtures/http/search_subtitles_for_the_rock.yml +4124 -0
  39. data/spec/fixtures/http/server_info.yml +492 -0
  40. data/spec/fixtures/somemovie.avi +0 -0
  41. data/spec/opensubtitles/language_spec.rb +57 -0
  42. data/spec/opensubtitles/movie_file_spec.rb +18 -0
  43. data/spec/opensubtitles/server_spec.rb +123 -0
  44. data/spec/opensubtitles/sub_spec.rb +33 -0
  45. data/spec/spec_helper.rb +15 -0
  46. metadata +159 -0
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "opensubtitles/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "opensubtitles"
7
+ s.version = Opensubtitles::VERSION
8
+ s.authors = ["Evandro Jr"]
9
+ s.email = ["evandrojr@gmail.com"]
10
+ s.homepage = %q{http://github.com/evandrojr/opensubtitles}
11
+ s.summary = %q{Ruby library to access Opensubtitles services like OpenSubtitles.org}
12
+
13
+ s.rubyforge_project = "opensubtitles"
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ s.require_paths = ["lib"]
19
+ s.license = 'MIT'
20
+
21
+ s.add_development_dependency 'rake'
22
+ s.add_development_dependency 'rspec'
23
+ s.add_development_dependency 'rspec-its'
24
+ s.add_development_dependency 'webmock', '~> 1.8.11'
25
+ s.add_development_dependency 'vcr', '~> 2.3.0'
26
+ end
@@ -0,0 +1,225 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: http://api.opensubtitles.org/xml-rpc
6
+ body:
7
+ string: |
8
+ <?xml version="1.0" ?><methodCall><methodName>LogIn</methodName><params><param><value><string></string></value></param><param><value><string></string></value></param><param><value><string>eng</string></value></param><param><value><string>OS Test User Agent</string></value></param></params></methodCall>
9
+
10
+ headers:
11
+ Accept:
12
+ - "*/*"
13
+ Cookie:
14
+ - PHPSESSID=qtqkphpa0us78eikqtdtg4jic7
15
+ Content-Length:
16
+ - "304"
17
+ User-Agent:
18
+ - XMLRPC::Client (Ruby 1.8.7)
19
+ Content-Type:
20
+ - text/xml; charset=utf-8
21
+ Connection:
22
+ - keep-alive
23
+ response:
24
+ status:
25
+ code: 200
26
+ message: OK
27
+ headers:
28
+ X-Cache:
29
+ - MISS
30
+ Age:
31
+ - "0"
32
+ X-Cache-Backend:
33
+ - www
34
+ Cache-Control:
35
+ - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
36
+ Pragma:
37
+ - no-cache
38
+ Expires:
39
+ - Thu, 19 Nov 1981 08:52:00 GMT
40
+ Content-Length:
41
+ - "504"
42
+ Content-Type:
43
+ - text/xml
44
+ Connection:
45
+ - keep-alive
46
+ Accept-Ranges:
47
+ - bytes
48
+ Date:
49
+ - Sun, 04 Nov 2012 17:11:36 GMT
50
+ body:
51
+ string: |
52
+ <?xml version="1.0" encoding="utf-8"?>
53
+ <methodResponse>
54
+ <params>
55
+ <param>
56
+ <value>
57
+ <struct>
58
+ <member>
59
+ <name>token</name>
60
+ <value>
61
+ <string>qtqkphpa0us78eikqtdtg4jic7</string>
62
+ </value>
63
+ </member>
64
+ <member>
65
+ <name>status</name>
66
+ <value>
67
+ <string>200 OK</string>
68
+ </value>
69
+ </member>
70
+ <member>
71
+ <name>seconds</name>
72
+ <value>
73
+ <double>0.009</double>
74
+ </value>
75
+ </member>
76
+ </struct>
77
+ </value>
78
+ </param>
79
+ </params>
80
+ </methodResponse>
81
+
82
+ http_version:
83
+ recorded_at: Sun, 04 Nov 2012 17:11:36 GMT
84
+ - request:
85
+ method: post
86
+ uri: http://api.opensubtitles.org/xml-rpc
87
+ body:
88
+ string: |
89
+ <?xml version="1.0" ?><methodCall><methodName>CheckMovieHash</methodName><params><param><value><string>qtqkphpa0us78eikqtdtg4jic7</string></value></param><param><value><array><data><value><string>37d0c7d0cfcbe280</string></value></data></array></value></param></params></methodCall>
90
+
91
+ headers:
92
+ Accept:
93
+ - "*/*"
94
+ Cookie:
95
+ - PHPSESSID=qtqkphpa0us78eikqtdtg4jic7
96
+ Content-Length:
97
+ - "283"
98
+ User-Agent:
99
+ - XMLRPC::Client (Ruby 1.8.7)
100
+ Content-Type:
101
+ - text/xml; charset=utf-8
102
+ Connection:
103
+ - keep-alive
104
+ response:
105
+ status:
106
+ code: 200
107
+ message: OK
108
+ headers:
109
+ X-Cache:
110
+ - MISS
111
+ Age:
112
+ - "0"
113
+ X-Cache-Backend:
114
+ - www
115
+ Cache-Control:
116
+ - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
117
+ Set-Cookie:
118
+ - PHPSESSID=qtqkphpa0us78eikqtdtg4jic7; path=/
119
+ Pragma:
120
+ - no-cache
121
+ Expires:
122
+ - Thu, 19 Nov 1981 08:52:00 GMT
123
+ Content-Length:
124
+ - "1800"
125
+ Content-Type:
126
+ - text/xml
127
+ Connection:
128
+ - keep-alive
129
+ Accept-Ranges:
130
+ - bytes
131
+ Date:
132
+ - Sun, 04 Nov 2012 17:11:36 GMT
133
+ body:
134
+ string: |
135
+ <?xml version="1.0" encoding="utf-8"?>
136
+ <methodResponse>
137
+ <params>
138
+ <param>
139
+ <value>
140
+ <struct>
141
+ <member>
142
+ <name>status</name>
143
+ <value>
144
+ <string>200 OK</string>
145
+ </value>
146
+ </member>
147
+ <member>
148
+ <name>data</name>
149
+ <value>
150
+ <struct>
151
+ <member>
152
+ <name>37d0c7d0cfcbe280</name>
153
+ <value>
154
+ <struct>
155
+ <member>
156
+ <name>MovieHash</name>
157
+ <value>
158
+ <string>37d0c7d0cfcbe280</string>
159
+ </value>
160
+ </member>
161
+ <member>
162
+ <name>MovieImdbID</name>
163
+ <value>
164
+ <string>0117500</string>
165
+ </value>
166
+ </member>
167
+ <member>
168
+ <name>MovieName</name>
169
+ <value>
170
+ <string>The Rock</string>
171
+ </value>
172
+ </member>
173
+ <member>
174
+ <name>MovieYear</name>
175
+ <value>
176
+ <string>1996</string>
177
+ </value>
178
+ </member>
179
+ <member>
180
+ <name>MovieKind</name>
181
+ <value>
182
+ <string>movie</string>
183
+ </value>
184
+ </member>
185
+ <member>
186
+ <name>SeriesSeason</name>
187
+ <value>
188
+ <string>0</string>
189
+ </value>
190
+ </member>
191
+ <member>
192
+ <name>SeriesEpisode</name>
193
+ <value>
194
+ <string>0</string>
195
+ </value>
196
+ </member>
197
+ </struct>
198
+ </value>
199
+ </member>
200
+ </struct>
201
+ </value>
202
+ </member>
203
+ <member>
204
+ <name>not_processed</name>
205
+ <value>
206
+ <array>
207
+ <data/>
208
+ </array>
209
+ </value>
210
+ </member>
211
+ <member>
212
+ <name>seconds</name>
213
+ <value>
214
+ <double>0.016</double>
215
+ </value>
216
+ </member>
217
+ </struct>
218
+ </value>
219
+ </param>
220
+ </params>
221
+ </methodResponse>
222
+
223
+ http_version:
224
+ recorded_at: Sun, 04 Nov 2012 17:11:36 GMT
225
+ recorded_with: VCR 2.3.0
@@ -0,0 +1,342 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: http://api.opensubtitles.org/xml-rpc
6
+ body:
7
+ string: |
8
+ <?xml version="1.0" ?><methodCall><methodName>GetIMDBMovieDetails</methodName><params><param><value><string>qtqkphpa0us78eikqtdtg4jic7</string></value></param><param><value><string>0176415</string></value></param></params></methodCall>
9
+
10
+ headers:
11
+ Accept:
12
+ - "*/*"
13
+ Cookie:
14
+ - PHPSESSID=qtqkphpa0us78eikqtdtg4jic7
15
+ Content-Length:
16
+ - "236"
17
+ User-Agent:
18
+ - XMLRPC::Client (Ruby 1.8.7)
19
+ Content-Type:
20
+ - text/xml; charset=utf-8
21
+ Connection:
22
+ - keep-alive
23
+ response:
24
+ status:
25
+ code: 200
26
+ message: OK
27
+ headers:
28
+ X-Cache:
29
+ - MISS
30
+ Age:
31
+ - "0"
32
+ X-Cache-Backend:
33
+ - www
34
+ Cache-Control:
35
+ - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
36
+ Set-Cookie:
37
+ - PHPSESSID=qtqkphpa0us78eikqtdtg4jic7; path=/
38
+ Pragma:
39
+ - no-cache
40
+ Expires:
41
+ - Thu, 19 Nov 1981 08:52:00 GMT
42
+ Content-Length:
43
+ - "6866"
44
+ Content-Type:
45
+ - text/xml
46
+ Connection:
47
+ - keep-alive
48
+ Accept-Ranges:
49
+ - bytes
50
+ Date:
51
+ - Sun, 04 Nov 2012 17:11:59 GMT
52
+ body:
53
+ string: |
54
+ <?xml version="1.0" encoding="utf-8"?>
55
+ <methodResponse>
56
+ <params>
57
+ <param>
58
+ <value>
59
+ <struct>
60
+ <member>
61
+ <name>status</name>
62
+ <value>
63
+ <string>200 OK</string>
64
+ </value>
65
+ </member>
66
+ <member>
67
+ <name>data</name>
68
+ <value>
69
+ <struct>
70
+ <member>
71
+ <name>cast</name>
72
+ <value>
73
+ <struct>
74
+ <member>
75
+ <name>_0273178</name>
76
+ <value>
77
+ <string>Fernando Fern&#195;&#161;n G&#195;&#179;mez</string>
78
+ </value>
79
+ </member>
80
+ <member>
81
+ <name>_0022264</name>
82
+ <value>
83
+ <string>Rafael Alonso</string>
84
+ </value>
85
+ </member>
86
+ <member>
87
+ <name>_0347201</name>
88
+ <value>
89
+ <string>Cayetana Guill&#195;&#169;n Cuervo</string>
90
+ </value>
91
+ </member>
92
+ <member>
93
+ <name>_0328020</name>
94
+ <value>
95
+ <string>Agust&#195;&#173;n Gonz&#195;&#161;lez</string>
96
+ </value>
97
+ </member>
98
+ <member>
99
+ <name>_0190285</name>
100
+ <value>
101
+ <string>Cristina Cruz</string>
102
+ </value>
103
+ </member>
104
+ <member>
105
+ <name>_0747510</name>
106
+ <value>
107
+ <string>Alicia Rozas</string>
108
+ </value>
109
+ </member>
110
+ <member>
111
+ <name>_0347218</name>
112
+ <value>
113
+ <string>Fernando Guill&#195;&#169;n</string>
114
+ </value>
115
+ </member>
116
+ <member>
117
+ <name>_0685037</name>
118
+ <value>
119
+ <string>Francisco Piquer</string>
120
+ </value>
121
+ </member>
122
+ <member>
123
+ <name>_0557456</name>
124
+ <value>
125
+ <string>Mar&#195;&#173;a Massip</string>
126
+ </value>
127
+ </member>
128
+ <member>
129
+ <name>_0137138</name>
130
+ <value>
131
+ <string>Jos&#195;&#169; Caride</string>
132
+ </value>
133
+ </member>
134
+ <member>
135
+ <name>_0019330</name>
136
+ <value>
137
+ <string>Francisco Algora</string>
138
+ </value>
139
+ </member>
140
+ <member>
141
+ <name>_0169358</name>
142
+ <value>
143
+ <string>Emma Cohen</string>
144
+ </value>
145
+ </member>
146
+ <member>
147
+ <name>_0130703</name>
148
+ <value>
149
+ <string>Juan Calot</string>
150
+ </value>
151
+ </member>
152
+ <member>
153
+ <name>_0350881</name>
154
+ <value>
155
+ <string>Concha G&#195;&#179;mez Conde</string>
156
+ </value>
157
+ </member>
158
+ <member>
159
+ <name>_0736047</name>
160
+ <value>
161
+ <string>Nuria Rodr&#195;&#173;guez</string>
162
+ </value>
163
+ </member>
164
+ </struct>
165
+ </value>
166
+ </member>
167
+ <member>
168
+ <name>writers</name>
169
+ <value>
170
+ <struct>
171
+ <member>
172
+ <name>_0305054</name>
173
+ <value>
174
+ <string>Jos&#195;&#169; Luis Garci</string>
175
+ </value>
176
+ </member>
177
+ <member>
178
+ <name>_0701918</name>
179
+ <value>
180
+ <string>Benito P&#195;&#169;rez Gald&#195;&#179;s</string>
181
+ </value>
182
+ </member>
183
+ </struct>
184
+ </value>
185
+ </member>
186
+ <member>
187
+ <name>rating</name>
188
+ <value>
189
+ <string>7.4</string>
190
+ </value>
191
+ </member>
192
+ <member>
193
+ <name>kind</name>
194
+ <value>
195
+ <string>movie</string>
196
+ </value>
197
+ </member>
198
+ <member>
199
+ <name>cover</name>
200
+ <value>
201
+ <string>http://ia.media-imdb.com/images/M/MV5BMTkwNzIxMTgzMF5BMl5BanBnXkFtZTYwOTkyMTA5._V1._SY317_CR5,0,214,317_.jpg</string>
202
+ </value>
203
+ </member>
204
+ <member>
205
+ <name>awards</name>
206
+ <value>
207
+ <array>
208
+ <data>
209
+ <value>
210
+ <string>Nominated for Oscar. Another 9 wins &#38; 17 nominations</string>
211
+ </value>
212
+ </data>
213
+ </array>
214
+ </value>
215
+ </member>
216
+ <member>
217
+ <name>genres</name>
218
+ <value>
219
+ <array>
220
+ <data>
221
+ <value>
222
+ <string>Drama</string>
223
+ </value>
224
+ </data>
225
+ </array>
226
+ </value>
227
+ </member>
228
+ <member>
229
+ <name>id</name>
230
+ <value>
231
+ <string>0176415</string>
232
+ </value>
233
+ </member>
234
+ <member>
235
+ <name>votes</name>
236
+ <value>
237
+ <string>1056</string>
238
+ </value>
239
+ </member>
240
+ <member>
241
+ <name>country</name>
242
+ <value>
243
+ <array>
244
+ <data>
245
+ <value>
246
+ <string>Spain</string>
247
+ </value>
248
+ </data>
249
+ </array>
250
+ </value>
251
+ </member>
252
+ <member>
253
+ <name>language</name>
254
+ <value>
255
+ <array>
256
+ <data>
257
+ <value>
258
+ <string>Spanish</string>
259
+ </value>
260
+ </data>
261
+ </array>
262
+ </value>
263
+ </member>
264
+ <member>
265
+ <name>directors</name>
266
+ <value>
267
+ <struct>
268
+ <member>
269
+ <name>_0305054</name>
270
+ <value>
271
+ <string>Jos&#195;&#169; Luis Garci</string>
272
+ </value>
273
+ </member>
274
+ </struct>
275
+ </value>
276
+ </member>
277
+ <member>
278
+ <name>duration</name>
279
+ <value>
280
+ <string>151 min</string>
281
+ </value>
282
+ </member>
283
+ <member>
284
+ <name>plot</name>
285
+ <value>
286
+ <string>After his son dies, an elderly man comes back to Spain from the US and hopes to find out which of his granddaughters is true, and which one is bastard.</string>
287
+ </value>
288
+ </member>
289
+ <member>
290
+ <name>title</name>
291
+ <value>
292
+ <string>El abuelo</string>
293
+ </value>
294
+ </member>
295
+ <member>
296
+ <name>aka</name>
297
+ <value>
298
+ <array>
299
+ <data>
300
+ <value>
301
+ <string>The Grandfather (Canada (English title) / International (English title) / USA)</string>
302
+ </value>
303
+ <value>
304
+ <string>A nagyapa (Hungary (imdb display title))</string>
305
+ </value>
306
+ <value>
307
+ <string>Dziadek (Poland)</string>
308
+ </value>
309
+ </data>
310
+ </array>
311
+ </value>
312
+ </member>
313
+ <member>
314
+ <name>year</name>
315
+ <value>
316
+ <string>1998</string>
317
+ </value>
318
+ </member>
319
+ <member>
320
+ <name>request_from</name>
321
+ <value>
322
+ <string>cache_redis</string>
323
+ </value>
324
+ </member>
325
+ </struct>
326
+ </value>
327
+ </member>
328
+ <member>
329
+ <name>seconds</name>
330
+ <value>
331
+ <double>0.005</double>
332
+ </value>
333
+ </member>
334
+ </struct>
335
+ </value>
336
+ </param>
337
+ </params>
338
+ </methodResponse>
339
+
340
+ http_version:
341
+ recorded_at: Sun, 04 Nov 2012 17:12:00 GMT
342
+ recorded_with: VCR 2.3.0