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 +4 -4
- data/.github/workflows/test.yml +6 -4
- data/.rspec +1 -0
- data/CHANGELOG.md +10 -0
- data/Gemfile.lock +1 -1
- data/README.md +43 -15
- data/lib/weneedfeed/controllers/show_feed.rb +5 -5
- data/lib/weneedfeed/item.rb +9 -1
- data/lib/weneedfeed/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fdaa4a0f724b7018d6b1b2b585aeaf970eff37538df7ca7aaf760fc217b56dc
|
4
|
+
data.tar.gz: 9f34a11d59aaada2d5afd689263f722c0143af5e59b9741e7d6f34d16d807c57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 878189a82437b83ed25d0c25c5a6de0f4b840c1daf117ccd83d31be1ecbbe2db0d97289bd5ab93e327508562843ddea253948cad63324d3557ab28a0d5052268
|
7
|
+
data.tar.gz: 8c56392e937c331456b44c869a96316c892b5321fd85611325c91c3987de079d101144998a4399f4fa668c46181e3f0c51f79fe157bf333d211fcf5ae0aeec87
|
data/.github/workflows/test.yml
CHANGED
@@ -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:
|
14
|
+
- uses: ruby/setup-ruby@v1
|
14
15
|
with:
|
15
|
-
|
16
|
-
|
17
|
-
-
|
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
data/CHANGELOG.md
CHANGED
@@ -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
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -25,34 +25,62 @@ Or install it yourself as:
|
|
25
25
|
gem install weneedfeed
|
26
26
|
```
|
27
27
|
|
28
|
-
##
|
28
|
+
## Schema
|
29
29
|
|
30
|
-
|
30
|
+
You need to write a schema file named with `weneedfeed.yml` to use this gem.
|
31
31
|
|
32
|
-
|
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
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
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
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
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['
|
24
|
-
item_link_selector: properties['
|
25
|
-
item_time_selector: properties['
|
26
|
-
item_title_selector: properties['
|
27
|
-
item_selector: properties['
|
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
|
)
|
data/lib/weneedfeed/item.rb
CHANGED
@@ -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
|
-
|
72
|
+
node = time_node
|
73
|
+
return unless node
|
74
|
+
|
75
|
+
node['datetime'] || node.inner_html
|
68
76
|
end
|
69
77
|
end
|
70
78
|
end
|
data/lib/weneedfeed/version.rb
CHANGED
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
|
+
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-
|
11
|
+
date: 2020-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|