valda-video_scraper 1.0.2 → 1.0.3

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 (35) hide show
  1. data/README +1 -0
  2. data/lib/www/video_scraper.rb +12 -12
  3. data/lib/www/video_scraper/adult_satellites.rb +27 -0
  4. data/lib/www/video_scraper/age_sage.rb +1 -7
  5. data/lib/www/video_scraper/ameba_vision.rb +1 -7
  6. data/lib/www/video_scraper/base.rb +23 -3
  7. data/lib/www/video_scraper/dailymotion.rb +1 -7
  8. data/lib/www/video_scraper/moro_tube.rb +1 -7
  9. data/lib/www/video_scraper/nico_video.rb +19 -24
  10. data/lib/www/video_scraper/pornhub.rb +1 -7
  11. data/lib/www/video_scraper/pornotube.rb +11 -16
  12. data/lib/www/video_scraper/red_tube.rb +42 -22
  13. data/lib/www/video_scraper/tube8.rb +10 -7
  14. data/lib/www/video_scraper/veoh.rb +4 -10
  15. data/lib/www/video_scraper/you_porn.rb +1 -7
  16. data/lib/www/video_scraper/you_tube.rb +16 -21
  17. data/lib/www/video_scraper/your_file_host.rb +1 -7
  18. data/test/test_helper.rb +15 -0
  19. data/test/www/test_video_scraper.rb +21 -0
  20. data/test/www/video_scraper/test_adult_satellites.rb +13 -0
  21. data/test/www/video_scraper/test_age_sage.rb +1 -12
  22. data/test/www/video_scraper/test_ameba_vision.rb +1 -12
  23. data/test/www/video_scraper/test_base.rb +14 -0
  24. data/test/www/video_scraper/test_dailymotion.rb +1 -12
  25. data/test/www/video_scraper/test_moro_tube.rb +1 -12
  26. data/test/www/video_scraper/test_nico_video.rb +3 -10
  27. data/test/www/video_scraper/test_pornhub.rb +1 -12
  28. data/test/www/video_scraper/test_pornotube.rb +2 -13
  29. data/test/www/video_scraper/test_red_tube.rb +4 -15
  30. data/test/www/video_scraper/test_tube8.rb +3 -13
  31. data/test/www/video_scraper/test_veoh.rb +1 -12
  32. data/test/www/video_scraper/test_you_porn.rb +1 -12
  33. data/test/www/video_scraper/test_you_tube.rb +8 -16
  34. data/test/www/video_scraper/test_your_file_host.rb +2 -12
  35. metadata +6 -2
data/README CHANGED
@@ -11,6 +11,7 @@ Web scraping library for video sharing sites.
11
11
 
12
12
  Supported sites
13
13
 
14
+ * AdultSatellites
14
15
  * AmebaVision
15
16
  * Dailymotion
16
17
  * MoroTube
@@ -15,9 +15,9 @@ end
15
15
 
16
16
  module WWW
17
17
  module VideoScraper
18
- VERSION = '1.0.2'
18
+ VERSION = '1.0.3'
19
19
 
20
- MODULES_NAME = %w(age_sage ameba_vision dailymotion moro_tube
20
+ MODULES_NAME = %w(adult_satellites age_sage ameba_vision dailymotion moro_tube
21
21
  nico_video pornhub pornotube red_tube tube8 veoh
22
22
  you_porn you_tube your_file_host)
23
23
 
@@ -29,7 +29,6 @@ module WWW
29
29
  @@options = {
30
30
  :logger => nil,
31
31
  :cache => nil,
32
- :debug => false,
33
32
  }
34
33
 
35
34
  class << self
@@ -50,20 +49,22 @@ module WWW
50
49
  yield @@options
51
50
  end
52
51
 
52
+ def find_module(url)
53
+ @@modules.find { |mod| mod.valid_url?(url) }
54
+ end
55
+
53
56
  # 与えられた URL を処理できるモジュールを @@modules から検索して実行する
54
57
  def scrape(url, opt = nil)
55
58
  opt = @@options.merge(opt || {})
56
59
  opt[:logger] ||= logger
57
60
  raise StandardError, "url param is requred" unless url
58
61
 
59
- @@modules.each do |scraper|
60
- if scraper.valid_url?(url)
61
- logger.info "scraper: #{scraper.to_s}"
62
- logger.info "url: #{url}"
63
- return scraper.new(url, opt)
64
- end
62
+ logger.info "url: #{url}"
63
+ if mod = find_module(url)
64
+ logger.info "found module: #{mod.to_s}"
65
+ return mod.scrape(url, opt)
65
66
  end
66
- logger.info "unsupport site."
67
+ logger.info "unsupport url."
67
68
  return nil
68
69
  rescue TimeoutError, Timeout::Error, Errno::ETIMEDOUT => e
69
70
  logger.warn " Timeout : #{e.to_s}"
@@ -80,8 +81,7 @@ module WWW
80
81
  private
81
82
  def logger
82
83
  return @@options[:logger] if @@options[:logger]
83
- require 'logger'
84
- @@options[:logger] = Logger.new(STDOUT)
84
+ @@options[:logger] = NullLogger.new
85
85
  end
86
86
  end
87
87
  end
@@ -0,0 +1,27 @@
1
+ # -*- mode:ruby; coding:utf-8 -*-
2
+
3
+ require File.expand_path(File.dirname(__FILE__) + '/base')
4
+
5
+ module WWW
6
+ module VideoScraper
7
+ class AdultSatellites < Base
8
+ url_regex %r!http://(?:www\.)?asa\.tv/movie_detail\.php.*!
9
+
10
+ def scrape
11
+ html = http_get(@page_url)
12
+ doc = Hpricot(html.toutf8)
13
+ raise FileNotFound unless flashvars = doc.at('//object //param[@name="FlashVars"]')
14
+ flashvars = CGI.parse(flashvars.attributes['value'])
15
+ @video_url = flashvars['videoName'][0]
16
+ uri = URI.parse(@page_url)
17
+ if m = @video_url.match(%r!/([[:alnum:]]+/[[:alnum:]]+)\.flv!)
18
+ @thumb_url = "#{uri.scheme}://#{uri.host}/captured/#{m[1]}_1.jpg"
19
+ end
20
+ @title = doc.at('//strong[@class="ptitle"]').inner_html rescue nil
21
+ if embed = doc.at('//input[@name="embed"]')
22
+ @embed_tag = CGI.unescapeHTML(embed.attributes['value'])
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -7,13 +7,7 @@ module WWW
7
7
  class AgeSage < Base
8
8
  url_regex %r!\Ahttp://adult\.agesage\.jp/contentsPage\.html\?mcd=[[:alnum:]]{16}!
9
9
 
10
- def initialize(url, opt = nil)
11
- super
12
- do_query
13
- end
14
-
15
- private
16
- def do_query
10
+ def scrape
17
11
  @request_url = @page_url.sub('.html', '.xml')
18
12
  @response_body = http_get(@request_url)
19
13
  raise FileNotFound if @response_body.nil? or @response_body.empty?
@@ -7,13 +7,7 @@ module WWW
7
7
  class AmebaVision < Base
8
8
  url_regex %r!\Ahttp://vision\.ameba\.jp/watch\.do.*?\?movie=(\d+)!
9
9
 
10
- def initialize(url, opt = nil)
11
- super
12
- do_query
13
- end
14
-
15
- private
16
- def do_query
10
+ def scrape
17
11
  id = url_regex_match[1]
18
12
  request_url = "http://vision.ameba.jp/api/get/detailMovie.do?movie=#{id}"
19
13
  xml = http_get(request_url)
@@ -5,6 +5,10 @@ module WWW
5
5
  class TryAgainLater < RuntimeError; end
6
6
  class FileNotFound < RuntimeError; end
7
7
 
8
+ class NullLogger
9
+ def method_missing(name, *args); return nil; end
10
+ end
11
+
8
12
  class Base
9
13
  attr_reader :page_url, :video_url, :thumb_url, :embed_tag, :title
10
14
 
@@ -17,6 +21,12 @@ module WWW
17
21
  def valid_url?(url)
18
22
  not (url =~ @url_regex).nil?
19
23
  end
24
+
25
+ def scrape(url, opt = nil)
26
+ instance = self.new(url, opt)
27
+ instance.scrape
28
+ instance
29
+ end
20
30
  end
21
31
 
22
32
  def initialize(url, opt = nil)
@@ -26,8 +36,14 @@ module WWW
26
36
  raise StandardError, "url is not #{self.class.name} link: #{url}" if @url_regex_match.nil?
27
37
  end
28
38
 
29
- private
30
- def url_regex_match; @url_regex_match; end
39
+ def scrape
40
+ raise StandardError, 'not implemented yet'
41
+ end
42
+
43
+ protected
44
+ def url_regex_match
45
+ @url_regex_match
46
+ end
31
47
 
32
48
  def agent
33
49
  @agent ||= WWW::Mechanize.new do |a|
@@ -35,6 +51,11 @@ module WWW
35
51
  end
36
52
  end
37
53
 
54
+ def logger
55
+ return @opt[:logger] if @opt[:logger]
56
+ @opt[:logger] = NullLogger.new
57
+ end
58
+
38
59
  def http_get(url, opt = nil)
39
60
  open_opt = {
40
61
  "User-Agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)",
@@ -57,7 +78,6 @@ module WWW
57
78
  raise TryAgainLater, e.to_s if e.to_s.include?('503')
58
79
  raise e
59
80
  end
60
-
61
81
  end
62
82
  end
63
83
  end
@@ -7,13 +7,7 @@ module WWW
7
7
  class Dailymotion < Base
8
8
  url_regex %r!\Ahttp://www\.dailymotion\.com/.*?/video/([\w/-]+)!
9
9
 
10
- def initialize(url, opt = nil)
11
- super
12
- do_query
13
- end
14
-
15
- private
16
- def do_query
10
+ def scrape
17
11
  uri = URI.parse(@page_url)
18
12
  html = http_get(@page_url)
19
13
  doc = Hpricot(html.toutf8)
@@ -8,13 +8,7 @@ module WWW
8
8
  url_regex %r!\Ahttp://www\.morotube\.com/watch\.php\?clip=([[:alnum:]]{8})!
9
9
  attr_reader :author, :duration
10
10
 
11
- def initialize(url, opt = nil)
12
- super
13
- do_query
14
- end
15
-
16
- private
17
- def do_query
11
+ def scrape
18
12
  uri = URI.parse(@page_url)
19
13
  uri.path = '/gen_xml.php'
20
14
  uri.query = "type=o&id=#{url_regex_match[1]}"
@@ -7,9 +7,25 @@ module WWW
7
7
  class NicoVideo < Base
8
8
  url_regex %r!\Ahttp://www\.nicovideo\.jp/watch/([[:alnum:]]+)!
9
9
 
10
- def initialize(url, opt = nil)
11
- super
12
- do_query
10
+ def scrape
11
+ begin
12
+ login
13
+ id = url_regex_match[1]
14
+ get_flv(id)
15
+ get_thumb(id)
16
+ get_embed_tag(id)
17
+ rescue Timeout::Error => e
18
+ raise TryAgainLater, e.to_s
19
+ rescue WWW::Mechanize::ResponseCodeError => e
20
+ case e.response_code
21
+ when '404', '403'
22
+ raise FileNotFound, e.to_s
23
+ when '502'
24
+ raise TryAgainLater, e.to_s
25
+ else
26
+ raise TryAgainLater, e.to_s
27
+ end
28
+ end
13
29
  end
14
30
 
15
31
  private
@@ -47,27 +63,6 @@ module WWW
47
63
  @embed_tag = elem.attributes['value']
48
64
  end
49
65
  end
50
-
51
- def do_query
52
- begin
53
- login
54
- id = url_regex_match[1]
55
- get_flv(id)
56
- get_thumb(id)
57
- get_embed_tag(id)
58
- rescue Timeout::Error => e
59
- raise TryAgainLater, e.to_s
60
- rescue WWW::Mechanize::ResponseCodeError => e
61
- case e.response_code
62
- when '404', '403'
63
- raise FileNotFound, e.to_s
64
- when '502'
65
- raise TryAgainLater, e.to_s
66
- else
67
- raise TryAgainLater, e.to_s
68
- end
69
- end
70
- end
71
66
  end
72
67
  end
73
68
  end
@@ -7,13 +7,7 @@ module WWW
7
7
  class Pornhub < Base
8
8
  url_regex %r|\Ahttp://www\.pornhub\.com/view_video\.php.*viewkey=[[:alnum:]]{20}|
9
9
 
10
- def initialize(url, opt = nil)
11
- super
12
- do_query
13
- end
14
-
15
- private
16
- def do_query
10
+ def scrape
17
11
  html = http_get(@page_url)
18
12
  raise FileNotFound unless m = html.match(/\.addVariable\("options",\s*"([^"]+)"\);/i)
19
13
  @request_url = URI.decode m[1]
@@ -7,22 +7,7 @@ module WWW
7
7
  class Pornotube < Base
8
8
  url_regex %r!\Ahttp://(?:www\.)?pornotube\.com/(?:media|channels)\.php\?.*m=(\d+)!
9
9
 
10
- def initialize(url, opt = nil)
11
- super
12
- do_query
13
- end
14
-
15
- private
16
- def login
17
- agent.post("http://pornotube.com/index.php",
18
- 'verifyAge' => 'true',
19
- 'bMonth' => '01',
20
- 'bDay' => '01',
21
- 'bYear' => '1970',
22
- 'submit' => 'View All Content')
23
- end
24
-
25
- def do_query
10
+ def scrape
26
11
  id = url_regex_match[1]
27
12
 
28
13
  login
@@ -37,6 +22,16 @@ module WWW
37
22
  @image_url = "http://photo.pornotube.com/thumbnails/video/#{q['userId'][0]}/#{q['mediaId'][0]}_full.jpg";
38
23
  @embed_tag = q['embedCode'][0]
39
24
  end
25
+
26
+ private
27
+ def login
28
+ agent.post("http://pornotube.com/index.php",
29
+ 'verifyAge' => 'true',
30
+ 'bMonth' => '01',
31
+ 'bDay' => '01',
32
+ 'bYear' => '1970',
33
+ 'submit' => 'View All Content')
34
+ end
40
35
  end
41
36
  end
42
37
  end
@@ -5,33 +5,16 @@ require File.expand_path(File.dirname(__FILE__) + '/base')
5
5
  module WWW
6
6
  module VideoScraper
7
7
  class RedTube < Base
8
- url_regex %r|\Ahttp://www\.redtube\.com/(\d{4})|
8
+ url_regex %r|\Ahttp://www\.redtube\.com/(\d+)|
9
9
 
10
- def initialize(url, opt = nil)
11
- super
12
- do_query
13
- end
14
-
15
- def embed_tag
16
- return @embed_tag if @embed_tag
17
- url = "http://www.redtube.com/embed/#{content_id}"
18
- response_body = http_get(url)
19
- doc = Hpricot(response_body)
20
- doc.search('//textarea#cpf') do |elem|
21
- @embed_tag = elem.inner_html
22
- end
23
- @embed_tag
24
- end
25
-
26
- private
27
- def content_id; url_regex_match[1]; end
28
-
29
- def do_query
10
+ def scrape
30
11
  s = content_id || '0'
31
12
  s = '1' if s.empty?
32
13
  pathnr = s.to_i / 1000
33
14
  s = "%07d" % s.to_i
15
+ logger.debug s
34
16
  pathnr = "%07d" % pathnr
17
+ logger.debug pathnr
35
18
  xc = %w!R 1 5 3 4 2 O 7 K 9 H B C D X F G A I J 8 L M Z 6 P Q 0 S T U V W E Y N!
36
19
  qsum = 0
37
20
  s.length.times do |i|
@@ -54,9 +37,46 @@ module WWW
54
37
  code += xc[s[4] - 48 + qsum + 7]
55
38
  code += xc[s[6] - 48 + qsum + 4]
56
39
  content_video = pathnr + '/' + code + '.flv'
40
+ @pathnr = pathnr
41
+ @s = s
57
42
  @video_url = "http://dl.redtube.com/_videos_t4vn23s9jc5498tgj49icfj4678/#{content_video}"
58
- # @thumb_url = "http://thumbs.redtube.com/_thumbs/#{pathnr}/#{s}/#{s}_#{'%03d' % i}.jpg"
59
43
  end
44
+
45
+ def thumb_url
46
+ return @thumb_url if @thumb_url
47
+ 1.upto(10) do |i|
48
+ url = "http://thumbs.redtube.com/_thumbs/#{@pathnr}/#{@s}/#{@s}_#{'%03d' % i}.jpg"
49
+ logger.debug url
50
+ begin
51
+ uri = URI.parse(url)
52
+ Net::HTTP.start(uri.host, uri.port) do |http|
53
+ response = http.head(uri.request_uri,
54
+ {"User-Agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"})
55
+ logger.debug response.code
56
+ if 200 == response.code.to_i
57
+ @thumb_url = url
58
+ return @thumb_url
59
+ end
60
+ end
61
+ rescue TimeoutError, Timeout::Error, Errno::ETIMEDOUT
62
+ end
63
+ end
64
+ nil
65
+ end
66
+
67
+ def embed_tag
68
+ return @embed_tag if @embed_tag
69
+ url = "http://www.redtube.com/embed/#{content_id}"
70
+ response_body = http_get(url)
71
+ doc = Hpricot(response_body)
72
+ doc.search('//textarea#cpf') do |elem|
73
+ @embed_tag = elem.inner_html
74
+ end
75
+ @embed_tag
76
+ end
77
+
78
+ private
79
+ def content_id; url_regex_match[1]; end
60
80
  end
61
81
  end
62
82
  end
@@ -5,15 +5,10 @@ require File.expand_path(File.dirname(__FILE__) + '/base')
5
5
  module WWW
6
6
  module VideoScraper
7
7
  class Tube8 < Base
8
+ attr_reader :video_url_3gp
8
9
  url_regex %r!\Ahttp://www\.tube8\.com/.*/(\d+)(?:/|$)!
9
10
 
10
- def initialize(url, opt = nil)
11
- super
12
- do_query
13
- end
14
-
15
- private
16
- def do_query
11
+ def scrape
17
12
  html = http_get(@page_url)
18
13
  doc = Hpricot(html.toutf8)
19
14
  raise FileNotFound unless flashvars = doc.at('//object //param[@name="FlashVars"]')
@@ -22,6 +17,14 @@ module WWW
22
17
  uri = URI.parse(@page_url)
23
18
  @thumb_url = URI.join("#{uri.scheme}://#{uri.host}", flashvars['imageUrl'][0]).to_s
24
19
  @title = doc.at('//h1[@class="text"]').inner_html rescue nil
20
+ doc.search('//a').each do |elem|
21
+ if href = elem.attributes['href']
22
+ if href.match(/\.3gp$/)
23
+ @video_url_3gp = href
24
+ break
25
+ end
26
+ end
27
+ end
25
28
  end
26
29
  end
27
30
  end
@@ -7,13 +7,7 @@ module WWW
7
7
  class Veoh < Base
8
8
  url_regex %r!\Ahttp://www\.veoh\.com/videos/([[:alnum:]]+)!
9
9
 
10
- def initialize(url, opt = nil)
11
- super
12
- do_query
13
- end
14
-
15
- private
16
- def do_query
10
+ def scrape
17
11
  @id = url_regex_match[1]
18
12
  request_url = "http://www.veoh.com/rest/video/#{@id}/details"
19
13
  xml = http_get(request_url)
@@ -21,10 +15,10 @@ module WWW
21
15
  @title = xml.match(/title="([^"]+)"/).to_a[1]
22
16
  @thumb_url = xml.match(/fullMedResImagePath="([^"]+)"/).to_a[1]
23
17
  html = http_get(@page_url)
24
- embed_tag = html.match(/\sid="embed"\s[^>]*value="([^"]+)"/).to_a[1]
25
- @embed_tag = CGI.unescapeHTML embed_tag
18
+ if embed_tag = html.match(/\sid="embed"\s[^>]*value="([^"]+)"/).to_a[1]
19
+ @embed_tag = CGI.unescapeHTML(embed_tag)
20
+ end
26
21
  end
27
22
  end
28
23
  end
29
24
  end
30
-
@@ -7,13 +7,7 @@ module WWW
7
7
  class YouPorn < Base
8
8
  url_regex %r!\Ahttp://youporn\.com/watch/(\d+)!
9
9
 
10
- def initialize(url, opt = nil)
11
- super
12
- do_query
13
- end
14
-
15
- private
16
- def do_query
10
+ def scrape
17
11
  id = url_regex_match[1]
18
12
 
19
13
  request_url = @page_url.sub(/(\?.*)?$/, '?user_choice=Enter')
@@ -7,16 +7,28 @@ module WWW
7
7
  class YouTube < Base
8
8
  url_regex %r!\Ahttp://(?:www|jp)\.youtube\.com/watch.*[?&]v=([[:alnum:]]+)!
9
9
 
10
- def initialize(url, opt = nil)
11
- super
12
- do_query
10
+ def scrape
11
+ page = pass_verify_age
12
+ @title = page.root.at('//head/title').inner_html.sub(/^YouTube[\s-]*/, '') rescue ''
13
+ @embed_tag = page.root.at('//input[@id="embed_code"]').attributes['value'] rescue nil
14
+ page.root.search('//script').each do |script|
15
+ if m = script.inner_html.match(/var\s+swfArgs\s*=\s*([^;]+);/)
16
+ swf_args = JSON::parse(m[1])
17
+ uri = URI.parse(@page_url)
18
+ uri.path = '/get_video'
19
+ uri.query = "video_id=#{swf_args['video_id']}&t=#{swf_args['t']}"
20
+ @video_url = uri.to_s
21
+ @thumb_url = "http://i.ytimg.com/vi/#{swf_args['video_id']}/default.jpg"
22
+ end
23
+ end
24
+ raise FileNotFound, 'file not found' if @video_url.nil?
13
25
  end
14
26
 
15
27
  private
16
28
  def login
17
29
  uri = URI.parse(@page_url)
18
30
  page = agent.get("#{uri.scheme}://#{uri.host}/login")
19
- login_form = page.forms.with.name('loginForm').first
31
+ login_form = page.form('loginForm')
20
32
  login_form.username = @opt[:you_tube_username]
21
33
  login_form.password = @opt[:you_tube_password]
22
34
  agent.submit(login_form)
@@ -33,23 +45,6 @@ module WWW
33
45
  end
34
46
  page
35
47
  end
36
-
37
- def do_query
38
- page = pass_verify_age
39
- @title = page.root.at('//head/title').inner_html.sub(/^YouTube[\s-]*/, '') rescue ''
40
- @embed_tag = page.root.at('//input[@id="embed_code"]').attributes['value'] rescue nil
41
- page.root.search('//script').each do |script|
42
- if m = script.inner_html.match(/var\s+swfArgs\s*=\s*([^;]+);/)
43
- swf_args = JSON::parse(m[1])
44
- uri = URI.parse(@page_url)
45
- uri.path = '/get_video'
46
- uri.query = "video_id=#{swf_args['video_id']}&t=#{swf_args['t']}"
47
- @video_url = uri.to_s
48
- @thumb_url = "http://i.ytimg.com/vi/#{swf_args['video_id']}/default.jpg"
49
- end
50
- end
51
- raise FileNotFound, 'file not found' if @video_url.nil?
52
- end
53
48
  end
54
49
  end
55
50
  end
@@ -11,11 +11,6 @@ module WWW
11
11
  class BandwidthAllowanceExceeded < TryAgainLater; end
12
12
  class NoFileCategory < FileNotFound; end
13
13
 
14
- def initialize(url, opt = nil)
15
- super
16
- do_query
17
- end
18
-
19
14
  def filename
20
15
  uri = URI.parse(@page_url)
21
16
  q = CGI.parse(uri.query)
@@ -23,8 +18,7 @@ module WWW
23
18
  end
24
19
  alias :title :filename
25
20
 
26
- private
27
- def do_query
21
+ def scrape
28
22
  html = http_get(@page_url)
29
23
  doc = Hpricot(html.toutf8)
30
24
  if elem = doc.at('//object[@id="objectPlayer"] //param[@name="movie"]')
data/test/test_helper.rb CHANGED
@@ -5,4 +5,19 @@ require File.expand_path(File.dirname(__FILE__) + '/../lib/www/video_scraper')
5
5
 
6
6
  require 'fileutils'
7
7
  require 'filecache'
8
+ require 'logger'
8
9
  require 'pit'
10
+
11
+ class Test::Unit::TestCase
12
+ def logger
13
+ @logger ||= Logger.new(STDOUT)
14
+ end
15
+
16
+ def filecache
17
+ @filecache ||= FileCache.new('TestVideoScraper', '/tmp/test_video_scraper_cache', 60 * 60)
18
+ end
19
+
20
+ def default_opt
21
+ @default_opt ||= { :logger => logger, :cache => filecache }
22
+ end
23
+ end
@@ -12,9 +12,30 @@ class TestVideoScraper < Test::Unit::TestCase
12
12
  end
13
13
 
14
14
  def test_configure
15
+ WWW::VideoScraper.options = {}
16
+
17
+ assert_nil WWW::VideoScraper.options[:cache]
18
+ assert_nil WWW::VideoScraper.options[:logger]
19
+
15
20
  WWW::VideoScraper.configure do |conf|
16
21
  conf[:cache] = FileCache.new('TestVideoScraper', @cache_root, 60*60*24)
22
+ conf[:logger] = Logger.new(STDOUT)
17
23
  end
24
+
18
25
  assert_kind_of FileCache, WWW::VideoScraper.options[:cache]
26
+ assert_kind_of Logger, WWW::VideoScraper.options[:logger]
27
+ end
28
+
29
+ def test_find_module
30
+ mod = WWW::VideoScraper.find_module('http://jp.youtube.com/watch?v=Ym20IwIUbuU')
31
+ assert_equal WWW::VideoScraper::YouTube, mod
32
+ mod = WWW::VideoScraper.find_module('http://www.nicovideo.jp/watch/sm1175788')
33
+ assert_equal WWW::VideoScraper::NicoVideo, mod
34
+ end
35
+
36
+ def test_scrape
37
+ vs = WWW::VideoScraper.scrape('http://www.yourfilehost.com/media.php?cat=video&file=XV436__03.wmv')
38
+ assert_kind_of WWW::VideoScraper::Yourfilehost, vs
19
39
  end
20
40
  end
41
+
@@ -0,0 +1,13 @@
1
+ # -*- mode:ruby; coding:utf-8 -*-
2
+
3
+ require File.dirname(__FILE__) + '/../../test_helper'
4
+
5
+ class TestAdultSatellites < Test::Unit::TestCase
6
+ def test_scrape
7
+ vs = WWW::VideoScraper::AdultSatellites.scrape('http://www.asa.tv/movie_detail.php?userid=&movie_id=15680', default_opt)
8
+ assert_equal 'http://www.asa.tv/movie_detail.php?userid=&movie_id=15680', vs.page_url
9
+ assert_match %r|http://asa\.tv/movie/D5/gcuppapa/[[:alnum:]]{32}\.flv|, vs.video_url
10
+ assert_match %r|http://www\.asa\.tv/captured/gcuppapa/[[:alnum:]]{32}_1\.jpg|, vs.thumb_url
11
+ assert_equal '妃乃ひかり,2', vs.title
12
+ end
13
+ end
@@ -3,19 +3,8 @@
3
3
  require File.dirname(__FILE__) + '/../../test_helper'
4
4
 
5
5
  class TestAgeSage < Test::Unit::TestCase
6
- def setup
7
- @cache_root = '/tmp/test_video_scraper_cache'
8
- WWW::VideoScraper.configure do |conf|
9
- conf[:cache] = FileCache.new('TestVideoScraper', @cache_root, 60*60*24)
10
- end
11
- end
12
-
13
- def teardown
14
- # FileUtils.remove_entry_secure(@cache_root, true)
15
- end
16
-
17
6
  def test_scrape
18
- vs = WWW::VideoScraper.scrape('http://adult.agesage.jp/contentsPage.html?mcd=oadyChZgcoN9rqbJ')
7
+ vs = WWW::VideoScraper::AgeSage.scrape('http://adult.agesage.jp/contentsPage.html?mcd=oadyChZgcoN9rqbJ', default_opt)
19
8
  assert_equal 'http://adult.agesage.jp/contentsPage.html?mcd=oadyChZgcoN9rqbJ', vs.page_url
20
9
  assert_match %r!http://file\d+\.agesage\.jp/flv/\d{8}/\d{10}_\d{6}\.flv!, vs.video_url
21
10
  assert_match %r!http://file\d+\.agesage\.jp/data/\d{8}/\d{10}_\d{6}!, vs.thumb_url
@@ -3,19 +3,8 @@
3
3
  require File.dirname(__FILE__) + '/../../test_helper'
4
4
 
5
5
  class TestAmebaVision < Test::Unit::TestCase
6
- def setup
7
- @cache_root = '/tmp/test_video_scraper_cache'
8
- WWW::VideoScraper.configure do |conf|
9
- conf[:cache] = FileCache.new('TestVideoScraper', @cache_root, 60*60*24)
10
- end
11
- end
12
-
13
- def teardown
14
- # FileUtils.remove_entry_secure(@cache_root, true)
15
- end
16
-
17
6
  def test_scrape
18
- vs = WWW::VideoScraper.scrape('http://vision.ameba.jp/watch.do?movie=772341')
7
+ vs = WWW::VideoScraper::AmebaVision.scrape('http://vision.ameba.jp/watch.do?movie=772341', default_opt)
19
8
  assert_equal 'http://vision.ameba.jp/watch.do?movie=772341', vs.page_url
20
9
  assert_match %r|http://[-[:alnum:]]+\.vision\.ameba\.jp/flv/\d{4}/\d{2}/\d{2}/[[:alnum:]]+\.flv|, vs.video_url
21
10
  assert_match %r|http://[-[:alnum:]]+\.vision\.ameba\.jp/jpg/\d{4}/\d{2}/\d{2}/[[:alnum:]]+_4\.jpg|, vs.thumb_url
@@ -0,0 +1,14 @@
1
+ # -*- mode:ruby; coding:utf-8 -*-
2
+
3
+ require File.dirname(__FILE__) + '/../../test_helper'
4
+
5
+ class TestBase < Test::Unit::TestCase
6
+ def test_nulllogger
7
+ logger = WWW::VideoScraper::NullLogger.new
8
+ assert_nil logger.fatal 'nop'
9
+ assert_nil logger.error 'nop'
10
+ assert_nil logger.warn 'nop'
11
+ assert_nil logger.info 'nop'
12
+ assert_nil logger.debug 'nop'
13
+ end
14
+ end
@@ -3,19 +3,8 @@
3
3
  require File.dirname(__FILE__) + '/../../test_helper'
4
4
 
5
5
  class TestDailymotion < Test::Unit::TestCase
6
- def setup
7
- @cache_root = '/tmp/test_video_scraper_cache'
8
- WWW::VideoScraper.configure do |conf|
9
- conf[:cache] = FileCache.new('TestVideoScraper', @cache_root, 60*60*24)
10
- end
11
- end
12
-
13
- def teardown
14
- # FileUtils.remove_entry_secure(@cache_root, true)
15
- end
16
-
17
6
  def test_scrape
18
- vs = WWW::VideoScraper.scrape('http://www.dailymotion.com/mokelov/japan/video/x12gr3_music')
7
+ vs = WWW::VideoScraper::Dailymotion.scrape('http://www.dailymotion.com/mokelov/japan/video/x12gr3_music', default_opt)
19
8
  assert_equal 'http://www.dailymotion.com/mokelov/japan/video/x12gr3_music', vs.page_url
20
9
  assert_match %r|http://www\.dailymotion\.com/get/\d{2}/\d+x\d+/flv/\d+\.flv\?key=[[:alnum:]]+|, vs.video_url
21
10
  assert_match %r|http://\w+\.static\.dailymotion\.com/dyn/preview/\d+x\d+/\d+\.jpg\?\d{14}|, vs.thumb_url
@@ -3,19 +3,8 @@
3
3
  require File.dirname(__FILE__) + '/../../test_helper'
4
4
 
5
5
  class TestMoroTube < Test::Unit::TestCase
6
- def setup
7
- @cache_root = '/tmp/test_video_scraper_cache'
8
- WWW::VideoScraper.configure do |conf|
9
- conf[:cache] = FileCache.new('TestVideoScraper', @cache_root, 60*60*24)
10
- end
11
- end
12
-
13
- def teardown
14
- # FileUtils.remove_entry_secure(@cache_root, true)
15
- end
16
-
17
6
  def test_scrape
18
- vs = WWW::VideoScraper.scrape('http://www.morotube.com/watch.php?clip=46430e1d')
7
+ vs = WWW::VideoScraper::MoroTube.scrape('http://www.morotube.com/watch.php?clip=46430e1d', default_opt)
19
8
  assert_equal 'http://www.morotube.com/watch.php?clip=46430e1d', vs.page_url
20
9
  assert_match %r!http://video\d+\.morotube\.com/[[:alnum:]]{32}/[[:alnum:]]{8}/[[:alnum:]]{8}\.flv!, vs.video_url
21
10
  assert_match %r!http://static\d+\.morotube\.com/thumbs/\w{8}\.jpg!, vs.thumb_url
@@ -4,23 +4,16 @@ require File.dirname(__FILE__) + '/../../test_helper'
4
4
 
5
5
  class TestNicoVideo < Test::Unit::TestCase
6
6
  def setup
7
- @cache_root = '/tmp/test_video_scraper_cache'
8
- WWW::VideoScraper.configure do |conf|
9
- conf[:cache] = FileCache.new('TestVideoScraper', @cache_root, 60*60*24)
10
- end
11
7
  config = Pit.get('nicovideo.jp', :require => {
12
8
  'mail' => 'your email in nicovideo.jp',
13
9
  'password' => 'your password in nicovideo.jp'
14
10
  })
15
- @opt = { :nico_video_mail => config['mail'], :nico_video_password => config['password'] }
16
- end
17
-
18
- def teardown
19
- # FileUtils.remove_entry_secure(@cache_root, true)
11
+ default_opt.merge!(:nico_video_mail => config['mail'],
12
+ :nico_video_password => config['password'])
20
13
  end
21
14
 
22
15
  def test_scrape
23
- vs = WWW::VideoScraper.scrape('http://www.nicovideo.jp/watch/sm1175788', @opt)
16
+ vs = WWW::VideoScraper::NicoVideo.scrape('http://www.nicovideo.jp/watch/sm1175788', default_opt)
24
17
  assert_equal 'http://www.nicovideo.jp/watch/sm1175788', vs.page_url
25
18
  assert_match %r|http://smile-[[:alnum:]]+\.nicovideo\.jp/smile\?v=\d{7}\.\d{5}|, vs.video_url
26
19
  assert_match %r|http://tn-skr\d+\.smilevideo\.jp/smile\?i=\d{7}|, vs.thumb_url
@@ -3,19 +3,8 @@
3
3
  require File.dirname(__FILE__) + '/../../test_helper'
4
4
 
5
5
  class TestPornhub < Test::Unit::TestCase
6
- def setup
7
- @cache_root = '/tmp/test_video_scraper_cache'
8
- WWW::VideoScraper.configure do |conf|
9
- conf[:cache] = FileCache.new('TestVideoScraper', @cache_root, 60*60*24)
10
- end
11
- end
12
-
13
- def teardown
14
- # FileUtils.remove_entry_secure(@cache_root, true)
15
- end
16
-
17
6
  def test_scrape
18
- vs = WWW::VideoScraper.scrape('http://www.pornhub.com/view_video.php?viewkey=27f115e7fee8c18f92b0')
7
+ vs = WWW::VideoScraper::Pornhub.scrape('http://www.pornhub.com/view_video.php?viewkey=27f115e7fee8c18f92b0', default_opt)
19
8
  assert_equal 'http://www.pornhub.com/view_video.php?viewkey=27f115e7fee8c18f92b0', vs.page_url
20
9
  assert_match %r|http://media1.pornhub.com/dl/[[:alnum:]]{32}/[[:alnum:]]{8}/videos/000/191/743/191743\.flv|, vs.video_url
21
10
  assert_equal 'http://p1.pornhub.com/thumbs/000/191/743/small.jpg', vs.thumb_url
@@ -3,19 +3,8 @@
3
3
  require File.dirname(__FILE__) + '/../../test_helper'
4
4
 
5
5
  class TestPornotube < Test::Unit::TestCase
6
- def setup
7
- @cache_root = '/tmp/test_video_scraper_cache'
8
- WWW::VideoScraper.configure do |conf|
9
- conf[:cache] = FileCache.new('TestVideoScraper', @cache_root, 60*60*24)
10
- end
11
- end
12
-
13
- def teardown
14
- # FileUtils.remove_entry_secure(@cache_root, true)
15
- end
16
-
17
6
  def test_scrape
18
- vs = WWW::VideoScraper.scrape('http://pornotube.com/media.php?m=1677937')
7
+ vs = WWW::VideoScraper::Pornotube.scrape('http://pornotube.com/media.php?m=1677937', default_opt)
19
8
  assert_equal 'http://pornotube.com/media.php?m=1677937', vs.page_url
20
9
  assert_match %r|http://video\d+\.pornotube\.com/\d+/\d+\.flv|, vs.video_url
21
10
  assert_match %r|http://photo\.pornotube\.com/thumbnails/video/\d+/\d+\.jpg|, vs.thumb_url
@@ -23,7 +12,7 @@ class TestPornotube < Test::Unit::TestCase
23
12
  end
24
13
 
25
14
  def test_scrape_alt_url
26
- vs = WWW::VideoScraper.scrape('http://pornotube.com/channels.php?channelId=83&m=1677912')
15
+ vs = WWW::VideoScraper::Pornotube.scrape('http://pornotube.com/channels.php?channelId=83&m=1677912', default_opt)
27
16
  assert_equal 'http://pornotube.com/channels.php?channelId=83&m=1677912', vs.page_url
28
17
  assert_match %r|http://video\d+\.pornotube\.com/\d+/\d+\.flv|, vs.video_url
29
18
  assert_match %r|http://photo\.pornotube\.com/thumbnails/video/\d+/\d+\.jpg|, vs.thumb_url
@@ -3,22 +3,11 @@
3
3
  require File.dirname(__FILE__) + '/../../test_helper'
4
4
 
5
5
  class TestRedTube < Test::Unit::TestCase
6
- def setup
7
- @cache_root = '/tmp/test_video_scraper_cache'
8
- WWW::VideoScraper.configure do |conf|
9
- conf[:cache] = FileCache.new('TestVideoScraper', @cache_root, 60*60*24)
10
- end
11
- end
12
-
13
- def teardown
14
- # FileUtils.remove_entry_secure(@cache_root, true)
15
- end
16
-
17
6
  def test_scrape
18
- vs = WWW::VideoScraper.scrape('http://www.redtube.com/8415')
19
- assert_equal 'http://www.redtube.com/8415', vs.page_url
20
- assert_match %r!http://dl\.redtube\.com/_videos_t4vn23s9jc5498tgj49icfj4678/0000008/Z2XDJA1ZL\.flv!, vs.video_url
21
- assert_nil vs.thumb_url
7
+ vs = WWW::VideoScraper::RedTube.scrape('http://www.redtube.com/15021', default_opt)
8
+ assert_equal 'http://www.redtube.com/15021', vs.page_url
9
+ assert_equal 'http://dl.redtube.com/_videos_t4vn23s9jc5498tgj49icfj4678/0000015/X6KKXB0DB.flv', vs.video_url
10
+ assert_equal 'http://thumbs.redtube.com/_thumbs/0000015/0015021/0015021_001.jpg', vs.thumb_url
22
11
  assert_match %r!<object\s+.*</object>!, vs.embed_tag
23
12
  end
24
13
  end
@@ -3,22 +3,12 @@
3
3
  require File.dirname(__FILE__) + '/../../test_helper'
4
4
 
5
5
  class TestTube8 < Test::Unit::TestCase
6
- def setup
7
- @cache_root = '/tmp/test_video_scraper_cache'
8
- WWW::VideoScraper.configure do |conf|
9
- conf[:cache] = FileCache.new('TestVideoScraper', @cache_root, 60*60*24)
10
- end
11
- end
12
-
13
- def teardown
14
- # FileUtils.remove_entry_secure(@cache_root, true)
15
- end
16
-
17
6
  def test_scrape
18
- vs = WWW::VideoScraper.scrape('http://www.tube8.com/anal/alexis-amore-pov/56983/')
7
+ vs = WWW::VideoScraper::Tube8.scrape('http://www.tube8.com/anal/alexis-amore-pov/56983/', default_opt)
19
8
  assert_equal 'http://www.tube8.com/anal/alexis-amore-pov/56983/', vs.page_url
20
- assert_match %r|http://medianl\d+\.tube8\.com/flv/[[:alnum:]]{32}/\d{8}/\d{4}/\d{2}/[[:alnum:]]+/[[:alnum:]]+\.flv|, vs.video_url
9
+ assert_match %r|http://media\w+\.tube8\.com/flv/[[:alnum:]]{32}/[[:alnum:]]{8}/\d{4}/\d{2}/[[:alnum:]]+/[[:alnum:]]+\.flv|, vs.video_url
21
10
  assert_equal 'http://www.tube8.com/vs/83/56983.jpg', vs.thumb_url
22
11
  assert_equal 'Alexis Amore POV', vs.title
12
+ assert_match %r!http://mobile\d+\.tube8\.com/flv/[[:alnum:]]{32}/[[:alnum:]]{8}/\d{4}/\d{2}/[[:alnum:]]+/[[:alnum:]]+\.3gp!, vs.video_url_3gp
23
13
  end
24
14
  end
@@ -3,19 +3,8 @@
3
3
  require File.dirname(__FILE__) + '/../../test_helper'
4
4
 
5
5
  class TestVeoh < Test::Unit::TestCase
6
- def setup
7
- @cache_root = '/tmp/test_video_scraper_cache'
8
- WWW::VideoScraper.configure do |conf|
9
- conf[:cache] = FileCache.new('TestVideoScraper', @cache_root, 60*60*24)
10
- end
11
- end
12
-
13
- def teardown
14
- # FileUtils.remove_entry_secure(@cache_root, true)
15
- end
16
-
17
6
  def test_scrape
18
- vs = WWW::VideoScraper.scrape('http://www.veoh.com/videos/v6245232rh8aGEM9')
7
+ vs = WWW::VideoScraper::Veoh.scrape('http://www.veoh.com/videos/v6245232rh8aGEM9', default_opt)
19
8
  assert_equal 'http://www.veoh.com/videos/v6245232rh8aGEM9', vs.page_url
20
9
  assert_match %r|http://content\.veoh\.com/flash/p/\d/[[:alnum:]]{16}/[[:alnum:]]{40}\.fll\?ct=[[:alnum:]]{48}|, vs.video_url
21
10
  assert_match %r|http://p-images\.veoh\.com/image\.out\?imageId=media-[[:alnum:]]+.jpg|, vs.thumb_url
@@ -3,19 +3,8 @@
3
3
  require File.dirname(__FILE__) + '/../../test_helper'
4
4
 
5
5
  class TestYouPorn < Test::Unit::TestCase
6
- def setup
7
- @cache_root = '/tmp/test_video_scraper_cache'
8
- WWW::VideoScraper.configure do |conf|
9
- conf[:cache] = FileCache.new('TestVideoScraper', @cache_root, 60*60*24)
10
- end
11
- end
12
-
13
- def teardown
14
- # FileUtils.remove_entry_secure(@cache_root, true)
15
- end
16
-
17
6
  def test_scrape
18
- vs = WWW::VideoScraper.scrape('http://youporn.com/watch/93495?user_choice=Enter')
7
+ vs = WWW::VideoScraper::YouPorn.scrape('http://youporn.com/watch/93495?user_choice=Enter', default_opt)
19
8
  assert_equal 'http://youporn.com/watch/93495?user_choice=Enter', vs.page_url
20
9
  assert_match %r|http://download\.youporn\.com/download/\d+/flv/\d+_.*\.flv.*|, vs.video_url
21
10
  assert_match %r|http://ss-\d+\.youporn\.com/screenshot/\d+/\d+/screenshot/\d+_large\.jpg|, vs.thumb_url
@@ -4,24 +4,16 @@ require File.dirname(__FILE__) + '/../../test_helper'
4
4
 
5
5
  class TestYouTube < Test::Unit::TestCase
6
6
  def setup
7
- @cache_root = '/tmp/test_video_scraper_cache'
8
- WWW::VideoScraper.configure do |conf|
9
- conf[:cache] = FileCache.new('TestVideoScraper', @cache_root, 60*60*24)
10
- end
11
-
12
7
  config = Pit.get('youtube.com', :require => {
13
8
  'username' => 'your email in youtube.com',
14
9
  'password' => 'your password in youtube.com'
15
10
  })
16
- @opt = { :you_tube_username => config['username'], :you_tube_password => config['password'] }
17
- end
18
-
19
- def teardown
20
- # FileUtils.remove_entry_secure(@cache_root, true)
11
+ default_opt.merge!(:you_tube_username => config['username'],
12
+ :you_tube_password => config['password'])
21
13
  end
22
14
 
23
15
  def test_scrape
24
- vs = WWW::VideoScraper.scrape('http://jp.youtube.com/watch?v=Ym20IwIUbuU', @opt)
16
+ vs = WWW::VideoScraper::YouTube.scrape('http://jp.youtube.com/watch?v=Ym20IwIUbuU', default_opt)
25
17
  assert_equal 'http://jp.youtube.com/watch?v=Ym20IwIUbuU', vs.page_url
26
18
  assert_match %r|http://jp\.youtube\.com/get_video\?video_id=Ym20IwIUbuU&t=[-_[:alnum:]]{32}|, vs.video_url
27
19
  assert_match %r|http://\w\.ytimg\.com/vi/Ym20IwIUbuU/default\.jpg|, vs.thumb_url
@@ -30,11 +22,11 @@ class TestYouTube < Test::Unit::TestCase
30
22
  end
31
23
 
32
24
  def test_scrape_alt_url
33
- vs = WWW::VideoScraper.scrape('http://jp.youtube.com/watch?v=ibhaQZB9TWU', @opt)
34
- assert_equal 'http://jp.youtube.com/watch?v=ibhaQZB9TWU', vs.page_url
35
- assert_match %r|http://jp\.youtube\.com/get_video\?video_id=ibhaQZB9TWU&t=[-_[:alnum:]]{32}|, vs.video_url
36
- assert_match %r|http://\w\.ytimg\.com/vi/ibhaQZB9TWU/default\.jpg|, vs.thumb_url
25
+ vs = WWW::VideoScraper::YouTube.scrape('http://jp.youtube.com/watch?v=ATHC8qDkoO0', default_opt)
26
+ assert_equal 'http://jp.youtube.com/watch?v=ATHC8qDkoO0', vs.page_url
27
+ assert_match %r|http://jp\.youtube\.com/get_video\?video_id=ATHC8qDkoO0&t=[-_[:alnum:]]{32}|, vs.video_url
28
+ assert_match %r|http://\w\.ytimg\.com/vi/ATHC8qDkoO0/default\.jpg|, vs.thumb_url
37
29
  assert_match %r|^<object\s+.*</object>$|, vs.embed_tag
38
- assert_equal '水着の人妻', vs.title
30
+ assert_equal "019' Sexii_Shower 藤澤まお_洗白白", vs.title
39
31
  end
40
32
  end
@@ -3,22 +3,12 @@
3
3
  require File.dirname(__FILE__) + '/../../test_helper'
4
4
 
5
5
  class TestYourFileHost < Test::Unit::TestCase
6
- def setup
7
- @cache_root = '/tmp/test_video_scraper_cache'
8
- WWW::VideoScraper.configure do |conf|
9
- conf[:cache] = FileCache.new('TestVideoScraper', @cache_root, 60*60*24)
10
- end
11
- end
12
-
13
- def teardown
14
- # FileUtils.remove_entry_secure(@cache_root, true)
15
- end
16
-
17
6
  def test_scrape
18
- vs = WWW::VideoScraper.scrape('http://www.yourfilehost.com/media.php?cat=video&file=XV436__03.wmv')
7
+ vs = WWW::VideoScraper::YourFileHost.scrape('http://www.yourfilehost.com/media.php?cat=video&file=XV436__03.wmv', default_opt)
19
8
  assert_equal 'http://www.yourfilehost.com/media.php?cat=video&file=XV436__03.wmv', vs.page_url
20
9
  assert_match %r|http://cdn\w*\.yourfilehost\.com/unit1/flash8/\d+/[[:alnum:]]{32}\.flv|, vs.video_url
21
10
  assert_match %r|http://cdn\w*\.yourfilehost\.com/thumbs/\d+/[[:alnum:]]{32}\.jpg|, vs.thumb_url
22
11
  assert_equal 'XV436__03.wmv', vs.title
23
12
  end
24
13
  end
14
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: valda-video_scraper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - YAMAGUCHI Seiji
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-01-18 00:00:00 -08:00
12
+ date: 2009-01-27 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -50,6 +50,7 @@ files:
50
50
  - test/www/video_scraper/test_dailymotion.rb
51
51
  - test/www/video_scraper/test_age_sage.rb
52
52
  - test/www/video_scraper/test_pornotube.rb
53
+ - test/www/video_scraper/test_your_file_host_flymake.rb
53
54
  - test/www/video_scraper/test_tube8.rb
54
55
  - test/www/video_scraper/test_your_file_host.rb
55
56
  - test/www/video_scraper/test_moro_tube.rb
@@ -58,7 +59,9 @@ files:
58
59
  - test/www/video_scraper/test_nico_video.rb
59
60
  - test/www/video_scraper/test_you_porn.rb
60
61
  - test/www/video_scraper/test_you_tube.rb
62
+ - test/www/video_scraper/test_adult_satellites.rb
61
63
  - test/www/video_scraper/test_red_tube.rb
64
+ - test/www/video_scraper/test_base.rb
62
65
  - test/www/test_video_scraper.rb
63
66
  - lib/www
64
67
  - lib/www/video_scraper
@@ -67,6 +70,7 @@ files:
67
70
  - lib/www/video_scraper/ameba_vision.rb
68
71
  - lib/www/video_scraper/age_sage.rb
69
72
  - lib/www/video_scraper/pornotube.rb
73
+ - lib/www/video_scraper/adult_satellites.rb
70
74
  - lib/www/video_scraper/you_tube.rb
71
75
  - lib/www/video_scraper/moro_tube.rb
72
76
  - lib/www/video_scraper/pornhub.rb