rss2mail 0.4.5 → 0.4.6
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/README +1 -1
- data/lib/rss2mail/app.rb +5 -4
- data/lib/rss2mail/feed.rb +3 -1
- data/lib/rss2mail/rss.rb +4 -4
- data/lib/rss2mail/util.rb +15 -7
- data/lib/rss2mail/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8cfccc00c87ea1cfb42ac84ec359ab83ab127f9b
|
4
|
+
data.tar.gz: 0821128c1c9a3816ff2ad772919c34eb3cb97c3a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ed5b865c7051d96d44c35e3ddb5ca2e41db2ab46c8b780c7e5e8cc9fd4f99b9a6e67333912c25e803c1972217f6c8ae0aba4d03bcda70a666f07d6c7f743831
|
7
|
+
data.tar.gz: 5f706b37c825e27719acc0fb2449625797edd7bd7d4cf87f6a2631fceddbc3b1da0a263a2b6311c95fd2c161baac013a1838c37a1c94f22046d827b8f4783c24
|
data/README
CHANGED
data/lib/rss2mail/app.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
# #
|
6
6
|
# A component of rss2mail, the RSS to e-mail forwarder. #
|
7
7
|
# #
|
8
|
-
# Copyright (C) 2007-
|
8
|
+
# Copyright (C) 2007-2015 Jens Wille #
|
9
9
|
# #
|
10
10
|
# Authors: #
|
11
11
|
# Jens Wille <jens.wille@gmail.com> #
|
@@ -43,9 +43,10 @@ helpers ERB::Util
|
|
43
43
|
get '/' do
|
44
44
|
prepare
|
45
45
|
|
46
|
-
|
47
|
-
|
48
|
-
|
46
|
+
@feed_url = RSS2Mail::Util.discover_feed(@url = params[:url])
|
47
|
+
|
48
|
+
RSS2Mail::Util.load_feed(@feed_url) { |doc|
|
49
|
+
@title = doc.at_css('title').content } if @feed_url
|
49
50
|
|
50
51
|
erb :index
|
51
52
|
end
|
data/lib/rss2mail/feed.rb
CHANGED
@@ -95,7 +95,7 @@ module RSS2Mail
|
|
95
95
|
send_mail(to, "[#{title}] #{subject}", body, type) {
|
96
96
|
sent << link
|
97
97
|
count += 1
|
98
|
-
}
|
98
|
+
} if link
|
99
99
|
}
|
100
100
|
|
101
101
|
sent.uniq!
|
@@ -218,6 +218,8 @@ module RSS2Mail
|
|
218
218
|
log "<#{link}>", debug
|
219
219
|
|
220
220
|
[link, subject, ERB.new(template).result(binding)]
|
221
|
+
rescue => err
|
222
|
+
error err, 'while rendering feed', title
|
221
223
|
end
|
222
224
|
|
223
225
|
def send_mail(*args)
|
data/lib/rss2mail/rss.rb
CHANGED
@@ -174,12 +174,12 @@ module RSS2Mail
|
|
174
174
|
|
175
175
|
def get_body(tag, encoding)
|
176
176
|
body = case tag
|
177
|
-
when nil then
|
177
|
+
when nil then # nothing
|
178
178
|
when true then open_feed(link).read
|
179
179
|
when String then extract_body(tag)
|
180
180
|
when Array then extract_body(*tag)
|
181
181
|
else raise ArgumentError, "don't know how to handle tag of type #{tag.class}"
|
182
|
-
end
|
182
|
+
end or return
|
183
183
|
|
184
184
|
body.gsub!(/<\/?(.*?)>/) { |m| m if KEEP.include?($1.split.first.downcase) }
|
185
185
|
body.gsub!(/<a\s+href=['"](?!http:).*?>(.*?)<\/a>/mi, '\1')
|
@@ -190,8 +190,8 @@ module RSS2Mail
|
|
190
190
|
end
|
191
191
|
|
192
192
|
def extract_body(expr, attribute = nil)
|
193
|
-
elem =
|
194
|
-
|
193
|
+
load_feed(link) { |doc| elem = doc.at(expr)
|
194
|
+
attribute ? elem[attribute] : elem.to_s }
|
195
195
|
end
|
196
196
|
|
197
197
|
def clean_subject(str)
|
data/lib/rss2mail/util.rb
CHANGED
@@ -51,11 +51,7 @@ module RSS2Mail
|
|
51
51
|
# cf. <http://www.rssboard.org/rss-autodiscovery>
|
52
52
|
def discover_feed(url, fallback = false)
|
53
53
|
unless url.nil? || url.empty? || url == 'about:blank'
|
54
|
-
|
55
|
-
doc = Nokogiri.HTML(open_feed(url))
|
56
|
-
rescue => err
|
57
|
-
warn "Unable to discover feed `#{url}': #{err} (#{err.class})"
|
58
|
-
else
|
54
|
+
load_feed(url) { |doc|
|
59
55
|
doc.xpath(ALTERNATE_XPATH).each { |link|
|
60
56
|
if link[:type] =~ FEED_RE && href = link[:href]
|
61
57
|
return href =~ URI_RE ? href : begin
|
@@ -68,14 +64,26 @@ module RSS2Mail
|
|
68
64
|
doc.xpath(FACEBOOK_XPATH).each { |node|
|
69
65
|
return FACEBOOK_FEED + node[:id][/\d+/]
|
70
66
|
} if url.include?('facebook.com')
|
71
|
-
|
67
|
+
}
|
72
68
|
end
|
73
69
|
|
74
70
|
url if fallback
|
75
71
|
end
|
76
72
|
|
77
|
-
def
|
73
|
+
def load_feed(url)
|
74
|
+
doc = Nokogiri.HTML(open_feed(url))
|
75
|
+
rescue => err
|
76
|
+
warn "Unable to load feed `#{url}': #{err} (#{err.class})"
|
77
|
+
else
|
78
|
+
block_given? ? yield(doc) : doc
|
79
|
+
end
|
80
|
+
|
81
|
+
def open_feed(url, options = {}, tries = 10, &block)
|
78
82
|
open(url, options.merge('User-Agent' => USER_AGENT), &block)
|
83
|
+
rescue RuntimeError => err
|
84
|
+
raise unless err.to_s.include?('redirection loop') && (tries -= 1) > 0
|
85
|
+
sleep 10 - tries
|
86
|
+
retry
|
79
87
|
end
|
80
88
|
|
81
89
|
def load_feeds(feeds_file, options = { deserialize_symbols: true })
|
data/lib/rss2mail/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rss2mail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jens Wille
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cyclops
|
@@ -117,7 +117,7 @@ dependencies:
|
|
117
117
|
version: '0.8'
|
118
118
|
- - ">="
|
119
119
|
- !ruby/object:Gem::Version
|
120
|
-
version: 0.8.
|
120
|
+
version: 0.8.2
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
123
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -127,7 +127,7 @@ dependencies:
|
|
127
127
|
version: '0.8'
|
128
128
|
- - ">="
|
129
129
|
- !ruby/object:Gem::Version
|
130
|
-
version: 0.8.
|
130
|
+
version: 0.8.2
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
132
|
name: rake
|
133
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -176,7 +176,7 @@ metadata: {}
|
|
176
176
|
post_install_message:
|
177
177
|
rdoc_options:
|
178
178
|
- "--title"
|
179
|
-
- rss2mail Application documentation (v0.4.
|
179
|
+
- rss2mail Application documentation (v0.4.6)
|
180
180
|
- "--charset"
|
181
181
|
- UTF-8
|
182
182
|
- "--line-numbers"
|
@@ -197,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
197
197
|
version: '0'
|
198
198
|
requirements: []
|
199
199
|
rubyforge_project:
|
200
|
-
rubygems_version: 2.4.
|
200
|
+
rubygems_version: 2.4.8
|
201
201
|
signing_key:
|
202
202
|
specification_version: 4
|
203
203
|
summary: Send RSS feeds as e-mail
|