feed_ninja 0.0.3 → 0.0.4
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/lib/feed_ninja/atomish.rb +2 -2
- data/lib/feed_ninja/feed_ninja.rb +14 -13
- data/lib/feed_ninja.rb +1 -2
- data/spec/atomish_spec.rb +2 -2
- data/spec/feed_ninja_spec.rb +5 -7
- data/spec/feeds/atom.xml +7 -0
- data/spec/feeds/rss.xml +5 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 33efbad5fc0d64ded0e3319aca0f866180264cf6
|
4
|
+
data.tar.gz: aa93bcb5af9786308807831e3494d2148aa783e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4f48c89a57c342f0c7c4689ba519c73cf4f23a1bfc4d389157506a10453278328688e7cbf2b9e4964b9d1f5a6fc872e2e52bbbfc2887b0ae4e7dce2324acc01
|
7
|
+
data.tar.gz: 8717dfcd4f7e361a0df1641420480003849ccbafe523971d078ab250d7156aaaddb5baa5c437e3ce4bb98e07528810592e4065b057ff0b112d147464099f42d9
|
data/lib/feed_ninja/atomish.rb
CHANGED
@@ -2,14 +2,14 @@ require 'rss'
|
|
2
2
|
require 'open-uri'
|
3
3
|
require 'nokogiri'
|
4
4
|
require 'time'
|
5
|
+
require 'thread'
|
6
|
+
require 'thwait'
|
5
7
|
|
6
8
|
class FeedNinja
|
7
9
|
attr_accessor :uri, :picture_xpath, :text_xpath, :title_regex, :limit
|
8
|
-
attr_accessor :extractor
|
9
10
|
|
10
11
|
def initialize
|
11
|
-
@limit =
|
12
|
-
@extractor = Extractor.new
|
12
|
+
@limit = 4
|
13
13
|
@writer = AtomIshWriter.new
|
14
14
|
@ninja_prefix = "N! "
|
15
15
|
end
|
@@ -43,32 +43,33 @@ class FeedNinja
|
|
43
43
|
if title_regex
|
44
44
|
items = items.select { |item| title_regex =~ item.title }
|
45
45
|
end
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
process_item item, doc.feed_type
|
46
|
+
threads = []
|
47
|
+
items.first(@limit).each_with_index do |item, index|
|
48
|
+
threads << Thread.new { process_item(item, doc.feed_type, index) }
|
50
49
|
end
|
50
|
+
ThreadsWait.all_waits(*threads)
|
51
51
|
end
|
52
52
|
|
53
|
-
def process_item
|
54
|
-
@writer.new_entry do |entry|
|
53
|
+
def process_item(original, feed_type, index)
|
54
|
+
@writer.new_entry(index) do |entry|
|
55
|
+
extractor = Extractor.new
|
55
56
|
case feed_type
|
56
57
|
when "atom"
|
57
58
|
entry.title = original.title.content
|
58
59
|
entry.link = original.link.href
|
59
60
|
entry.updated = original.updated
|
60
61
|
entry.id = original.id
|
61
|
-
|
62
|
+
extractor.fetch original.link.href
|
62
63
|
when "rss"
|
63
64
|
entry.title = original.title
|
64
65
|
entry.link = original.link
|
65
66
|
entry.updated = original.pubDate ? original.pubDate.xmlschema : DateTime.now.to_s
|
66
67
|
entry.id = entry.link
|
67
|
-
|
68
|
+
extractor.fetch original.link
|
68
69
|
end
|
69
70
|
|
70
|
-
entry.images =
|
71
|
-
entry.summary =
|
71
|
+
entry.images = extractor.extract_images @picture_xpath
|
72
|
+
entry.summary = extractor.extract_xml @text_xpath
|
72
73
|
|
73
74
|
entry #it's kind of fishy to explicitly have to return the entry here...
|
74
75
|
end
|
data/lib/feed_ninja.rb
CHANGED
data/spec/atomish_spec.rb
CHANGED
@@ -8,7 +8,7 @@ describe AtomIshWriter do
|
|
8
8
|
writer.link = 'http://example.com/atom'
|
9
9
|
writer.updated = DateTime.now.to_s
|
10
10
|
|
11
|
-
writer.new_entry do |entry|
|
11
|
+
writer.new_entry(0) do |entry|
|
12
12
|
entry = Entry.new
|
13
13
|
entry.title = "title"
|
14
14
|
entry.link = "http://example.com/one"
|
@@ -18,7 +18,7 @@ describe AtomIshWriter do
|
|
18
18
|
entry.updated = DateTime.now.to_s
|
19
19
|
end
|
20
20
|
|
21
|
-
writer.new_entry do |entry|
|
21
|
+
writer.new_entry(1) do |entry|
|
22
22
|
entry = Entry.new
|
23
23
|
entry.title = "title"
|
24
24
|
entry.link = "http://example.com/two"
|
data/spec/feed_ninja_spec.rb
CHANGED
@@ -4,25 +4,23 @@ require 'feed_ninja'
|
|
4
4
|
describe FeedNinja do
|
5
5
|
before :each do
|
6
6
|
@ninja = FeedNinja.new
|
7
|
-
|
8
|
-
|
9
|
-
@extractor.stub(:extract_images)
|
10
|
-
@extractor.stub(:extract_xml)
|
7
|
+
#Extractor.stub(:extract_images => [])
|
8
|
+
#Extractor.stub(:extract_xml => "")
|
11
9
|
end
|
12
10
|
|
13
11
|
it 'should read an atom feed' do
|
14
|
-
|
12
|
+
Extractor.should_receive(:new).exactly(3).times
|
15
13
|
@ninja.fetch 'spec/feeds/atom.xml'
|
16
14
|
end
|
17
15
|
|
18
16
|
it 'should read an RSS feed' do
|
19
|
-
|
17
|
+
Extractor.should_receive(:new).exactly(3).times
|
20
18
|
@ninja.fetch 'spec/feeds/rss.xml'
|
21
19
|
end
|
22
20
|
|
23
21
|
it 'should not read more than the given limit' do
|
24
22
|
@ninja.limit = 1
|
25
|
-
|
23
|
+
Extractor.should_receive(:new).once
|
26
24
|
@ninja.fetch 'spec/feeds/rss.xml'
|
27
25
|
end
|
28
26
|
end
|
data/spec/feeds/atom.xml
CHANGED
data/spec/feeds/rss.xml
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: feed_ninja
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Latzer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|