jekyll-artisync 0.5 → 0.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: '0606097a6fb1063a731eb03353da74882e9d5aca8edf40143f7c6182e189c91a'
4
- data.tar.gz: 7bac92d7cae8be329f1f31c782efa8faced9f280450164f110f81f7f96865e36
3
+ metadata.gz: 94ea0a27d255bfe5841323b8a83b66d6c18831d7bfaa62623fa719f3d3015215
4
+ data.tar.gz: '0308d5172ccd557f56fcb2ceeea5b31283a39263479f67748afc7f38f9691209'
5
5
  SHA512:
6
- metadata.gz: 897c6f5173ed4af5541c0784609a136e7f09d3a22e174ea38f4fbc908471a7228a311c670d61557611bbce5d62cb62831f667506f25188f4938562d989d8b207
7
- data.tar.gz: 6b51c4520cb6a6005994184a478073dac60387e3e363f11432363bd9f38a59312f47763488d2fbdc54b4bb03db4933394ab0852fc5d73f72d75dd5e9d911d977
6
+ metadata.gz: 2d89a70068a9df3e1236e8f7d93556bf002b05c71121650bc14067a8ecad0b78f3436e711c87325ca39b518c2758634b87f11544ef247712c49c92cb2b65d283
7
+ data.tar.gz: 28e30cbcf1212dd0c9070eecf8a733c7a92e573b572e803ac9af80f7813e97474c6824c8bff7c18b5e71a28917c270d64688659de3e7616bdbb983e19c37dc6a
@@ -10,9 +10,8 @@ class ArticleSyncEmbed < Liquid::Tag
10
10
  end
11
11
 
12
12
  def render(context)
13
- url = @content.strip
13
+ url = Liquid::Template.parse(@content).render(context).strip
14
14
  uri = URI(url)
15
- page_host = uri.hostname
16
15
  syncer = SyncerFactory.get_syncer(uri)
17
16
  return syncer.gen_html
18
17
  end
@@ -0,0 +1,18 @@
1
+ require_relative 'abstract_syncer'
2
+ require 'nokogiri'
3
+
4
+
5
+ class PerNodeSyncer < AbstractSyncer
6
+
7
+ def gen_html
8
+ page_html = self._fetch_html
9
+ article = Nokogiri::HTML(page_html).xpath(self.get_article_xpath)
10
+ content = []
11
+ article.children.each do |node|
12
+ content.append self._handle_node(node)
13
+ end
14
+
15
+ content.join("\n")
16
+ end
17
+
18
+ end
@@ -1,7 +1,9 @@
1
1
  require_relative 'zhihu_syncer'
2
+ require_relative 'weixin_syncer'
2
3
 
3
4
 
4
5
  ZHIHU_ZHUANLAN = 'zhuanlan.zhihu.com'
6
+ WEIXIN = 'mp.weixin.qq.com'
5
7
 
6
8
  class SyncerFactory
7
9
  def self.get_syncer(uri)
@@ -10,6 +12,8 @@ class SyncerFactory
10
12
  case host_name
11
13
  when ZHIHU_ZHUANLAN
12
14
  return ZhihuSyncer.new(uri)
15
+ when WEIXIN
16
+ return WeixinSyncer.new(uri)
13
17
  else
14
18
  raise "Not supported website for host: #{host_name}"
15
19
  end
@@ -0,0 +1,21 @@
1
+ require_relative 'per_node_syncer'
2
+ require 'nokogiri'
3
+
4
+
5
+ class WeixinSyncer < PerNodeSyncer
6
+ def get_article_xpath
7
+ '//div[contains(@class, "rich_media_content") and contains(@id, "js_content")]'
8
+ end
9
+
10
+ def _handle_node(node)
11
+ node.children.each do |child_node|
12
+ case child_node.name
13
+ when 'img'
14
+ child_node['src'] = child_node['data-src']
15
+ child_node['data-src'] = nil
16
+ end
17
+ end
18
+ node.to_html
19
+ end
20
+
21
+ end
@@ -1,8 +1,8 @@
1
- require_relative 'abstract_syncer'
1
+ require_relative 'per_node_syncer'
2
2
  require 'nokogiri'
3
3
 
4
4
 
5
- class ZhihuSyncer < AbstractSyncer
5
+ class ZhihuSyncer < PerNodeSyncer
6
6
  def get_article_xpath
7
7
  '//div[contains(@class, "Post-RichText") and contains(@class, "ztext")]'
8
8
  end
@@ -21,15 +21,4 @@ class ZhihuSyncer < AbstractSyncer
21
21
  node.to_html
22
22
  end
23
23
 
24
- def gen_html
25
- page_html = self._fetch_html
26
- article = Nokogiri::HTML(page_html).xpath(self.get_article_xpath)
27
- content = []
28
- article.children.each do |node|
29
- content.append self._handle_node(node)
30
- end
31
-
32
- content.join("\n")
33
- end
34
-
35
24
  end
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.5'
4
+ version: '0.6'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Junhan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-27 00:00:00.000000000 Z
11
+ date: 2020-05-30 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Take an article from a given site and display on current Jekyll page.
14
14
  email:
@@ -19,7 +19,9 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - lib/jekyll-artisync.rb
21
21
  - lib/syncers/abstract_syncer.rb
22
+ - lib/syncers/per_node_syncer.rb
22
23
  - lib/syncers/syncer_factory.rb
24
+ - lib/syncers/weixin_syncer.rb
23
25
  - lib/syncers/zhihu_syncer.rb
24
26
  homepage: https://github.com/junhan-z/jekyll-artisync
25
27
  licenses: