subdl 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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
-