opendmm 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c9fd109fd9892fc2cfc406afc24cef8a5e9ea074
4
- data.tar.gz: 75c288cb6b2f99207cee3732979eb0872d5000de
3
+ metadata.gz: fef917ffa04e30b83e92fcdce69f4d92c83006de
4
+ data.tar.gz: 3abff14037ac54df6af8ef421ca7d8ee538f0aa3
5
5
  SHA512:
6
- metadata.gz: 0df748805f49ad23c4810348dccdc10b705089794a91fa4eeab3acbf12c2c8df36e2303e8222857b1a29ac6ecf3210961b951576c229ed9a16c15400284972e4
7
- data.tar.gz: 2cc330c9b81004a9588961a7b97cc86db347f98bb97eeb5e430da293cc7adf990537898abe3f79b14e479dc7634c57c3366c486cb1a6374627e939bc88f3e62e
6
+ metadata.gz: e86153d2202b017d9b5696c3df5046e306b2863bbb0c25667e057af9da6213b9da0c22b5340a0242c9b8e36fab1e8644cb94fc2cb087d2237a286bafd0b80ca1
7
+ data.tar.gz: 2797b8aa6aa8d380e0e335c22206605f55a2cd2268d85c0da8fea08624898a714984474dffb5e9775a4512b89c7da02cd06c41bf7fa99b0510a5a5c97e37222b
@@ -22,7 +22,7 @@ module OpenDMM
22
22
  private
23
23
 
24
24
  def self.normalize(query)
25
- query.scan(/((?:S2|2D|3D|[a-z]){2,6}?)[-_\s]?(S?\d{2,5})/i).map do |pair|
25
+ query.scan(/((?:S2|2D|3D|[a-z]){2,6}?)[-_\s]?([SM]?\d{2,5})/i).map do |pair|
26
26
  alpha = pair[0].upcase
27
27
  digit = pair[1]
28
28
  case alpha
@@ -7,14 +7,12 @@ module OpenDMM
7
7
  def self.search(query)
8
8
  query = normalize(query)
9
9
  return unless query
10
- return MovieN.new(query).details if query.start_with? 'n'
11
- return MovieK.new(query).details if query.start_with? 'k'
10
+ Movie.new(query).details
12
11
  end
13
12
 
14
13
  private
15
14
 
16
15
  def self.normalize(query)
17
- # return unless query =~ /Tokyo[-_\s]*Hot/
18
16
  return unless query =~ /(k|n)(\d{3,4})/
19
17
  "#{$1}#{$2.rjust(4, '0')}"
20
18
  end
@@ -23,54 +21,55 @@ module OpenDMM
23
21
  include HTTParty
24
22
  base_uri 'www.tokyo-hot.com'
25
23
 
26
- def self.list_n
27
- @@list_n ||= get '/j/new_video0000_j.html'
28
- end
29
-
30
- def self.list_k
31
- @@list_k ||= get '/j/k_video0000_j.html'
24
+ def self.search(query)
25
+ get "http://www.tokyo-hot.com/product/?q=#{CGI::escape(query)}"
32
26
  end
33
27
  end
34
28
 
35
- class MovieN < OpenDMM::Movie
36
- def initialize(query)
37
- super(query, Site.list_n)
38
-
39
- @details.code = "Tokyo Hot #{query}"
40
- @details.maker = 'Tokyo Hot'
41
-
42
- link = @html.at_xpath("//a[contains(@href, '#{@query}')]")
43
- @details.page = link['href']
44
- @details.cover_image = link.at_css('img')['src']
29
+ class Search
30
+ def initialize(query, response)
31
+ @query = query
32
+ @response = response
33
+ @html = Nokogiri.HTML @response
34
+ end
45
35
 
46
- table = link.ancestors('table').first
47
- table.css('br').each do |br|
48
- br.replace "\n"
49
- end
50
- @details.title = table.at_xpath('tr[1]').text
51
- @details.actresses = table.at_xpath('tr[2]').text.squish.remove('--').split(/[\s、,]/)
52
- @details.release_date = table.at_xpath('tr[3]').text.remove('更新日')
36
+ def result
37
+ candidate = @html.at_css('#main > ul > li > a')['href']
38
+ URI.join(@response.request.last_uri.to_s, candidate).to_s
53
39
  end
54
40
  end
55
41
 
56
- class MovieK < OpenDMM::Movie
42
+ class Movie < OpenDMM::Movie
57
43
  def initialize(query)
58
- super(query, Site.list_k)
44
+ search = Search.new(query, Site.search(query))
45
+ super(query, Site.get(search.result))
59
46
 
60
- @details.code = "Tokyo Hot #{query}"
61
- @details.maker = 'Tokyo Hot'
47
+ @details.maker = 'Tokyo Hot'
62
48
 
63
- link = @html.at_xpath("//a[contains(@href, '#{@query}')]")
64
- @details.page = link['href']
65
- @details.cover_image = link.at_css('img')['src']
49
+ @details.title = @html.at_css('#container > div.pagetitle > h2').text
50
+ @details.cover_image = @html.at_css('#container > div.movie.cf > div.in > div.flowplayer > video')['poster']
51
+ @details.description = @html.at_css('#main > div.contents > div.sentence').text
66
52
 
67
- table = link.ancestors('table').first
68
- @details.title = table.at_xpath('tr[1]').text.remove('-').squish
69
- if @details.title =~ /餌食牝\s(.*)/
70
- @details.actresses = $1.squish.split
71
- @details.title = '餌食牝'
53
+ @html.css('#main > div.contents > div.infowrapper > dl > dt').each do |dt|
54
+ dd = dt.next_element
55
+ case dt.text
56
+ when /出演者/
57
+ @details.actresses = dd.css('a').map(&:text)
58
+ when /シリーズ/
59
+ @details.series = dd.text
60
+ when /カテゴリ/
61
+ @details.categories = dd.css('a').map(&:text)
62
+ when /配信開始日/
63
+ @details.release_date = dd.text
64
+ when /収録時間/
65
+ @details.movie_length = dd.text
66
+ when /作品番号/
67
+ @details.code = 'Tokyo Hot ' + dd.text
68
+ end
72
69
  end
73
- @details.release_date = table.at_xpath('tr[2]').text.remove('更新日')
70
+
71
+ @details.sample_images = @html.css('#main > div.contents > div.scap > a,
72
+ #main > div.contents > div.vcap > a').map { |a| a['href'] }
74
73
  end
75
74
  end
76
75
  end
@@ -81,11 +81,11 @@ module OpenDMM
81
81
  when :String
82
82
  value.to_s.squish
83
83
  when :URI
84
- URI.join(self.base_uri, value).to_s
84
+ URI.join(self.base_uri, URI.escape(value)).to_s
85
85
  when :URIArray
86
86
  raise "Field #{key} not an array: #{value}" unless value.instance_of? Array
87
87
  value.map do |uri|
88
- URI.join(self.base_uri, uri.squish).to_s
88
+ URI.join(self.base_uri, URI.escape(uri)).to_s
89
89
  end.sort
90
90
  else
91
91
  raise ArgumentError.new("Unknown value type: #{type}")
@@ -1,3 +1,3 @@
1
1
  module OpenDMM
2
- VERSION = '1.0.2'
2
+ VERSION = '1.0.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opendmm
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
  - Jun Zhou
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-05 00:00:00.000000000 Z
11
+ date: 2015-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler