panchira 1.3.2 → 1.3.6

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
  SHA256:
3
- metadata.gz: 4b6ab5f09a68a55d7fa54720b6ed5544605c5b4fa25ff839583058ac3af5611b
4
- data.tar.gz: 22814f2437ac515c59d22a634c4709212eb639735a831157b7a64375559c1cf1
3
+ metadata.gz: 56602175dff2975d0d6f606c31da48b8cf904c61aa98d8f0e6d940ef4c1d230d
4
+ data.tar.gz: b1ceb998bb60dafbb5b992ad156192d6ea2f58fec8ee606aac3d1d88ebe9b1b0
5
5
  SHA512:
6
- metadata.gz: a2a42f6023db6ce19d076079044c6fd88e49870478590d89ad25810dd3b72e72439627b416bd3d439d78ab8eaa72683746617fe565f441e69a758811e4b50023
7
- data.tar.gz: 6f4573bf646ea21d9d5887ee67a1e95e275e6b1de6d152d4c096c7b8a4e70fa29409143a8a00af0c32f6a1e023f4b0a5c84a30d50fd789dc5f6822cb161cd0ed
6
+ metadata.gz: 5909d32a1231288cc8567ada0a58fb038d1eaf8424ac9ff3b4298dd81b3f95651217ddb3b5b39e24834174abbc7bfd454d083836a0889df2188df511600f7a49
7
+ data.tar.gz: 0f8d01c68ceb44f10ef06d274667e8acd254254987056e25624d2a3f58de0e05fc95a07002b3cb7d0d8a207461bf6f0a96c211714fed015eadc3e9673eb17699
@@ -16,7 +16,7 @@ on:
16
16
  jobs:
17
17
  test:
18
18
 
19
- runs-on: ubuntu-latest
19
+ runs-on: ubuntu-18.04
20
20
 
21
21
  steps:
22
22
  - uses: actions/checkout@v2
data/CHANGELOG.md CHANGED
@@ -4,10 +4,35 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
+ ## 1.3.6 - 2021-10-19
8
+ ### Added
9
+ - Added support for Twitter.
10
+
11
+ ### Changed
12
+ - Melonbooks Resolver now returns image URI without resizing queries.
13
+
14
+ ## 1.3.5 - 2021-09-01
15
+ ### Added
16
+ - Added support for Pixiv Novel.
17
+
18
+ ### Fixed
19
+ - Fixed an issue where Image Resolver missed image scales.
20
+
21
+ ## 1.3.4 - 2021-07-26
22
+ ### Fixed
23
+ - Fixed an issue where Iwara Resolver failed when a description was present.
24
+
25
+ ## 1.3.3 - 2021-07-25
26
+ ### Added
27
+ - Added support for Iwara.
28
+
29
+ ### Fixed
30
+ - Fixed an issue where DLsite Resolver was retrieving wrong tags.
31
+
7
32
  ## 1.3.2 - 2021-05-23
8
33
  ### Fixed
9
- - Fixed an issue where Fanza Resolver was retrieving incorrect cannonical URLs from meta tags.
10
- - Fixed an issue where Narou Resolver retrieved wrong descriptions from meta tags.
34
+ - Fixed an issue where Fanza Resolver was retrieving incorrect canonical URLs.
35
+ - Fixed an issue where Narou Resolver was retrieving wrong descriptions.
11
36
 
12
37
  ### Changed
13
38
  - Updated dependencies.
@@ -79,6 +104,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
79
104
  ### Added
80
105
  - Released Panchira gem. At this time we can parse only 5 websites.
81
106
 
107
+ [1.3.5]: https://github.com/nuita/panchira/releases/tag/v1.3.5
108
+ [1.3.4]: https://github.com/nuita/panchira/releases/tag/v1.3.4
109
+ [1.3.3]: https://github.com/nuita/panchira/releases/tag/v1.3.3
110
+ [1.3.2]: https://github.com/nuita/panchira/releases/tag/v1.3.2
82
111
  [1.3.1]: https://github.com/nuita/panchira/releases/tag/v1.3.1
83
112
  [1.3.0]: https://github.com/nuita/panchira/releases/tag/v1.3.0
84
113
  [1.2.0]: https://github.com/nuita/panchira/releases/tag/v1.2.0
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- panchira (1.3.2)
4
+ panchira (1.3.6)
5
5
  fastimage (~> 2.1.7)
6
- nokogiri (>= 1.10.9, < 1.12.0)
6
+ nokogiri (>= 1.10.9, < 1.13.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -11,7 +11,7 @@ GEM
11
11
  ast (2.4.2)
12
12
  fastimage (2.1.7)
13
13
  minitest (5.14.4)
14
- nokogiri (1.11.5-x86_64-darwin)
14
+ nokogiri (1.11.7-x86_64-darwin)
15
15
  racc (~> 1.4)
16
16
  parallel (1.20.1)
17
17
  parser (3.0.1.1)
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  Due to some legal or ethical issues, most hentai and NSFW platforms don't clarify their content on meta tags. As a result, most hentai platforms are rendered poorly on the card previews on social media.
8
8
 
9
- To solve this issue, Panchira is made to parse correct and uncensored metadata from such web platforms (at this time we cover **DLSite, Komiflo, Melonbooks, Nijie, Pixiv, Shousetsuka ni narou, Fanza and Twitter**).
9
+ To solve this issue, Panchira is made to parse correct and uncensored metadata from such web platforms (at this time we cover **DLSite, Komiflo, Melonbooks, Nijie, Pixiv, Shousetsuka ni narou, Fanza, Iwara and Twitter**).
10
10
 
11
11
  If you need card previews of hentai on your web application, but can't get them with simply parsing metatags, then it is time for Panchira.
12
12
 
@@ -39,7 +39,13 @@ module Panchira
39
39
  end
40
40
 
41
41
  def parse_tags
42
- @page.css('.main_genre').children.children.map(&:text)
42
+ @page.css('table[id*="work_"] tr').each do |tr|
43
+ next unless tr.css('th').text =~ /ジャンル/
44
+
45
+ return tr.css('td a').map do |node|
46
+ node.text.strip
47
+ end
48
+ end
43
49
  end
44
50
  end
45
51
 
@@ -9,6 +9,8 @@ module Panchira
9
9
  result.canonical_url = @url
10
10
  result.image = PanchiraImage.new
11
11
  result.image.url = @url
12
+ result.image.width, result.image.height = FastImage.size(result.image.url)
13
+
12
14
  result.resolver = parse_resolver
13
15
  result
14
16
  end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Panchira
4
+ class IwaraResolver < Resolver
5
+ URL_REGEXP = /(www|ecchi)\.iwara\.tv\//.freeze
6
+
7
+ private
8
+ def parse_title
9
+ super.split(' | ')[0]
10
+ end
11
+
12
+ def parse_image_url
13
+ url = @page.at_css('#video-player')&.attributes['poster']&.value
14
+ 'https:' + url if url
15
+ end
16
+
17
+ def parse_author
18
+ @page.at_css('.node-info .username')&.children&.[](0)&.text
19
+ end
20
+
21
+ def parse_tags
22
+ @page.css('.field-name-field-categories .field-item').map { |e| e.children&.text }
23
+ end
24
+
25
+ def parse_description
26
+ @page.at_css('.field-name-body')&.text
27
+ end
28
+
29
+ def cookie
30
+ 'show_adult=1'
31
+ end
32
+
33
+ def parse_canonical_url
34
+ @url # canonical has relative path. ignore it
35
+ end
36
+ end
37
+
38
+ ::Panchira::Extensions.register(Panchira::IwaraResolver)
39
+ end
@@ -57,7 +57,10 @@ module Panchira
57
57
  end
58
58
 
59
59
  def parse_image_url
60
- @page.css('//meta[property="og:image"]/@content').first.to_s.sub(/&c=1/, '')
60
+ url = @page.css('//meta[property="og:image"]/@content').first.to_s
61
+ image = url.match(/resize_image.php\?image=([^&]+)/)[1]
62
+
63
+ "https://melonbooks.akamaized.net/user_data/packages/resize_image.php?image=#{image}"
61
64
  end
62
65
 
63
66
  def parse_tags
@@ -37,6 +37,11 @@ module Panchira
37
37
  # つらい。
38
38
  @desc&.xpath('//*[@id="noveltable1"]/tr[3]')&.text&.split("\n\n\n")&.dig(1)&.split(' ')
39
39
  end
40
+
41
+ # og:urlで指定されたncode.syosetu.com/~~~にアクセスすると301で戻されるので何もしない
42
+ def parse_canonical_url
43
+ @url
44
+ end
40
45
  end
41
46
 
42
47
  class NcodeResolver < Resolver
@@ -63,6 +68,11 @@ module Panchira
63
68
  # めっちゃつらい。
64
69
  @desc&.xpath('//*[@id="noveltable1"]/tr[3]')&.text&.split("\n\n\n")&.dig(1)&.delete("\u00A0")&.split(' ')&.grep_v('')
65
70
  end
71
+
72
+ # og:urlで指定されたncode.syosetu.com/~~~にアクセスすると301で戻されるので何もしない
73
+ def parse_canonical_url
74
+ @url
75
+ end
66
76
  end
67
77
  end
68
78
 
@@ -44,5 +44,32 @@ module Panchira
44
44
  end
45
45
  end
46
46
 
47
+ class PixivNovelResolver < Resolver
48
+ URL_REGEXP = %r{pixiv\.net/novel/show.php\?id=(\d+)}.freeze
49
+
50
+ def initialize(url)
51
+ super(url)
52
+ @novel_id = url.slice(URL_REGEXP, 1)
53
+
54
+ raw_json = URI.parse("https://www.pixiv.net/ajax/novel/#{@novel_id}").read('User-Agent' => user_agent)
55
+ @json = JSON.parse(raw_json)
56
+ end
57
+
58
+ private
59
+
60
+ def parse_title
61
+ @json['body']['title']
62
+ end
63
+
64
+ def parse_author
65
+ @json['body']['userName']
66
+ end
67
+
68
+ def parse_tags
69
+ @json['body']['tags']['tags'].map { |content| content['tag'] }
70
+ end
71
+ end
72
+
47
73
  ::Panchira::Extensions.register(Panchira::PixivResolver)
74
+ ::Panchira::Extensions.register(Panchira::PixivNovelResolver)
48
75
  end
@@ -67,17 +67,20 @@ module Panchira
67
67
  # fetch page and refresh canonical_url until canonical_url converges.
68
68
  loop do
69
69
  url_in_res = @page.css('//link[rel="canonical"]/@href').to_s
70
+ if url_in_res.empty?
71
+ url_in_res = @page.css('//meta[property="og:url"]/@content').to_s
72
+ end
70
73
 
71
74
  if url_in_res.empty?
72
75
  return history.last || @url
73
- else
74
- if history.include?(url_in_res) || history.length > 5
75
- return url_in_res
76
- else
77
- history.push(url_in_res)
78
- @page = fetch_page(url_in_res)
79
- end
80
76
  end
77
+
78
+ if history.include?(url_in_res) || history.length > 5
79
+ return url_in_res
80
+ end
81
+
82
+ history.push(url_in_res)
83
+ @page = fetch_page(url_in_res)
81
84
  end
82
85
  end
83
86
 
@@ -0,0 +1,24 @@
1
+ module Panchira
2
+ class TwitterResolver < Resolver
3
+ URL_REGEXP = /twitter.com\/\w+\/status\/\d+/.freeze
4
+
5
+ private
6
+ def parse_title
7
+ @title = super
8
+ end
9
+
10
+ def parse_author
11
+ @title.match(/\A(.+) on Twitter\z/)[1]
12
+ end
13
+
14
+ def parse_description
15
+ @description = super.gsub(/\A“|”\z/, '')
16
+ end
17
+
18
+ def parse_tags
19
+ @description.scan(/[##]([^##\s]+)/).map(&:first)
20
+ end
21
+ end
22
+
23
+ ::Panchira::Extensions.register(Panchira::TwitterResolver)
24
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Panchira
4
- VERSION = '1.3.2'
4
+ VERSION = '1.3.6'
5
5
  end
data/panchira.gemspec CHANGED
@@ -40,5 +40,5 @@ Gem::Specification.new do |spec|
40
40
  spec.add_development_dependency 'rubocop-minitest', '~> 0.10'
41
41
 
42
42
  spec.add_dependency 'fastimage', '~> 2.1.7'
43
- spec.add_dependency 'nokogiri', '>= 1.10.9', '< 1.12.0'
43
+ spec.add_dependency 'nokogiri', '>= 1.10.9', '< 1.13.0'
44
44
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: panchira
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - kyp
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-23 00:00:00.000000000 Z
11
+ date: 2021-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -103,7 +103,7 @@ dependencies:
103
103
  version: 1.10.9
104
104
  - - "<"
105
105
  - !ruby/object:Gem::Version
106
- version: 1.12.0
106
+ version: 1.13.0
107
107
  type: :runtime
108
108
  prerelease: false
109
109
  version_requirements: !ruby/object:Gem::Requirement
@@ -113,7 +113,7 @@ dependencies:
113
113
  version: 1.10.9
114
114
  - - "<"
115
115
  - !ruby/object:Gem::Version
116
- version: 1.12.0
116
+ version: 1.13.0
117
117
  description: |2
118
118
  Panchira allows you to parse attributes of hentais on some web platforms, such as Pixiv and DLSite.
119
119
  If you need card previews on hentai but can't get it with simply parsing metatags, then it is time for Panchira.
@@ -141,12 +141,14 @@ files:
141
141
  - lib/panchira/resolvers/dlsite_resolver.rb
142
142
  - lib/panchira/resolvers/fanza_resolver.rb
143
143
  - lib/panchira/resolvers/image_resolver.rb
144
+ - lib/panchira/resolvers/iwara_resolver.rb
144
145
  - lib/panchira/resolvers/komiflo_resolver.rb
145
146
  - lib/panchira/resolvers/melonbooks_resolver.rb
146
147
  - lib/panchira/resolvers/narou_resolver.rb
147
148
  - lib/panchira/resolvers/nijie_resolver.rb
148
149
  - lib/panchira/resolvers/pixiv_resolver.rb
149
150
  - lib/panchira/resolvers/resolver.rb
151
+ - lib/panchira/resolvers/twitter_resolver.rb
150
152
  - lib/panchira/version.rb
151
153
  - panchira.gemspec
152
154
  homepage: https://github.com/nuita/panchira