panchira 1.3.3 → 1.4.0

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: 6efe3f2eddf6984db580aebed3d142e7ba8cab9df8b5f69742b9692d62b83dc5
4
- data.tar.gz: d86faa63aeb5cf4b963a420575f8522dbd4f079f91af23b03e0ff8e79dc026fc
3
+ metadata.gz: 87af8a25ccd6d841b133aaa28ce7853c0111ae0ce4768f287a1f9a8a09eec148
4
+ data.tar.gz: 93233eca9a9fd019fb82aafbd1e97630aa242d1645d2e2306fee52d1812aa144
5
5
  SHA512:
6
- metadata.gz: 0ab350c44ea6e8374926f4cea197320bdfb65b5f243c70f3943a775e32b8bc75c26910380326face1fc1a157d03b78f8d81fe5f5eda26b7516d55d13edda3ec9
7
- data.tar.gz: 272f6e3deea2b6e0e1f678c32e1e3e00dddb10d2fa74626ff6e5fe5787864ec76f054d1679448e0b174ba34aba600d1c923606336690f2a7f7b7d60353054668
6
+ metadata.gz: 42e8539356b8c73b8cced17cdaec2452960f17175736a004702c37e7370f407ea995504a07e2b060c53f52629f42cb247e34080d9e54c52a07158fddb5e427c1
7
+ data.tar.gz: 4b1746f991ba2353304c96e3297efca0a45ba0e3d9c908f653e72aa6920de3654f2714235d24037de591699287bf0c027b0720d6e2741cf3ef6a6e5ae1add95a
@@ -9,22 +9,25 @@ name: Ruby
9
9
 
10
10
  on:
11
11
  push:
12
- branches: [ master ]
12
+ branches: [master]
13
13
  pull_request:
14
- branches: [ master ]
14
+ branches: [master]
15
15
 
16
16
  jobs:
17
17
  test:
18
-
19
18
  runs-on: ubuntu-18.04
20
-
19
+ strategy:
20
+ fail-fast: false
21
+ matrix:
22
+ ruby: ["2.7", "3.0"]
23
+ name: Ruby ${{ matrix.ruby }}
21
24
  steps:
22
- - uses: actions/checkout@v2
23
- - name: Set up Ruby
24
- uses: ruby/setup-ruby@v1
25
- with:
26
- ruby-version: 2.6
27
- - name: Install dependencies
28
- run: bundle install
29
- - name: Run tests
30
- run: bundle exec rake test
25
+ - uses: actions/checkout@v2
26
+ - name: Set up Ruby
27
+ uses: ruby/setup-ruby@v1
28
+ with:
29
+ ruby-version: ${{ matrix.ruby }}
30
+ - name: Install dependencies
31
+ run: bundle install
32
+ - name: Run tests
33
+ run: bundle exec rake test
data/.rubocop.yml CHANGED
@@ -4,7 +4,7 @@ require:
4
4
  - rubocop-minitest
5
5
 
6
6
  AllCops:
7
- TargetRubyVersion: 2.6
7
+ TargetRubyVersion: 2.7
8
8
  NewCops: enable
9
9
  Exclude:
10
10
  - bin/*
@@ -27,7 +27,7 @@ Lint/AssignmentInCondition:
27
27
  Enabled: false
28
28
 
29
29
  Lint/MissingSuper:
30
- Exclude:
30
+ Exclude:
31
31
  - lib/panchira/resolvers/*
32
32
 
33
33
  Style/AsciiComments:
data/CHANGELOG.md CHANGED
@@ -4,9 +4,37 @@ 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.4.0 - 2022-01-10
8
+ ### Added
9
+ - Added support for non-Japanese pixiv URLs.
10
+
11
+ ### Fixed
12
+ - Fixed an issue where Nijie Resolver failed to fetch image.
13
+
14
+ ### Changed
15
+ - Dropped support for Ruby 2.6.
16
+
17
+ ## 1.3.6 - 2021-10-19
18
+ ### Added
19
+ - Added support for Twitter.
20
+
21
+ ### Changed
22
+ - Melonbooks Resolver now returns image URI without resizing queries.
23
+
24
+ ## 1.3.5 - 2021-09-01
25
+ ### Added
26
+ - Added support for Pixiv Novel.
27
+
28
+ ### Fixed
29
+ - Fixed an issue where Image Resolver missed image scales.
30
+
31
+ ## 1.3.4 - 2021-07-26
32
+ ### Fixed
33
+ - Fixed an issue where Iwara Resolver failed when a description was present.
34
+
7
35
  ## 1.3.3 - 2021-07-25
8
36
  ### Added
9
- - Added Support for Iwara.
37
+ - Added support for Iwara.
10
38
 
11
39
  ### Fixed
12
40
  - Fixed an issue where DLsite Resolver was retrieving wrong tags.
@@ -86,6 +114,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
86
114
  ### Added
87
115
  - Released Panchira gem. At this time we can parse only 5 websites.
88
116
 
117
+ [1.3.5]: https://github.com/nuita/panchira/releases/tag/v1.3.5
118
+ [1.3.4]: https://github.com/nuita/panchira/releases/tag/v1.3.4
119
+ [1.3.3]: https://github.com/nuita/panchira/releases/tag/v1.3.3
89
120
  [1.3.2]: https://github.com/nuita/panchira/releases/tag/v1.3.2
90
121
  [1.3.1]: https://github.com/nuita/panchira/releases/tag/v1.3.1
91
122
  [1.3.0]: https://github.com/nuita/panchira/releases/tag/v1.3.0
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- panchira (1.3.3)
4
+ panchira (1.4.0)
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,12 +11,12 @@ 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.12.5-x86_64-darwin)
15
15
  racc (~> 1.4)
16
16
  parallel (1.20.1)
17
17
  parser (3.0.1.1)
18
18
  ast (~> 2.4.1)
19
- racc (1.5.2)
19
+ racc (1.6.0)
20
20
  rainbow (3.0.0)
21
21
  rake (12.3.3)
22
22
  regexp_parser (2.1.1)
@@ -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
@@ -19,7 +19,11 @@ module Panchira
19
19
  end
20
20
 
21
21
  def parse_tags
22
- @page.css('.node-info .field-item').map { |e| e.children&.text }
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
23
27
  end
24
28
 
25
29
  def cookie
@@ -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
@@ -26,17 +26,17 @@ module Panchira
26
26
  end
27
27
 
28
28
  def parse_image_url
29
- str = @page.css('//script[@type="application/ld+json"]/text()').first.to_s
30
-
31
- if s = str.match(%r{https://pic.nijie.(net|info)/(?<servername>\d+)/[^/]+/nijie_picture/(?<imagename>[^"]+)})
32
- # 動画は容量大きすぎるし取らない
33
- if s[:imagename] =~ /(jpg|png)/
34
- "https://pic.nijie.net/#{s[:servername]}/nijie_picture/#{s[:imagename]}"
35
- else
36
- s[0]
37
- end
29
+ str = @page.css('//script[@type="application/ld+json"]/text()').first.to_s.split.join(' ')
30
+ thumbnail_url = JSON.parse(str)['thumbnailUrl']
31
+
32
+ unless thumbnail_url
33
+ return @page.css('//meta[property="og:image"]/@content').first.to_s
34
+ end
35
+
36
+ if md = thumbnail_url.match(%r{pic.nijie.net/\w+(?<resolution>/\w+/)nijie.+\.(?<format>png|jpg|jpeg)})
37
+ thumbnail_url.sub(md[:resolution], '/')
38
38
  else
39
- @page.css('//meta[property="og:image"]/@content').first.to_s
39
+ thumbnail_url
40
40
  end
41
41
  end
42
42
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Panchira
4
4
  class PixivResolver < Resolver
5
- URL_REGEXP = %r{pixiv\.net/(member_illust.php?.*illust_id=|artworks/)(\d+)}.freeze
5
+ URL_REGEXP = %r{pixiv\.net/.*(member_illust.php?.*illust_id=|artworks/)(\d+)}.freeze
6
6
 
7
7
  def initialize(url)
8
8
  super(url)
@@ -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
@@ -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.3'
4
+ VERSION = '1.4.0'
5
5
  end
data/panchira.gemspec CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
32
  spec.require_paths = ['lib']
33
33
 
34
- spec.required_ruby_version = '>= 2.6'
34
+ spec.required_ruby_version = '>= 2.7'
35
35
 
36
36
  spec.add_development_dependency 'bundler', '~> 2.0'
37
37
  spec.add_development_dependency 'minitest', '~> 5.0'
@@ -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.3
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - kyp
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-25 00:00:00.000000000 Z
11
+ date: 2022-01-10 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.
@@ -148,6 +148,7 @@ files:
148
148
  - lib/panchira/resolvers/nijie_resolver.rb
149
149
  - lib/panchira/resolvers/pixiv_resolver.rb
150
150
  - lib/panchira/resolvers/resolver.rb
151
+ - lib/panchira/resolvers/twitter_resolver.rb
151
152
  - lib/panchira/version.rb
152
153
  - panchira.gemspec
153
154
  homepage: https://github.com/nuita/panchira
@@ -165,14 +166,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
165
166
  requirements:
166
167
  - - ">="
167
168
  - !ruby/object:Gem::Version
168
- version: '2.6'
169
+ version: '2.7'
169
170
  required_rubygems_version: !ruby/object:Gem::Requirement
170
171
  requirements:
171
172
  - - ">="
172
173
  - !ruby/object:Gem::Version
173
174
  version: '0'
174
175
  requirements: []
175
- rubygems_version: 3.1.4
176
+ rubygems_version: 3.3.4
176
177
  signing_key:
177
178
  specification_version: 4
178
179
  summary: A parser for hentai websites