jekyll-artisync 0.8 → 0.9
Sign up to get free protection for your applications and to get access to all the features.
- 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
|