opendmm 0.1.4 → 0.1.5
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 +4 -4
- data/.travis.yml +3 -0
- data/Rakefile +35 -27
- data/bin/opendmm +7 -7
- data/lib/opendmm.rb +35 -26
- data/lib/opendmm/maker.rb +18 -59
- data/lib/opendmm/makers/aknr.rb +18 -34
- data/lib/opendmm/makers/ako3.rb +18 -34
- data/lib/opendmm/makers/anna_and_hanako.rb +20 -36
- data/lib/opendmm/makers/apa.rb +19 -35
- data/lib/opendmm/makers/aroma.rb +40 -54
- data/lib/opendmm/makers/attackers.rb +30 -48
- data/lib/opendmm/makers/aurora.rb +24 -40
- data/lib/opendmm/makers/baltan.rb +20 -36
- data/lib/opendmm/makers/befree.rb +22 -38
- data/lib/opendmm/makers/bi.rb +24 -40
- data/lib/opendmm/makers/bijin_majo.rb +19 -35
- data/lib/opendmm/makers/candy.rb +27 -43
- data/lib/opendmm/makers/caribbean.rb +21 -36
- data/lib/opendmm/makers/cross.rb +22 -39
- data/lib/opendmm/makers/dip.rb +22 -38
- data/lib/opendmm/makers/dmm_collection.rb +19 -35
- data/lib/opendmm/makers/ebody.rb +22 -38
- data/lib/opendmm/makers/ideapocket.rb +42 -60
- data/lib/opendmm/makers/kawaii.rb +21 -37
- data/lib/opendmm/makers/kira_kira.rb +21 -37
- data/lib/opendmm/makers/madonna.rb +21 -37
- data/lib/opendmm/makers/moodyz.rb +41 -44
- data/lib/opendmm/makers/munekyunkissa.rb +21 -37
- data/lib/opendmm/makers/opera.rb +27 -43
- data/lib/opendmm/makers/oppai.rb +33 -51
- data/lib/opendmm/makers/premium.rb +23 -39
- data/lib/opendmm/makers/prestige.rb +40 -58
- data/lib/opendmm/makers/ran_maru.rb +29 -46
- data/lib/opendmm/makers/s1.rb +21 -37
- data/lib/opendmm/makers/s_cute.rb +41 -55
- data/lib/opendmm/makers/sod.rb +23 -39
- data/lib/opendmm/makers/tameikegoro.rb +22 -38
- data/lib/opendmm/makers/to_satsu.rb +20 -36
- data/lib/opendmm/makers/waap.rb +24 -41
- data/lib/opendmm/search_engine.rb +20 -0
- data/lib/opendmm/search_engines/dmm.rb +38 -58
- data/lib/opendmm/search_engines/jav_library.rb +32 -63
- data/lib/opendmm/site.rb +73 -0
- data/lib/opendmm/utils.rb +22 -2
- data/lib/opendmm/version.rb +1 -1
- data/test/{fixtures → dmm_fixtures}/DMYJ-001.json +1 -1
- data/test/fixture_test.rb +17 -13
- data/test/{fixtures → jav_library_fixtures}/XV-100.json +0 -0
- data/test/{fixtures → jav_library_fixtures}/XV-1000.json +0 -0
- data/test/{fixtures → maker_fixtures}/ABP-013.json +0 -0
- data/test/{fixtures → maker_fixtures}/ABS-014.json +0 -0
- data/test/{fixtures → maker_fixtures}/ABY-003.json +0 -0
- data/test/{fixtures → maker_fixtures}/ADN-019.json +0 -0
- data/test/{fixtures → maker_fixtures}/AIR-017.json +1 -1
- data/test/{fixtures → maker_fixtures}/AKO-011.json +1 -1
- data/test/{fixtures → maker_fixtures}/ALB-182.json +0 -0
- data/test/{fixtures → maker_fixtures}/ANND-066.json +0 -0
- data/test/{fixtures → maker_fixtures}/AP-001.json +0 -0
- data/test/{fixtures → maker_fixtures}/APAA-182.json +0 -0
- data/test/{fixtures → maker_fixtures}/APAK-051.json +0 -0
- data/test/{fixtures → maker_fixtures}/ARM-191.json +0 -0
- data/test/{fixtures → maker_fixtures}/ARMG-223.json +0 -0
- data/test/{fixtures → maker_fixtures}/ATID-183.json +0 -0
- data/test/{fixtures → maker_fixtures}/BBI-104.json +0 -0
- data/test/{fixtures → maker_fixtures}/BEB-001.json +0 -0
- data/test/{fixtures → maker_fixtures}/BF-175.json +0 -0
- data/test/{fixtures → maker_fixtures}/BID-017.json +0 -0
- data/test/{fixtures → maker_fixtures}/BIJN-006.json +0 -0
- data/test/{fixtures → maker_fixtures}/BLK-049.json +0 -0
- data/test/{fixtures → maker_fixtures}/BRA-002.json +0 -0
- data/test/{fixtures → maker_fixtures}/BWB-005.json +0 -0
- data/test/{fixtures → maker_fixtures}/CHN-008.json +0 -0
- data/test/{fixtures → maker_fixtures}/CHS-015.json +0 -0
- data/test/{fixtures → maker_fixtures}/CLUB-003.json +0 -0
- data/test/{fixtures → maker_fixtures}/CND-012.json +0 -0
- data/test/{fixtures → maker_fixtures}/CND-062.json +0 -0
- data/test/{fixtures → maker_fixtures}/CRAD-099.json +0 -0
- data/test/{fixtures → maker_fixtures}/CRPD-451.json +0 -0
- data/test/{fixtures → maker_fixtures}/CRSS-013.json +0 -0
- data/test/{fixtures → maker_fixtures}/CWM-156.json +1 -1
- data/test/fixtures/Carib 021511-620.json b/data/test/maker_fixtures/Carib → 021511-620.json +0 -0
- data/test/{fixtures → maker_fixtures}/DCOL-017.json +1 -1
- data/test/{fixtures → maker_fixtures}/DGL-007.json +1 -1
- data/test/{fixtures → maker_fixtures}/DOM-045.json +0 -0
- data/test/{fixtures → maker_fixtures}/EBOD-109.json +0 -0
- data/test/{fixtures → maker_fixtures}/ECB-078.json +1 -1
- data/test/{fixtures → maker_fixtures}/EDD-189.json +0 -0
- data/test/{fixtures → maker_fixtures}/ESK-232.json +0 -0
- data/test/{fixtures → maker_fixtures}/EZD-369.json +0 -0
- data/test/{fixtures → maker_fixtures}/FSET-399.json +0 -0
- data/test/{fixtures → maker_fixtures}/HAZ-009.json +0 -0
- data/test/{fixtures → maker_fixtures}/HON-001.json +0 -0
- data/test/{fixtures → maker_fixtures}/IDBD-447.json +0 -0
- data/test/{fixtures → maker_fixtures}/INU-013.json +0 -0
- data/test/{fixtures → maker_fixtures}/IPSD-041.json +0 -0
- data/test/{fixtures → maker_fixtures}/IPTD-464.json +0 -0
- data/test/{fixtures → maker_fixtures}/IPTD-629.json +0 -0
- data/test/{fixtures → maker_fixtures}/IPZ-005.json +0 -0
- data/test/{fixtures → maker_fixtures}/JBD-153.json +0 -0
- data/test/{fixtures → maker_fixtures}/JBS-004.json +0 -0
- data/test/{fixtures → maker_fixtures}/JOB-010.json +0 -0
- data/test/{fixtures → maker_fixtures}/JUC-285.json +0 -0
- data/test/{fixtures → maker_fixtures}/JUFD-137.json +0 -0
- data/test/{fixtures → maker_fixtures}/JUX-007.json +0 -0
- data/test/{fixtures → maker_fixtures}/JUX-119.json +0 -0
- data/test/{fixtures → maker_fixtures}/KAWD-249.json +1 -1
- data/test/{fixtures → maker_fixtures}/KIRD-147.json +0 -0
- data/test/{fixtures → maker_fixtures}/KISD-042.json +0 -0
- data/test/{fixtures → maker_fixtures}/LLR-005.json +0 -0
- data/test/{fixtures → maker_fixtures}/MAS-042.json +0 -0
- data/test/{fixtures → maker_fixtures}/MBD-148.json +0 -0
- data/test/{fixtures → maker_fixtures}/MDC-002.json +0 -0
- data/test/{fixtures → maker_fixtures}/MDYD-544.json +0 -0
- data/test/{fixtures → maker_fixtures}/MEK-008.json +0 -0
- data/test/{fixtures → maker_fixtures}/MIAD-490.json +0 -0
- data/test/{fixtures → maker_fixtures}/MIDD-599.json +0 -0
- data/test/{fixtures → maker_fixtures}/MIDD-643.json +0 -0
- data/test/{fixtures → maker_fixtures}/MIDD-644.json +0 -0
- data/test/{fixtures → maker_fixtures}/MIDE-004.json +0 -0
- data/test/{fixtures → maker_fixtures}/MIGD-284.json +0 -0
- data/test/{fixtures → maker_fixtures}/MIGD-336.json +0 -0
- data/test/{fixtures → maker_fixtures}/MIGD-337.json +0 -0
- data/test/{fixtures → maker_fixtures}/MIMK-005.json +0 -0
- data/test/{fixtures → maker_fixtures}/MINT-004.json +0 -0
- data/test/{fixtures → maker_fixtures}/MIQD-010.json +0 -0
- data/test/{fixtures → maker_fixtures}/MIRD-071.json +0 -0
- data/test/{fixtures → maker_fixtures}/MIRD-072.json +0 -0
- data/test/{fixtures → maker_fixtures}/MIRD-073.json +0 -0
- data/test/{fixtures → maker_fixtures}/MIXS-005.json +0 -0
- data/test/{fixtures → maker_fixtures}/MMY-010.json +0 -0
- data/test/{fixtures → maker_fixtures}/NAGE-001.json +0 -0
- data/test/{fixtures → maker_fixtures}/NDR-001.json +0 -0
- data/test/{fixtures → maker_fixtures}/NOF-003.json +0 -0
- data/test/{fixtures → maker_fixtures}/NPS-130.json +0 -0
- data/test/{fixtures → maker_fixtures}/OBA-045.json +1 -1
- data/test/{fixtures → maker_fixtures}/ONSD-570.json +0 -0
- data/test/{fixtures → maker_fixtures}/OPUD-125.json +1 -1
- data/test/{fixtures → maker_fixtures}/OSR-003.json +0 -0
- data/test/{fixtures → maker_fixtures}/PARM-028.json +0 -0
- data/test/{fixtures → maker_fixtures}/PBD-134.json +0 -0
- data/test/{fixtures → maker_fixtures}/PGD-306.json +0 -0
- data/test/{fixtures → maker_fixtures}/PJD-085.json +0 -0
- data/test/{fixtures → maker_fixtures}/PPB-008.json +0 -0
- data/test/{fixtures → maker_fixtures}/PPP-001.json +0 -0
- data/test/{fixtures → maker_fixtures}/PPPD-102.json +1 -1
- data/test/{fixtures → maker_fixtures}/PPSD-028.json +1 -1
- data/test/{fixtures → maker_fixtures}/PPT-004.json +0 -0
- data/test/{fixtures → maker_fixtures}/PTS-230.json +0 -0
- data/test/{fixtures → maker_fixtures}/PTV-001.json +0 -0
- data/test/{fixtures → maker_fixtures}/PXD-027.json +0 -0
- data/test/{fixtures → maker_fixtures}/RAW-005.json +0 -0
- data/test/{fixtures → maker_fixtures}/RBD-183.json +0 -0
- data/test/fixtures/S-Cute 248_hibiki_07.json b/data/test/maker_fixtures/S-Cute → 248_hibiki_07.json +0 -0
- data/test/fixtures/S-Cute 353_rena_01.json b/data/test/maker_fixtures/S-Cute → 353_rena_01.json +0 -0
- data/test/fixtures/S-Cute ps5_07_rimu.json b/data/test/maker_fixtures/S-Cute → ps5_07_rimu.json +0 -0
- data/test/fixtures/S-Cute ps6_99_reona.json b/data/test/maker_fixtures/S-Cute → ps6_99_reona.json +0 -0
- data/test/fixtures/S-Cute ps7_83_akari2.json b/data/test/maker_fixtures/S-Cute → ps7_83_akari2.json +0 -0
- data/test/fixtures/S-Cute swm_05_risa2.json b/data/test/maker_fixtures/S-Cute → swm_05_risa2.json +0 -0
- data/test/{fixtures → maker_fixtures}/SAD-031.json +0 -0
- data/test/{fixtures → maker_fixtures}/SDDE-312.json +0 -0
- data/test/{fixtures → maker_fixtures}/SDMT-802.json +0 -0
- data/test/{fixtures → maker_fixtures}/SDMU-008.json +0 -0
- data/test/{fixtures → maker_fixtures}/SDNM-011.json +0 -0
- data/test/{fixtures → maker_fixtures}/SET-007.json +0 -0
- data/test/{fixtures → maker_fixtures}/SGA-001.json +1 -0
- data/test/{fixtures → maker_fixtures}/SHKD-415.json +3 -3
- data/test/{fixtures → maker_fixtures}/SNIS-041.json +0 -0
- data/test/{fixtures → maker_fixtures}/SOE-259.json +0 -0
- data/test/{fixtures → maker_fixtures}/SPC-001.json +0 -0
- data/test/{fixtures → maker_fixtures}/SPS-008.json +0 -0
- data/test/{fixtures → maker_fixtures}/SRS-015.json +0 -0
- data/test/{fixtures → maker_fixtures}/SSPD-077.json +0 -0
- data/test/{fixtures → maker_fixtures}/STAR-359.json +0 -0
- data/test/{fixtures → maker_fixtures}/SUPD-065.json +0 -0
- data/test/{fixtures → maker_fixtures}/TDT-018.json +0 -0
- data/test/{fixtures → maker_fixtures}/TMAM-034.json +0 -0
- data/test/{fixtures → maker_fixtures}/TMCY-039.json +0 -0
- data/test/{fixtures → maker_fixtures}/TMDI-040.json +0 -0
- data/test/{fixtures → maker_fixtures}/TMEM-044.json +0 -0
- data/test/{fixtures → maker_fixtures}/TMVI-042.json +0 -0
- data/test/{fixtures → maker_fixtures}/TRD-062.json +0 -0
- data/test/{fixtures → maker_fixtures}/TYOD-232.json +1 -1
- data/test/{fixtures → maker_fixtures}/URE-011.json +0 -0
- data/test/{fixtures → maker_fixtures}/WA-201.json +0 -0
- data/test/{fixtures → maker_fixtures}/WAT-003.json +0 -0
- data/test/{fixtures → maker_fixtures}/WPC-002.json +0 -0
- data/test/{fixtures → maker_fixtures}/WSS-231.json +1 -1
- data/test/{fixtures → maker_fixtures}/XND-023.json +0 -0
- data/test/{fixtures → maker_fixtures}/YRH-008.json +0 -0
- data/test/{fixtures → maker_fixtures}/YRZ-009.json +0 -0
- data/test/{fixtures → maker_fixtures}/ZEX-068.json +0 -0
- metadata +294 -292
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07cd647f8aaa049f14ea6485efb50f227954265c
|
4
|
+
data.tar.gz: 1b086c6958c894635be7435740d06f5dc505e701
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff95d011bdda8bcb5b2ddd0ed5ce0e96efacf253a1a2d0dbf757355accbe3d206480ef15d509d8e27f52fd86831e9d44f57c8b474d7fbc9a377a79d0bd28b686
|
7
|
+
data.tar.gz: fb94f7d85805152bb42e4f23dc3b236eedb5b816f7fe990ad4fec5f6999f806523bf0006d46c23bbac213a50e4c275f02f11bd1814da155299e1993843a6fd58
|
data/.travis.yml
CHANGED
data/Rakefile
CHANGED
@@ -15,7 +15,7 @@ namespace :fixture do
|
|
15
15
|
puts "#{args[:id]} not found"
|
16
16
|
next
|
17
17
|
end
|
18
|
-
File.open(File.join(File.dirname(__FILE__) + "/test/
|
18
|
+
File.open(File.join(File.dirname(__FILE__) + "/test/maker_fixtures/#{args[:id]}.json"), 'w') do |file|
|
19
19
|
puts "Generating #{args[:id]}.json"
|
20
20
|
file.puts JSON.pretty_generate(fixture)
|
21
21
|
end
|
@@ -23,7 +23,7 @@ namespace :fixture do
|
|
23
23
|
|
24
24
|
desc 'Regenerate all fixtures'
|
25
25
|
task :regenerate => :install do
|
26
|
-
Dir[File.dirname(__FILE__) + '/test/
|
26
|
+
Dir[File.dirname(__FILE__) + '/test/maker_fixtures/*.json'].each do |path|
|
27
27
|
File.open(path, 'w') do |file|
|
28
28
|
id = File.basename(path, '.json')
|
29
29
|
puts "Generating #{id}.json"
|
@@ -39,35 +39,43 @@ namespace :maker do
|
|
39
39
|
File.open(File.join(File.dirname(__FILE__) + "/lib/opendmm/makers/#{args[:name].underscore}.rb"), 'w') do |file|
|
40
40
|
puts "Generating #{args[:name].underscore}.rb"
|
41
41
|
file.puts <<-CODE
|
42
|
-
|
43
|
-
module Maker
|
44
|
-
module #{args[:name].underscore.classify}
|
45
|
-
include Maker
|
42
|
+
base_uri 'example.com'
|
46
43
|
|
47
|
-
|
48
|
-
|
49
|
-
|
44
|
+
register_product(
|
45
|
+
/^(EXAM)-?(\d{3})$/i,
|
46
|
+
'#{$1.downcase}#{$2}',
|
47
|
+
)
|
50
48
|
|
51
|
-
|
52
|
-
case name
|
53
|
-
when /^(EXAM)-?(\\d{3})$/i
|
54
|
-
get("/#\{$1.downcase\}#\{$2\}")
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
49
|
+
private
|
58
50
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
51
|
+
def self.parse_product_html(html)
|
52
|
+
{
|
53
|
+
# actresses: Array
|
54
|
+
# actress_types: Array
|
55
|
+
# boobs: String
|
56
|
+
# brand: String
|
57
|
+
# categories: Array
|
58
|
+
# code: String
|
59
|
+
# cover_image: String
|
60
|
+
# description: String
|
61
|
+
# directors: Array
|
62
|
+
# genres: Array
|
63
|
+
# label: String
|
64
|
+
# maker: String
|
65
|
+
# movie_length: String
|
66
|
+
# page: String
|
67
|
+
# release_date: String
|
68
|
+
# sample_images: Array
|
69
|
+
# scenes: Array
|
70
|
+
# series: String
|
71
|
+
# subtitle: String
|
72
|
+
# theme: String
|
73
|
+
# thumbnail_image: String
|
74
|
+
# title: String
|
75
|
+
# __extra: Hash
|
76
|
+
}
|
70
77
|
end
|
78
|
+
|
71
79
|
CODE
|
72
80
|
end
|
73
81
|
end
|
data/bin/opendmm
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
3
|
+
require 'json'
|
4
|
+
require 'optparse'
|
5
|
+
require 'pp'
|
6
|
+
require 'opendmm'
|
7
7
|
|
8
8
|
options = { json: false }
|
9
9
|
OptionParser.new do |opts|
|
10
|
-
opts.on(
|
10
|
+
opts.on('-j', '--[no-]json', 'JSON mode') do |j|
|
11
11
|
options[:json] = j
|
12
12
|
end
|
13
13
|
end.parse!
|
14
14
|
|
15
|
-
details = OpenDMM.search
|
15
|
+
details = OpenDMM.search(ARGV.first, true)
|
16
16
|
if details
|
17
17
|
if options[:json]
|
18
18
|
puts JSON.pretty_generate(details)
|
@@ -20,5 +20,5 @@ if details
|
|
20
20
|
pp details
|
21
21
|
end
|
22
22
|
else
|
23
|
-
puts
|
23
|
+
puts 'Unknown product: ' + ARGV.first
|
24
24
|
end
|
data/lib/opendmm.rb
CHANGED
@@ -1,34 +1,43 @@
|
|
1
1
|
require 'opendmm/version'
|
2
2
|
require 'opendmm/maker'
|
3
|
-
require 'opendmm/
|
4
|
-
require 'opendmm/search_engines/dmm'
|
3
|
+
require 'opendmm/search_engine'
|
5
4
|
|
6
5
|
module OpenDMM
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
6
|
+
# Known fields:
|
7
|
+
#
|
8
|
+
# {
|
9
|
+
# actresses: Array
|
10
|
+
# actress_types: Array
|
11
|
+
# boobs: String
|
12
|
+
# brand: String
|
13
|
+
# categories: Array
|
14
|
+
# code: String
|
15
|
+
# cover_image: String
|
16
|
+
# description: String
|
17
|
+
# directors: Array
|
18
|
+
# genres: Array
|
19
|
+
# label: String
|
20
|
+
# maker: String
|
21
|
+
# movie_length: String
|
22
|
+
# page: String
|
23
|
+
# release_date: String
|
24
|
+
# sample_images: Array
|
25
|
+
# scenes: Array
|
26
|
+
# series: String
|
27
|
+
# subtitle: String
|
28
|
+
# theme: String
|
29
|
+
# thumbnail_image: String
|
30
|
+
# title: String
|
31
|
+
# __extra: Hash
|
32
|
+
# }
|
22
33
|
|
23
|
-
def self.search(name)
|
24
|
-
search
|
25
|
-
rescue
|
34
|
+
def self.search(name, debug = false)
|
35
|
+
Maker.search(name) || SearchEngine::JavLibrary.search(name) || SearchEngine::Dmm.search(name)
|
36
|
+
rescue => e
|
37
|
+
if debug
|
38
|
+
puts e.inspect
|
39
|
+
puts e.backtrace.join("\n")
|
40
|
+
end
|
26
41
|
nil
|
27
42
|
end
|
28
|
-
|
29
|
-
private
|
30
|
-
def self.join_if_relative(page_url, image_url)
|
31
|
-
return nil unless image_url
|
32
|
-
image_url.start_with?('http') ? image_url : URI.join(page_url, image_url).to_s
|
33
|
-
end
|
34
43
|
end
|
data/lib/opendmm/maker.rb
CHANGED
@@ -1,67 +1,12 @@
|
|
1
|
-
require '
|
2
|
-
require 'httparty'
|
3
|
-
require 'logger'
|
4
|
-
require 'nokogiri'
|
5
|
-
require 'opendmm/utils'
|
1
|
+
require 'opendmm/site'
|
6
2
|
|
7
3
|
module OpenDMM
|
8
4
|
module Maker
|
9
|
-
@@makers =
|
10
|
-
|
11
|
-
def self.included(klass)
|
12
|
-
klass.module_eval <<-CODE
|
13
|
-
module Site
|
14
|
-
include HTTParty
|
15
|
-
follow_redirects false
|
16
|
-
|
17
|
-
def self.get(uri)
|
18
|
-
super(uri)
|
19
|
-
rescue Errno::ETIMEDOUT => e
|
20
|
-
tries ||= 0
|
21
|
-
tries++
|
22
|
-
tries <= 5 ? retry : raise
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def self.search(name)
|
27
|
-
item = Site.item(name)
|
28
|
-
Parser.parse(item) if item && item.code == 200
|
29
|
-
end
|
30
|
-
CODE
|
31
|
-
@@makers << klass
|
32
|
-
end
|
33
|
-
|
34
|
-
# Known fields:
|
35
|
-
#
|
36
|
-
# {
|
37
|
-
# actresses: Array
|
38
|
-
# actress_types: Array
|
39
|
-
# boobs: String
|
40
|
-
# brand: String
|
41
|
-
# categories: Array
|
42
|
-
# code: String
|
43
|
-
# cover_image: String
|
44
|
-
# description: String
|
45
|
-
# directors: Array
|
46
|
-
# genres: Array
|
47
|
-
# label: String
|
48
|
-
# maker: String
|
49
|
-
# movie_length: String
|
50
|
-
# page: String
|
51
|
-
# release_date: String
|
52
|
-
# sample_images: Array
|
53
|
-
# scenes: Array
|
54
|
-
# series: String
|
55
|
-
# subtitle: String
|
56
|
-
# theme: String
|
57
|
-
# thumbnail_image: String
|
58
|
-
# title: String
|
59
|
-
# __extra: Hash
|
60
|
-
# }
|
5
|
+
@@makers = Array.new
|
61
6
|
|
62
7
|
def self.search(name)
|
63
8
|
@@makers.each do |maker|
|
64
|
-
result = maker.
|
9
|
+
result = maker.product(name)
|
65
10
|
return result if result
|
66
11
|
end
|
67
12
|
nil
|
@@ -70,5 +15,19 @@ module OpenDMM
|
|
70
15
|
end
|
71
16
|
|
72
17
|
Dir[File.dirname(__FILE__) + '/makers/*.rb'].each do |file|
|
73
|
-
|
18
|
+
module_name = File.basename(file, '.rb').camelize
|
19
|
+
eval <<-MAKER
|
20
|
+
|
21
|
+
module OpenDMM
|
22
|
+
module Maker
|
23
|
+
module #{module_name}
|
24
|
+
include Site
|
25
|
+
#{File.read(file)}
|
26
|
+
end
|
27
|
+
|
28
|
+
@@makers << #{module_name}
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
MAKER
|
74
33
|
end
|
data/lib/opendmm/makers/aknr.rb
CHANGED
@@ -1,38 +1,22 @@
|
|
1
|
-
|
2
|
-
module Maker
|
3
|
-
module Aknr
|
4
|
-
include Maker
|
1
|
+
base_uri 'www.aknr.com'
|
5
2
|
|
6
|
-
|
7
|
-
|
3
|
+
register_product(
|
4
|
+
/^(FSET)-?(\d{3})$/i,
|
5
|
+
'/works/#{$1.downcase}-#{$2}/',
|
6
|
+
)
|
8
7
|
|
9
|
-
|
10
|
-
case name
|
11
|
-
when /^(FSET)-?(\d{3})$/i
|
12
|
-
get("/works/#{$1.downcase}-#{$2}/")
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
8
|
+
private
|
16
9
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
release_date: html.css('//*[@id="info"]/div[2]/div[2]').text,
|
30
|
-
sample_images: html.css('#photo > p > a').map { |a| a['href'] },
|
31
|
-
thumbnail_image: html.at_css('#jktimg_l2 > a > img')['src'],
|
32
|
-
title: html.css('#mainContent2 > h1').text,
|
33
|
-
}
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
10
|
+
def self.parse_product_html(html)
|
11
|
+
{
|
12
|
+
actresses: html.css('//*[@id="info"]/div[3]/div[2]').text.split,
|
13
|
+
cover_image: html.at_css('#jktimg_l2 > a')['href'],
|
14
|
+
directors: html.css('//*[@id="info"]/div[4]/div[2]').text.split,
|
15
|
+
maker: 'AKNR',
|
16
|
+
movie_length: html.css('//*[@id="info"]/div[6]/div[2]').text,
|
17
|
+
release_date: html.css('//*[@id="info"]/div[2]/div[2]').text,
|
18
|
+
sample_images: html.css('#photo > p > a').map { |a| a['href'] },
|
19
|
+
thumbnail_image: html.at_css('#jktimg_l2 > a > img')['src'],
|
20
|
+
title: html.css('#mainContent2 > h1').text,
|
21
|
+
}
|
38
22
|
end
|
data/lib/opendmm/makers/ako3.rb
CHANGED
@@ -1,38 +1,22 @@
|
|
1
|
-
|
2
|
-
module Maker
|
3
|
-
module Ako3
|
4
|
-
include Maker
|
1
|
+
base_uri 'www.ako-3.com'
|
5
2
|
|
6
|
-
|
7
|
-
|
3
|
+
register_product(
|
4
|
+
/^(AKO)-?(\d{3})$/i,
|
5
|
+
'/work/item.php?itemcode=#{$1.upcase}#{$2}',
|
6
|
+
)
|
8
7
|
|
9
|
-
|
10
|
-
case name
|
11
|
-
when /^(AKO)-?(\d{3})$/i
|
12
|
-
get("/work/item.php?itemcode=#{$1.upcase}#{$2}")
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
8
|
+
private
|
16
9
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
release_date: specs['配信日'],
|
30
|
-
sample_images: html.css('ul.sampleimg li a').map { |a| a['href'] },
|
31
|
-
thumbnail_image: html.at_css('#title-area > div > div.jacket > a > img')['src'],
|
32
|
-
title: html.css('div.maintitle').text,
|
33
|
-
}
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
10
|
+
def self.parse_product_html(html)
|
11
|
+
specs = Utils.hash_by_split(html.css('div#spec-area > div.release').map(&:text))
|
12
|
+
{
|
13
|
+
actresses: [ html.css('//*[@id="spec-area"]/div[2]').text ],
|
14
|
+
cover_image: html.at_css('div.jacket a')['href'],
|
15
|
+
description: html.css('div#caption').text,
|
16
|
+
maker: specs['メーカー'],
|
17
|
+
release_date: specs['配信日'],
|
18
|
+
sample_images: html.css('ul.sampleimg li a').map { |a| a['href'] },
|
19
|
+
thumbnail_image: html.at_css('#title-area > div > div.jacket > a > img')['src'],
|
20
|
+
title: html.css('div.maintitle').text,
|
21
|
+
}
|
38
22
|
end
|
@@ -1,40 +1,24 @@
|
|
1
|
-
|
2
|
-
module Maker
|
3
|
-
module AnnaAndHanako
|
4
|
-
include Maker
|
1
|
+
base_uri 'anna-and-hanako.jp'
|
5
2
|
|
6
|
-
|
7
|
-
|
3
|
+
register_product(
|
4
|
+
/^(ANND)-?(\d{3})$/i,
|
5
|
+
'/works/#{$1.downcase}/#{$1.downcase}#{$2}.html',
|
6
|
+
)
|
8
7
|
|
9
|
-
|
10
|
-
case name
|
11
|
-
when /^(ANND)-?(\d{3})$/i
|
12
|
-
get("/works/#{$1.downcase}/#{$1.downcase}#{$2}.html")
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
8
|
+
private
|
16
9
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
release_date: specs['発売日'],
|
32
|
-
sample_images: html.xpath('//*[@id="mein-sanpuru-sam"]/a').map { |a| a['href'] },
|
33
|
-
thumbnail_image: html.at_xpath('//*[@id="pake-bottom-box"]/dl/a/img')['src'],
|
34
|
-
title: html.xpath('//*[@id="mein-left-new-release-box"]/div/div/h5').text,
|
35
|
-
}
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
10
|
+
def self.parse_product_html(html)
|
11
|
+
specs = Utils.hash_by_split(html.xpath('//*[@id="pake-bottom-box_r"]/dl/p').map(&:text))
|
12
|
+
{
|
13
|
+
actresses: specs['出演者'].split('/'),
|
14
|
+
cover_image: html.at_xpath('//*[@id="pake-bottom-box"]/dl/a')['href'],
|
15
|
+
description: html.xpath('//*[@id="txt-bottom-box"]').text,
|
16
|
+
directors: specs['監督'].split('/'),
|
17
|
+
maker: 'アンナと花子',
|
18
|
+
movie_length: specs['収録時間'],
|
19
|
+
release_date: specs['発売日'],
|
20
|
+
sample_images: html.xpath('//*[@id="mein-sanpuru-sam"]/a').map { |a| a['href'] },
|
21
|
+
thumbnail_image: html.at_xpath('//*[@id="pake-bottom-box"]/dl/a/img')['src'],
|
22
|
+
title: html.xpath('//*[@id="mein-left-new-release-box"]/div/div/h5').text,
|
23
|
+
}
|
40
24
|
end
|