panchira 1.3.3 → 1.4.0
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/.github/workflows/ruby.yml +16 -13
- data/.rubocop.yml +2 -2
- data/CHANGELOG.md +32 -1
- data/Gemfile.lock +4 -4
- data/lib/panchira/resolvers/image_resolver.rb +2 -0
- data/lib/panchira/resolvers/iwara_resolver.rb +5 -1
- data/lib/panchira/resolvers/melonbooks_resolver.rb +4 -1
- data/lib/panchira/resolvers/nijie_resolver.rb +10 -10
- data/lib/panchira/resolvers/pixiv_resolver.rb +28 -1
- data/lib/panchira/resolvers/twitter_resolver.rb +24 -0
- data/lib/panchira/version.rb +1 -1
- data/panchira.gemspec +2 -2
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87af8a25ccd6d841b133aaa28ce7853c0111ae0ce4768f287a1f9a8a09eec148
|
4
|
+
data.tar.gz: 93233eca9a9fd019fb82aafbd1e97630aa242d1645d2e2306fee52d1812aa144
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42e8539356b8c73b8cced17cdaec2452960f17175736a004702c37e7370f407ea995504a07e2b060c53f52629f42cb247e34080d9e54c52a07158fddb5e427c1
|
7
|
+
data.tar.gz: 4b1746f991ba2353304c96e3297efca0a45ba0e3d9c908f653e72aa6920de3654f2714235d24037de591699287bf0c027b0720d6e2741cf3ef6a6e5ae1add95a
|
data/.github/workflows/ruby.yml
CHANGED
@@ -9,22 +9,25 @@ name: Ruby
|
|
9
9
|
|
10
10
|
on:
|
11
11
|
push:
|
12
|
-
branches: [
|
12
|
+
branches: [master]
|
13
13
|
pull_request:
|
14
|
-
branches: [
|
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
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
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.
|
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
|
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.
|
4
|
+
panchira (1.4.0)
|
5
5
|
fastimage (~> 2.1.7)
|
6
|
-
nokogiri (>= 1.10.9, < 1.
|
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.
|
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.
|
19
|
+
racc (1.6.0)
|
20
20
|
rainbow (3.0.0)
|
21
21
|
rake (12.3.3)
|
22
22
|
regexp_parser (2.1.1)
|
@@ -19,7 +19,11 @@ module Panchira
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def parse_tags
|
22
|
-
@page.css('.
|
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
|
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
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
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
|
-
|
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
|
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
|
data/lib/panchira/version.rb
CHANGED
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.
|
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.
|
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.
|
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:
|
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.
|
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.
|
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.
|
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.
|
176
|
+
rubygems_version: 3.3.4
|
176
177
|
signing_key:
|
177
178
|
specification_version: 4
|
178
179
|
summary: A parser for hentai websites
|