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.
- data/lib/subdl.rb +36 -16
- metadata +84 -92
data/lib/subdl.rb
CHANGED
@@ -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.
|
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
|
-
|
44
|
-
|
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
|
-
|
49
|
-
|
50
|
-
|
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
|
-
|
53
|
-
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
19
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
57
|
none: false
|
67
|
-
requirements:
|
68
|
-
- -
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
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
|
-
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
73
|
none: false
|
81
|
-
requirements:
|
82
|
-
- -
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
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
|
-
|
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
|
-
|
115
|
-
|
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
|
-
|
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
|
-
|