opendmm 0.3.13 → 0.3.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 701fa60b6dd5cc694189dca3475006dc0cdd6dfa
4
- data.tar.gz: 9e90616e315b880e66b02f2ef87e06451bf97f1c
3
+ metadata.gz: a1e4ce4de84ed824a52ef0cbcc7f8f283416c350
4
+ data.tar.gz: 7cb7833f536b5910fc95dc5664e98d3fd68bac4c
5
5
  SHA512:
6
- metadata.gz: 539281d3c1eeae71313283288ed40e54239d566ae475b53dd1e3ac61dc52889b41e47bbc5e0306468f3f66522ded6a346805e43ee746fb44c0dd67bea1362199
7
- data.tar.gz: f6e41dcd7d381485e4aeba674b6b9f9091663a668ab6a2193e5c1909e39acfe2c40e28cac0942d03efb4cfb5ff5442ffb106f1837a9bfb5289366b4d904dc052
6
+ metadata.gz: 0a7d2a36aeaed161acc142b72e256e23f956054b430343cc0c0f3a8d1acf00ad13c17f7d60e785da6ae08f36f0d2ecd23db1c23fde5f42b47e29fc34ffbec2db
7
+ data.tar.gz: 9220d0acb41fa31ab003343920577627e603856aad04a851ed53bf3100fc86b21864d1bdacca6389d13e12ef2e4f7b86d26da2250d354c1d93e1c10c0ae923d6
@@ -8,19 +8,17 @@ register_product(
8
8
  private
9
9
 
10
10
  def self.parse_product_html(html)
11
- specs = Utils.hash_by_split(html.css('#work-detail > h4, p').map(&:text))
11
+ specs = Utils.hash_from_dl(html.css('div.wrap-maincontents > section.wrap-information > div.wrap-detail > div.wrap-detail-text > dl.wrap-detail-item'))
12
12
  {
13
- actresses: specs['出演女優'].split('/'),
14
- cover_image: html.at_css('#work-pake')['src'].gsub(/pm.jpg$/, 'pl.jpg'),
15
- description: html.css('#work-detail > h5').text,
16
- directors: specs['監督'].split,
17
- genres: specs['ジャンル'].split,
18
- label: specs['レーベル'],
13
+ actresses: specs['出演女優'].text.try(:split, '/'),
14
+ cover_image: html.css('#wrap-detail-slider > ul.bx-detail-slider > li > img').first['src'],
15
+ description: html.css('div.wrap-maincontents > section.wrap-information > div.wrap-detail > div.wrap-detail-text > div.wrap-detail-description').text,
16
+ genres: specs['ジャンル'].text.try(:split),
19
17
  maker: '溜池ゴロー',
20
- release_date: specs['発売日'].remove('DVD/'),
21
- sample_images: html.css('#sample-pic > a > img').map { |img| img['src'].gsub(/js(?=-\d+\.jpg)/, 'jp') },
22
- series: specs['シリーズ'],
23
- thumbnail_image: html.at_css('#work-pake')['src'],
24
- title: html.css('#work-detail > h3').text,
18
+ release_date: specs['発売日'].text,
19
+ series: specs['シリーズ'].text,
20
+ sample_images: html.css('#wrap-detail-slider > ul.bx-detail-slider > li > img')[1..-1].map { |img| img['src'] },
21
+ thumbnail_image: html.css('#wrap-detail-slider > ul.bx-detail-slider > li > img').first['src'],
22
+ title: html.css('div.wrap-maincontents > section.wrap-information > div.bx-index > h2').text,
25
23
  }
26
24
  end
@@ -1,18 +1,21 @@
1
1
  base_uri 'www.dmm.co.jp'
2
2
 
3
- def self.search_url(name)
3
+ def self.search_url(name, digit_len)
4
4
  name = name.split(/(?<=[a-z])(?=\d)|[-_\s]/).map do |token|
5
- token =~ /^\d{1,4}$/ ? sprintf("%05d", token.to_i) : token
6
- end.join(' ')
5
+ token =~ /^\d+$/ ? token.rjust(digit_len, '0') : token
6
+ end.join
7
7
  "/search/=/searchstr=#{CGI::escape(name)}"
8
8
  end
9
9
 
10
10
  def self.product_url(name)
11
- search_page = get_with_retry search_url(name)
12
- return nil unless search_page
13
- search_html = Utils.html_in_utf8 search_page
14
- first_result = search_html.at_css('#list > li > div > p.tmb > a')
15
- first_result['href'] if first_result
11
+ 5.downto(3) do |len|
12
+ search_page = get_with_retry search_url(name, len)
13
+ next unless search_page
14
+ search_html = Utils.html_in_utf8 search_page
15
+ first_result = search_html.at_css('#list > li > div > p.tmb > a')
16
+ return first_result['href'] if first_result
17
+ end
18
+ nil
16
19
  end
17
20
 
18
21
  def self.product_extra_info(name, url, page, html)
@@ -20,24 +23,28 @@ def self.product_extra_info(name, url, page, html)
20
23
  if dmm_id =~ /\d*([a-z]+)0*(\d+)/i
21
24
  dmm_id = "#{$1.upcase}-#{$2.rjust(3, '0')}"
22
25
  end
23
- { code: dmm_id }
26
+ {
27
+ code: dmm_id,
28
+ maker: 'DMM',
29
+ }
24
30
  end
25
31
 
26
32
  private
27
33
 
28
34
  def self.parse_product_html(html)
29
- specs = Utils.hash_by_split(html.css('//*[@id="mu"]/div/table/tr/td[1]/table/tr').map(&:text))
35
+ specs = Utils.hash_by_split(html.css('//div[@class="page-detail"]/table/tr/td[1]/table/tr').map(&:text))
30
36
  {
31
- actresses: specs['出演者'].split(/[\s\/]/),
32
- cover_image: html.at_css('#sample-video > a')['href'],
33
- directors: specs['監督'].split,
34
- genres: specs['ジャンル'].split,
37
+ actresses: (specs['出演者'] || specs['名前']).try(:split, /[\s\/]/),
38
+ cover_image: (html.at_css('#sample-video > a').try(:[], 'href') ||
39
+ html.at_css('#sample-video > img').try(:[], 'src')),
40
+ directors: specs['監督'].try(:split),
41
+ genres: specs['ジャンル'].try(:split),
35
42
  label: specs['レーベル'],
36
43
  maker: specs['メーカー'],
37
44
  movie_length: specs['収録時間'],
38
- release_date: specs['商品発売日'],
45
+ release_date: (specs['商品発売日'] || specs['配信開始日']),
39
46
  series: specs['シリーズ'],
40
- thumbnail_image: html.at_css('#sample-video > a > img')['src'],
47
+ thumbnail_image: html.at_css('#sample-video img').try(:[], 'src'),
41
48
  title: html.css('#title').text,
42
49
  }
43
50
  end
@@ -27,7 +27,7 @@ def self.parse_product_html(html)
27
27
  # boobs: String
28
28
  # brand: String
29
29
  # categories: Array
30
- code: specs['品番:'].text,
30
+ code: parse_code(specs['品番:'].text),
31
31
  cover_image: html.at_css('#EnlargeImage')['href'],
32
32
  description: html.css('#introduction_text > p.introduction').text,
33
33
  # directors: Array
@@ -46,3 +46,7 @@ def self.parse_product_html(html)
46
46
  title: html.css('.title_detail_layout h1').text,
47
47
  }
48
48
  end
49
+
50
+ def self.parse_code(str)
51
+ str =~ /^\d+(\w+-\d+)$/ ? $1 : str
52
+ end
@@ -1,3 +1,3 @@
1
1
  module OpenDMM
2
- VERSION = '0.3.13'
2
+ VERSION = '0.3.14'
3
3
  end
@@ -0,0 +1,21 @@
1
+ {
2
+ "actresses": [
3
+ "佐藤友里恵(27)"
4
+ ],
5
+ "code": "KHY-009",
6
+ "cover_image": "http://pics.dmm.co.jp/digital/amateur/khy009/yurie07081jp.jpg",
7
+ "genres": [
8
+ "ごっくん",
9
+ "フェラ",
10
+ "縛り・緊縛",
11
+ "痴女",
12
+ "巻き髪"
13
+ ],
14
+ "label": "恋する花嫁",
15
+ "maker": "DMM",
16
+ "movie_length": 4500,
17
+ "page": "http://www.dmm.co.jp/ppm/videoc/-/detail/=/cid=khy009/",
18
+ "release_date": "2010-12-10",
19
+ "thumbnail_image": "http://pics.dmm.co.jp/digital/amateur/khy009/yurie07081jp.jpg",
20
+ "title": "佐藤友里恵"
21
+ }
@@ -5,16 +5,12 @@
5
5
  "code": "MDYD-544",
6
6
  "cover_image": "http://tameikegoro.jp/images/works/mdyd544/mdyd544pl.jpg",
7
7
  "description": "新しく来た家政婦玲子の爆乳に見惚れてしまう男が彼女を言いくるめてむっちりとたわわな爆乳を弄びまくる。ボディオイルやローションを使ったり、胸を使ってマッサージさせたり、執拗にパイズリやフェラで奉仕させる。そして男の不在に家に侵入した泥棒は目隠し&拘束された玲子の痴態を発見する。そして…。",
8
- "directors": [
9
- "溜池ゴロー"
10
- ],
11
8
  "genres": [
12
- "パイズリ",
13
- "バイブ・ローター",
14
- "フェラ",
15
- "巨乳・爆乳",
16
9
  "美熟女",
17
- "複数プレー"
10
+ "巨乳・爆乳",
11
+ "フェラ",
12
+ "おもちゃ",
13
+ "パイズリ"
18
14
  ],
19
15
  "maker": "溜池ゴロー",
20
16
  "page": "http://tameikegoro.jp/works/-/detail/=/cid=mdyd544",
@@ -30,6 +26,6 @@
30
26
  "http://tameikegoro.jp/images/works/mdyd544/mdyd544jp-8.jpg"
31
27
  ],
32
28
  "series": "弄ばれた家政婦の○○",
33
- "thumbnail_image": "http://tameikegoro.jp/images/works/mdyd544/mdyd544pm.jpg",
29
+ "thumbnail_image": "http://tameikegoro.jp/images/works/mdyd544/mdyd544pl.jpg",
34
30
  "title": "弄ばれた家政婦の乳"
35
31
  }
@@ -6,9 +6,6 @@
6
6
  "code": "MDYD-863",
7
7
  "cover_image": "http://tameikegoro.jp/images/works/mdyd863/mdyd863pl.jpg",
8
8
  "description": "夫の転勤を機に引っ越して来たこはるは、不在がちな夫にも我慢する健気な若妻。隣人の主婦・千里も、彼女に優しい。しかし、彼女の真の目的はこはるの身体。執拗なまでにこはるの躰を弄ぶ千里、戸惑いながらも、いつしか千里の与える快楽が忘れられない自分に気づくこはるは、禁断の世界へ堕ちてゆく…。",
9
- "directors": [
10
- "前田文豪"
11
- ],
12
9
  "genres": [
13
10
  "人妻",
14
11
  "痴女",
@@ -27,6 +24,6 @@
27
24
  "http://tameikegoro.jp/images/works/mdyd863/mdyd863jp-7.jpg",
28
25
  "http://tameikegoro.jp/images/works/mdyd863/mdyd863jp-8.jpg"
29
26
  ],
30
- "thumbnail_image": "http://tameikegoro.jp/images/works/mdyd863/mdyd863pm.jpg",
27
+ "thumbnail_image": "http://tameikegoro.jp/images/works/mdyd863/mdyd863pl.jpg",
31
28
  "title": "美熟女にレズレイプで堕とされた若妻"
32
29
  }
@@ -0,0 +1,19 @@
1
+ {
2
+ "actresses": [
3
+ "音羽レオン"
4
+ ],
5
+ "code": "OAM-002",
6
+ "cover_image": "http://image.mgstage.com/images/opus/011oam/002/pb_e_011oam-002.jpg",
7
+ "description": "新企画第二弾!!",
8
+ "genres": [
9
+ "企画",
10
+ "女優"
11
+ ],
12
+ "maker": "オプス",
13
+ "movie_length": 7200,
14
+ "page": "http://www.mgstage.com/ppv/video/011OAM-002/",
15
+ "release_date": "2010-08-23",
16
+ "series": "はじまりはいつもフェラ",
17
+ "thumbnail_image": "http://image.mgstage.com/images/opus/011oam/002/pf_o1_011oam-002.jpg",
18
+ "title": "はじまりはいつもフェラ -音羽 レオン-"
19
+ }
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: 0.3.13
4
+ version: 0.3.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jun Zhou
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-07 00:00:00.000000000 Z
11
+ date: 2014-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -173,6 +173,7 @@ files:
173
173
  - test/av_entertainments_fixtures/SKYHD-108.json
174
174
  - test/av_entertainments_fixtures/sky107.json
175
175
  - test/dmm_fixtures/DMYJ-001.json
176
+ - test/dmm_fixtures/KHY-009.json
176
177
  - test/dmm_fixtures/RKI-294.json
177
178
  - test/dmm_fixtures/dmyj00001.json
178
179
  - test/dmm_fixtures/dmyj001.json
@@ -352,6 +353,7 @@ files:
352
353
  - test/maker_fixtures/YRZ-009.json
353
354
  - test/maker_fixtures/YUM-001.json
354
355
  - test/maker_fixtures/ZEX-068.json
356
+ - test/mgstage_fixtures/011OAM-002.json
355
357
  - test/mgstage_fixtures/SIRO-1088.json
356
358
  - test/mgstage_fixtures/siro1088.json
357
359
  homepage:
@@ -383,6 +385,7 @@ test_files:
383
385
  - test/av_entertainments_fixtures/SKYHD-108.json
384
386
  - test/av_entertainments_fixtures/sky107.json
385
387
  - test/dmm_fixtures/DMYJ-001.json
388
+ - test/dmm_fixtures/KHY-009.json
386
389
  - test/dmm_fixtures/RKI-294.json
387
390
  - test/dmm_fixtures/dmyj00001.json
388
391
  - test/dmm_fixtures/dmyj001.json
@@ -562,5 +565,6 @@ test_files:
562
565
  - test/maker_fixtures/YRZ-009.json
563
566
  - test/maker_fixtures/YUM-001.json
564
567
  - test/maker_fixtures/ZEX-068.json
568
+ - test/mgstage_fixtures/011OAM-002.json
565
569
  - test/mgstage_fixtures/SIRO-1088.json
566
570
  - test/mgstage_fixtures/siro1088.json