weneedfeed 0.4.1 → 0.5.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: ecf62208b1e01240706300879ec4b276f29f53a4ae638ee317c738e6ed6e4f21
4
- data.tar.gz: 4e8e892bbcbfcbe36b6c621a7bb964eee8898b71c865367cf13e42c19cf5d032
3
+ metadata.gz: 0fdaa4a0f724b7018d6b1b2b585aeaf970eff37538df7ca7aaf760fc217b56dc
4
+ data.tar.gz: 9f34a11d59aaada2d5afd689263f722c0143af5e59b9741e7d6f34d16d807c57
5
5
  SHA512:
6
- metadata.gz: d9af62e115d6e06561968497d555ecfaa779bec8f22ba5397a55de7306ce697be2e4e2adffbab324b122e888215b7d10b57ccc7193ea19fb4bc33ca2291af203
7
- data.tar.gz: 52359b481eee6b05d7afba4d4aa33b0a584716f3c38cc0222aa568f842cc4b8d02ba57722cb469bf9649b07726cbdd5de70b6e53be1cf958e711d1c64dff28eb
6
+ metadata.gz: 878189a82437b83ed25d0c25c5a6de0f4b840c1daf117ccd83d31be1ecbbe2db0d97289bd5ab93e327508562843ddea253948cad63324d3557ab28a0d5052268
7
+ data.tar.gz: 8c56392e937c331456b44c869a96316c892b5321fd85611325c91c3987de079d101144998a4399f4fa668c46181e3f0c51f79fe157bf333d211fcf5ae0aeec87
@@ -5,16 +5,18 @@ on:
5
5
  push:
6
6
  branches:
7
7
  - master
8
+
8
9
  jobs:
9
10
  build:
10
11
  runs-on: ubuntu-18.04
11
12
  steps:
12
13
  - uses: actions/checkout@v2
13
- - uses: actions/setup-ruby@v1
14
+ - uses: ruby/setup-ruby@v1
14
15
  with:
15
- ruby-version: '2.7.2'
16
- - run: bundle install --jobs=$(($(nproc) - 1)) --retry=3
17
- - run: bundle exec rubocop --color --parallel
16
+ bundler-cache: true
17
+ ruby-version: 2.7.2
18
+ - uses: r7kamura/rubocop-problem-matchers-action@v1
19
+ - run: bundle exec rubocop --parallel
18
20
  - run: bundle exec rspec --force-color
19
21
 
20
22
 
data/.rspec CHANGED
@@ -1 +1,2 @@
1
+ --format doc
1
2
  --require spec_helper
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## 0.5.0 - 2020-11-14
11
+
12
+ ### Added
13
+
14
+ - Add datetime attribute support on time element.
15
+
16
+ ### Changed
17
+
18
+ - Change schema format about selectors.
19
+
10
20
  ## 0.4.1 - 2020-11-08
11
21
 
12
22
  ### Fixed
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- weneedfeed (0.4.1)
4
+ weneedfeed (0.5.0)
5
5
  faraday
6
6
  hibana
7
7
  nokogiri
data/README.md CHANGED
@@ -25,34 +25,62 @@ Or install it yourself as:
25
25
  gem install weneedfeed
26
26
  ```
27
27
 
28
- ## Usage
28
+ ## Schema
29
29
 
30
- ### Schema
30
+ You need to write a schema file named with `weneedfeed.yml` to use this gem.
31
31
 
32
- Write `weneedfeed.yml`.
32
+ ### Example
33
33
 
34
34
  ```yaml
35
35
  pages:
36
36
  example1:
37
37
  title: example site 1
38
38
  url: http://example.com/1
39
- selectors:
40
- item: li
41
- item_description: p:nth-child(3)
42
- item_link: a
43
- item_time: time[datetime]
44
- item_title: p:nth-child(2)
39
+ item_selector: li
40
+ item_description_selector: p:nth-child(3)
41
+ item_link_selector: a
42
+ item_time_selector: time
43
+ item_title_selector: p:nth-child(2)
45
44
  example2:
46
45
  title: example site 2
47
46
  url: http://example.com/2
48
- selectors:
49
- item: //li
50
- item_description: .//p[3]
51
- item_link: .//a/@href
52
- item_time: .//time/@datetime
53
- item_title: .//p[2]
47
+ item_selector: //li
48
+ item_description_selector: .//p[3]
49
+ item_link_selector: .//a/@href
50
+ item_time_selector: .//time
51
+ item_title_selector: .//p[2]
54
52
  ```
55
53
 
54
+ ### `title`
55
+
56
+ Feed title, used for RSS `<title>` element in `<channel>` element.
57
+
58
+ ### `url`
59
+
60
+ URL to fetch HTML page for building feed.
61
+
62
+ ### `item_selector`
63
+
64
+ CSS or XPath selector to search each item, equivalent unit to RSS `<item>` element.
65
+
66
+ ### `item_link_selector`
67
+
68
+ CSS or XPath selector to find `<a>` element in each item, used for `<link>` in `<item>`.
69
+
70
+ ### `item_time_selector`
71
+
72
+ CSS or XPath selector to find element with datetime information in each item, used for `<pubDate>` in `<item>`. Its `datetime` attribute or its inner HTML is used to calculate datetime.
73
+
74
+ ### `item_title_selector`
75
+
76
+ CSS or XPath selector to find element with title information in each item, used for `<pubDate>` in `<item>`.
77
+
78
+ ### `item_description_selector`
79
+
80
+ CSS or XPath selector to find element with description information in each item, used for `<description>` in `<item>`.
81
+
82
+ ## Usage
83
+
56
84
  ### Build
57
85
 
58
86
  Run `weneedfeed build` to build static files.
@@ -20,11 +20,11 @@ module Weneedfeed
20
20
  end
21
21
 
22
22
  scraping = ::Weneedfeed::Scraping.new(
23
- item_description_selector: properties['selectors']['item_description'],
24
- item_link_selector: properties['selectors']['item_link'],
25
- item_time_selector: properties['selectors']['item_time'],
26
- item_title_selector: properties['selectors']['item_title'],
27
- item_selector: properties['selectors']['item'],
23
+ item_description_selector: properties['item_description_selector'],
24
+ item_link_selector: properties['item_link_selector'],
25
+ item_time_selector: properties['item_time_selector'],
26
+ item_title_selector: properties['item_title_selector'],
27
+ item_selector: properties['item_selector'],
28
28
  title: properties['title'],
29
29
  url: properties['url']
30
30
  )
@@ -62,9 +62,17 @@ module Weneedfeed
62
62
 
63
63
  private
64
64
 
65
+ # @return [Nokogiri::Node, nil]
66
+ def time_node
67
+ @node.at(@time_selector)
68
+ end
69
+
65
70
  # @return [String]
66
71
  def time_string
67
- @node.at(@time_selector).inner_html
72
+ node = time_node
73
+ return unless node
74
+
75
+ node['datetime'] || node.inner_html
68
76
  end
69
77
  end
70
78
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Weneedfeed
4
- VERSION = '0.4.1'
4
+ VERSION = '0.5.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weneedfeed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-08 00:00:00.000000000 Z
11
+ date: 2020-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday