ero_getter 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.0
1
+ 1.3.0
data/ero_getter.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "ero_getter"
8
- s.version = "1.2.0"
8
+ s.version = "1.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["masarakki"]
12
- s.date = "2012-06-01"
12
+ s.date = "2012-06-02"
13
13
  s.description = "ero getter"
14
14
  s.email = "masaki@hisme.net"
15
15
  s.extra_rdoc_files = [
@@ -28,21 +28,27 @@ Gem::Specification.new do |s|
28
28
  "Rakefile",
29
29
  "VERSION",
30
30
  "ero_getter.gemspec",
31
+ "lib/downloader/gazou_sokuhou.rb",
31
32
  "lib/downloader/nijigazou_sokuhou.rb",
32
33
  "lib/downloader/pm_style.rb",
34
+ "lib/downloader/wakuteka_sokuhou.rb",
33
35
  "lib/ero_getter.rb",
34
36
  "lib/ero_getter/base.rb",
35
37
  "lib/ero_getter/utils.rb",
38
+ "spec/downloader/gazou_sokuhou_spec.rb",
36
39
  "spec/downloader/nijigazou_sokuhou_spec.rb",
37
40
  "spec/downloader/pm_style_spec.rb",
41
+ "spec/downloader/wakuteka_sokuhou_spec.rb",
38
42
  "spec/ero_getter/base_spec.rb",
39
43
  "spec/ero_getter_spec.rb",
44
+ "spec/samples/gazou_sokuhou/sample.html",
40
45
  "spec/samples/nijigazou_sokuhou/first.html",
41
46
  "spec/samples/nijigazou_sokuhou/global_last.html",
42
47
  "spec/samples/nijigazou_sokuhou/last.html",
43
48
  "spec/samples/nijigazou_sokuhou/middle.html",
44
49
  "spec/samples/pm_style/test.html",
45
50
  "spec/samples/sample.html",
51
+ "spec/samples/wakuteka_sokuhou/sample.html",
46
52
  "spec/spec_helper.rb"
47
53
  ]
48
54
  s.homepage = "http://github.com/masarakki/ero_getter"
@@ -0,0 +1,21 @@
1
+ # -*- coding: utf-8 -*-
2
+ class GazouSokuhou < EroGetter::Base
3
+
4
+ name 'がぞー速報'
5
+ url %r{http://stalker.livedoor.biz/archives/\d+.html}
6
+
7
+ target "img.pict" do |path|
8
+ if path.parent.name == "a" && path.parent[:href] =~ /jpe?g|gif|png$/
9
+ path.parent[:href]
10
+ else
11
+ path[:src]
12
+ end
13
+ end
14
+
15
+ sub_directory do
16
+ url.match(/(\d+).html/)[1]
17
+ end
18
+
19
+ filename { |attr| "%04d%s" % [attr[:index], attr[:ext]] }
20
+
21
+ end
@@ -0,0 +1,17 @@
1
+ # -*- coding: utf-8 -*-
2
+ class WakutekaSokuhou < EroGetter::Base
3
+
4
+ name 'わくてか速報'
5
+ url %r{http://blog.livedoor.jp/wakusoku/archives/(\d+).html}
6
+
7
+ target ".article-body-inner a > img" do |path|
8
+ path.parent[:href] if path.parent[:href] =~ /jpe?g|gif|png$/
9
+ end
10
+
11
+ sub_directory do
12
+ url.match(/(\d+)\.html/)[1]
13
+ end
14
+
15
+ filename {|attr| "%04d%s" % [attr[:index], attr[:ext]] }
16
+
17
+ end
@@ -44,11 +44,11 @@ class EroGetter::Base
44
44
  end
45
45
 
46
46
  def run
47
- targets.each do |target_url|
47
+ targets.each_with_index do |target_url, index|
48
48
  if target_url =~ /.*\.zip$/
49
- save_zip(target_url)
49
+ save_zip(target_url, index)
50
50
  else
51
- save_image(target_url)
51
+ save_image(target_url, index)
52
52
  end
53
53
  end
54
54
  self.class.new(self.prev, :prev).run if run_prev?
@@ -61,16 +61,16 @@ class EroGetter::Base
61
61
  response
62
62
  end
63
63
 
64
- def save_image(target_url)
65
- filename = File.basename(target_url)
64
+ def save_image(target_url, index)
65
+ _filename = filename(File.basename(target_url), index)
66
66
  response = get_target(target_url)
67
- File.open(File.join(directory, filename), "wb") {|f| f.write response.body }
67
+ File.open(File.join(directory, _filename), "wb") {|f| f.write response.body }
68
68
  end
69
69
 
70
- def save_zip(target_url)
70
+ def save_zip(target_url, index)
71
71
  response = get_target(target_url)
72
- unzip(response.body).each do |filename, data|
73
- File.open(File.join(directory, filename), "wb") {|f| f.write data }
72
+ unzip(response.body).each do |_filename, data|
73
+ File.open(File.join(directory, _filename), "wb") {|f| f.write data }
74
74
  end
75
75
  end
76
76
 
@@ -135,6 +135,12 @@ class EroGetter::Base
135
135
  end
136
136
  end
137
137
  end
138
+
139
+ def filename(&block)
140
+ define_method(:_filename) do |attr|
141
+ yield(attr)
142
+ end
143
+ end
138
144
  end
139
145
 
140
146
  private
@@ -145,4 +151,12 @@ class EroGetter::Base
145
151
  def run_prev?
146
152
  direction != :next && respond_to?(:prev) && self.prev != nil
147
153
  end
154
+
155
+ def filename(basename, index)
156
+ if respond_to?(:_filename)
157
+ _filename(index: index, basename: basename, ext: File.extname(basename))
158
+ else
159
+ basename
160
+ end
161
+ end
148
162
  end
@@ -0,0 +1,18 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe GazouSokuhou do
5
+ let(:url) { 'http://stalker.livedoor.biz/archives/51977311.html' }
6
+ subject { @dl }
7
+
8
+ before do
9
+ EroGetter.stub(:mkdir)
10
+ @dl = GazouSokuhou.new(url)
11
+ fake(:get, url, 'gazou_sokuhou/sample.html')
12
+ end
13
+ its(:name) { should == 'がぞー速報' }
14
+ its(:title) { should == '6月になったし2次水着画像どんどん貼ってくよー - がぞ~速報' }
15
+ its(:base_dir) { should == 'gazou_sokuhou' }
16
+ its(:sub_directory) { should == '51977311' }
17
+ its("targets.count") { should == 31 }
18
+ end
@@ -0,0 +1,16 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe WakutekaSokuhou do
5
+ let(:url) { 'http://blog.livedoor.jp/wakusoku/archives/1461175.html' }
6
+ subject { @dl }
7
+ before do
8
+ EroGetter.stub(:mkdir)
9
+ @dl = WakutekaSokuhou.new(url)
10
+ fake(:get, url, 'wakuteka_sokuhou/sample.html')
11
+ end
12
+
13
+ its(:title) { should == 'わくてか速報 : 【エロ画像】抜かずにはいられない虹エロ画像パート1194【詳細付き】 - livedoor Blog(ブログ)' }
14
+ its(:sub_directory) { should == '1461175' }
15
+ its("targets.count") { should == 37 }
16
+ end
@@ -48,6 +48,7 @@ describe EroGetter::Base do
48
48
  'https://github.com/masarakki/ero_getter_chrome_extension'] }
49
49
  its(:sub_directory) { should == 'ero_getter_server/ero_getter_chrome_extension' }
50
50
  its(:directory) { should == '/tmp/test_class/ero_getter_server/ero_getter_chrome_extension' }
51
+ it { subject.send(:filename, "hogehoge.jpg", 1).should == 'hogehoge.jpg' }
51
52
 
52
53
  describe :after_run do
53
54
  context :not_set_after do
@@ -152,4 +153,17 @@ describe EroGetter::Base do
152
153
  its(:next) { should == 'unko' }
153
154
  end
154
155
  end
156
+ context :with_filename do
157
+ before do
158
+ _regex = regex
159
+ klazz = Class.new(EroGetter::Base) do
160
+ url _regex
161
+ filename do |attr|
162
+ "%04d%s" % [attr[:index], attr[:ext]]
163
+ end
164
+ end
165
+ @dl = klazz.new(url)
166
+ end
167
+ it { @dl.send(:filename, 'hogehoge.jpg', 0).should == '0000.jpg' }
168
+ end
155
169
  end