subdl 0.0.3 → 0.0.4

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.
Files changed (2) hide show
  1. data/lib/subdl.rb +36 -16
  2. metadata +84 -92
@@ -4,6 +4,7 @@ require 'json'
4
4
  require 'zipruby'
5
5
 
6
6
  class Crawler
7
+
7
8
  def initialize itasa
8
9
  @itasa = itasa
9
10
  end
@@ -11,13 +12,25 @@ class Crawler
11
12
  def download_sub_for path
12
13
  movie_file = MovieFile.new(path)
13
14
  @itasa.each_id movie_file.search_term do |id, showname|
14
- @itasa.unpack_subtitle_to id, movie_file.srt_file
15
+ @itasa.download_zip id do |zip_contents|
16
+ unpack_subtitle_to zip_contents, movie_file
17
+ end
15
18
  end
16
19
  end
20
+
21
+ def unpack_subtitle_to zip_contents, movie_file
22
+ Zip::Archive.open_buffer(zip_contents) do |archive|
23
+ archive.each do |entry|
24
+ movie_file.add_subtitle entry.read
25
+ end
26
+ end
27
+ end
28
+
17
29
  end
18
30
 
19
31
  class MovieFile
20
32
  attr_reader :episode, :season, :show
33
+ attr_writer :fs
21
34
  def initialize filename
22
35
  @filename = filename
23
36
  text = File.basename filename
@@ -28,6 +41,7 @@ class MovieFile
28
41
  @season = remove_leading_zeros m[2]
29
42
  @episode = remove_leading_zeros m[3]
30
43
  end
44
+ @fs = FileSystem
31
45
  end
32
46
 
33
47
  def remove_year_from text
@@ -37,20 +51,31 @@ class MovieFile
37
51
  def remove_leading_zeros text
38
52
  text.gsub /^0*/, ''
39
53
  end
54
+
40
55
  def search_term
41
56
  "%s %dx%02d" % [show, season, episode]
42
57
  end
43
- def srt_file
44
- WritableFile.new "#{@filename}.itasa.srt"
58
+
59
+ def add_subtitle contents
60
+ srt_filename = @filename.gsub /.mp4$/, ''
61
+ srt_filename += ".itasa#{next_distinguisher}.srt"
62
+ @fs.save_file srt_filename, contents
45
63
  end
46
- end
47
64
 
48
- class WritableFile
49
- def initialize path
50
- @path = path
65
+ def next_distinguisher
66
+ if @subs_added
67
+ distinguisher = ".#{@subs_added}"
68
+ else
69
+ distinguisher = ''
70
+ end
71
+ @subs_added = @subs_added.to_i + 1
72
+ return distinguisher
51
73
  end
52
- def save contents
53
- File.open @path, 'w' do |f|
74
+ end
75
+
76
+ class FileSystem
77
+ def self.save_file filename, contents
78
+ File.open filename, 'w' do |f|
54
79
  f.write contents
55
80
  end
56
81
  end
@@ -87,17 +112,12 @@ class Itasa
87
112
  nil
88
113
  end
89
114
 
90
- def unpack_subtitle_to id, dest
115
+ def download_zip id
91
116
  url = "http://#{host}/index.php?option=com_remository&Itemid=6&func=fileinfo&id=#{id}"
92
117
  page = @agent.get url
93
118
  download_link = page.search("//a[img[contains(@src,'download2.gif')]]").first
94
119
  zipped_subtitle = @agent.get download_link[:href]
95
- zip_contents = zipped_subtitle.body
96
- Zip::Archive.open_buffer(zip_contents) do |archive|
97
- archive.each do |entry|
98
- dest.save entry.read
99
- end
100
- end
120
+ yield zipped_subtitle.body
101
121
  end
102
122
 
103
123
  def host
metadata CHANGED
@@ -1,135 +1,127 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: subdl
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 3
10
- version: 0.0.3
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Andrea Francia
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2013-03-14 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-03-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: mechanize
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: zipruby
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: zipruby
32
+ requirement: !ruby/object:Gem::Requirement
38
33
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
46
38
  type: :runtime
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: json
50
39
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: json
48
+ requirement: !ruby/object:Gem::Requirement
52
49
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
60
54
  type: :runtime
61
- version_requirements: *id003
62
- - !ruby/object:Gem::Dependency
63
- name: rspec
64
55
  prerelease: false
65
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
66
57
  none: false
67
- requirements:
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- hash: 3
71
- segments:
72
- - 0
73
- version: "0"
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
74
70
  type: :development
75
- version_requirements: *id004
76
- - !ruby/object:Gem::Dependency
77
- name: rake
78
71
  prerelease: false
79
- requirement: &id005 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
80
73
  none: false
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- hash: 3
85
- segments:
86
- - 0
87
- version: "0"
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rake
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
88
86
  type: :development
89
- version_requirements: *id005
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
90
94
  description: A simple hello world gem
91
95
  email: andrea@andreafrancia.it
92
- executables:
96
+ executables:
93
97
  - subdl
94
98
  extensions: []
95
-
96
99
  extra_rdoc_files: []
97
-
98
- files:
100
+ files:
99
101
  - lib/subdl.rb
100
102
  - bin/subdl
101
103
  homepage: https://github.com/andreafrancia/subdl
102
104
  licenses: []
103
-
104
105
  post_install_message:
105
106
  rdoc_options: []
106
-
107
- require_paths:
107
+ require_paths:
108
108
  - lib
109
- required_ruby_version: !ruby/object:Gem::Requirement
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
110
  none: false
111
- requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- hash: 3
115
- segments:
116
- - 0
117
- version: "0"
118
- required_rubygems_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ! '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
119
116
  none: false
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- hash: 3
124
- segments:
125
- - 0
126
- version: "0"
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
127
121
  requirements: []
128
-
129
122
  rubyforge_project:
130
123
  rubygems_version: 1.8.25
131
124
  signing_key:
132
125
  specification_version: 3
133
126
  summary: Download subtitles for your favorite show.
134
127
  test_files: []
135
-