Module: Peerflixrb::YifySubtitles
- Defined in:
- lib/peerflixrb/yify.rb
Constant Summary collapse
- API_URL =
'http://api.yifysubtitles.com/subs/'.freeze
- BASE_URL =
'http://www.yifysubtitles.com'.freeze
Class Method Summary collapse
- .download(imdb_id, language = 'english') ⇒ Object
- .download_subtitles(url) ⇒ Object
- .extract_zip(zip_body) ⇒ Object
-
.get_subtitles_url(imdb_id, language) ⇒ Object
Helper methods (private).
Class Method Details
.download(imdb_id, language = 'english') ⇒ Object
9 10 11 12 13 14 15 |
# File 'lib/peerflixrb/yify.rb', line 9 def self.download(imdb_id, language = 'english') url = get_subtitles_url(imdb_id, language) return if url.nil? zip = download_subtitles(url) extract_zip(zip) end |
.download_subtitles(url) ⇒ Object
26 27 28 |
# File 'lib/peerflixrb/yify.rb', line 26 def self.download_subtitles(url) HTTParty.get(url).body end |
.extract_zip(zip_body) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/peerflixrb/yify.rb', line 30 def self.extract_zip(zip_body) sub_file = nil Zip::InputStream.open(StringIO.new(zip_body)) do |io| while (entry = io.get_next_entry) # Don't extract if not a subtitle file next unless entry.name =~ /\.(srt|sub|ass)\z/ sub_file = entry.name open(sub_file, 'w') do |f| f << io.read end break # We found a subtitle file end end # return subtitle filename sub_file end |
.get_subtitles_url(imdb_id, language) ⇒ Object
Helper methods (private)
18 19 20 21 22 23 24 |
# File 'lib/peerflixrb/yify.rb', line 18 def self.get_subtitles_url(imdb_id, language) results = HTTParty.get(API_URL + imdb_id) if results['success'] && results['subtitles'] > 0 BASE_URL + results['subs'][imdb_id][language][0]['url'] end end |