jekyll-artisync 0.8 → 0.9
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/lib/syncers/jianshu_syncer.rb +26 -0
- data/lib/syncers/syncer_factory.rb +19 -9
- data/lib/syncers/zhihu_syncer.rb +4 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c873706255f4f85ab61f889ae05671eb1af5018c00e5b2af34e6851f4e3e4e7
|
4
|
+
data.tar.gz: 19b8bd6759dff4e8422ff8cbb898bf793161d193dfd56756002bfcb029db56a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d7ed874e3156de1a2385afac0e4cae009f9b02e4a29386d0d6fa6b30b77a89b1476de3c0e8bafd7cf51013548712a060c07af15e765b9e43b18b5b376041479
|
7
|
+
data.tar.gz: c7629c9b9a6350fc3c6c8828c25879342cfda299b12bd5f93334159eca0139be599bde675478d2e0dad9b58045911ce819f551d2783b822a395511431b0282c2
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative 'per_node_syncer'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
|
5
|
+
class JianshuSyncer < PerNodeSyncer
|
6
|
+
def get_article_xpath
|
7
|
+
'//article'
|
8
|
+
end
|
9
|
+
|
10
|
+
def _handle_node(node)
|
11
|
+
case node.name
|
12
|
+
when 'div'
|
13
|
+
img_node = node.css('img')[-1]
|
14
|
+
if img_node
|
15
|
+
node = img_node
|
16
|
+
# jianshu.com uses a //<url> style, therefore
|
17
|
+
# append an 'https' in front of '//' part to
|
18
|
+
# make it a valid image url.
|
19
|
+
node['src'] = 'https:' + node['data-original-src']
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
node.to_html
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -1,27 +1,37 @@
|
|
1
|
+
require_relative 'jianshu_syncer'
|
1
2
|
require_relative 'zhihu_syncer'
|
2
3
|
require_relative 'weixin_syncer'
|
3
4
|
require_relative 'medium_syncer'
|
4
5
|
require_relative 'csdn_syncer'
|
5
6
|
|
6
7
|
|
7
|
-
ZHIHU_ZHUANLAN = 'zhuanlan.zhihu.com'
|
8
|
-
WEIXIN = 'mp.weixin.qq.com'
|
9
|
-
MEDIUM = 'medium.com'
|
10
8
|
CSDN = 'blog.csdn.net'
|
9
|
+
JIANSHU = 'www.jianshu.com'
|
10
|
+
MEDIUM = 'medium.com'
|
11
|
+
WEIXIN = 'mp.weixin.qq.com'
|
12
|
+
ZHIHU_ZHUANLAN = 'zhuanlan.zhihu.com'
|
13
|
+
|
11
14
|
|
12
15
|
class SyncerFactory
|
13
16
|
def self.get_syncer(uri)
|
14
17
|
host_name = uri.host
|
15
18
|
|
16
19
|
case host_name
|
17
|
-
when ZHIHU_ZHUANLAN
|
18
|
-
return ZhihuSyncer.new(uri)
|
19
|
-
when WEIXIN
|
20
|
-
return WeixinSyncer.new(uri)
|
21
|
-
when MEDIUM
|
22
|
-
return MediumSyncer.new(uri)
|
23
20
|
when CSDN
|
24
21
|
return CSDNSyncer.new(uri)
|
22
|
+
|
23
|
+
when JIANSHU
|
24
|
+
return JianshuSyncer.new(uri)
|
25
|
+
|
26
|
+
when MEDIUM
|
27
|
+
return MediumSyncer.new(uri)
|
28
|
+
|
29
|
+
when WEIXIN
|
30
|
+
return WeixinSyncer.new(uri)
|
31
|
+
|
32
|
+
when ZHIHU_ZHUANLAN
|
33
|
+
return ZhihuSyncer.new(uri)
|
34
|
+
|
25
35
|
else
|
26
36
|
raise "Not supported website for host: #{host_name}"
|
27
37
|
end
|
data/lib/syncers/zhihu_syncer.rb
CHANGED
@@ -13,7 +13,10 @@ class ZhihuSyncer < PerNodeSyncer
|
|
13
13
|
img_node = node.css('img')[-1]
|
14
14
|
if img_node
|
15
15
|
node = img_node
|
16
|
-
|
16
|
+
img_url = node['data-actualsrc']
|
17
|
+
img_url['/v2'] = '/80/v2'
|
18
|
+
img_url = img_url.gsub(/_[a-zA-Z]\.jpg/, '_720w.jpg') # _[a-z].jpg -> _720.jpg
|
19
|
+
node['src'] = img_url
|
17
20
|
end
|
18
21
|
end
|
19
22
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-artisync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.9'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Junhan Zhu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -34,6 +34,7 @@ files:
|
|
34
34
|
- lib/jekyll-artisync.rb
|
35
35
|
- lib/syncers/abstract_syncer.rb
|
36
36
|
- lib/syncers/csdn_syncer.rb
|
37
|
+
- lib/syncers/jianshu_syncer.rb
|
37
38
|
- lib/syncers/medium_syncer.rb
|
38
39
|
- lib/syncers/per_node_syncer.rb
|
39
40
|
- lib/syncers/syncer_factory.rb
|