-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjuicer.rb
57 lines (43 loc) · 1.27 KB
/
juicer.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class Juicer
def initialize(feed_url)
@alchemyObj = AlchemyAPI.new();
@feed_url = feed_url
@api_key = @alchemyObj.loadAPIKey("api_key.txt");
end
def squeeze!
feed = Feedzirra::Feed.fetch_and_parse(@feed_url)
feed.entries.each do |e|
url = e.url
puts url
puts e.inspect
s = Story.create(:title => e.title, :url => e.url, :summary => e.summary, :content => e.content, :published_at => e.published)
unless Cache::exists_for?(url)
data = @alchemyObj.URLGetRankedNamedEntities(url)
entities = entitify!(data, s)
unless entities.blank?
entities.each { |e| s.entities << e }
end
Cache::store(data, Cache::file(url))
puts data
else
puts '.. cached. Skipping.'
end
end
end
private
def entitify!(data, story)
r = Crack::XML.parse(data)
puts r.inspect
puts '--'
entities = []
return if r['results']['entities'].nil?
r['results']['entities']['entity'].each do |ent|
puts ent
e = Entity.find_or_create_by_text_and_kind(ent['text'],ent['type'])
e.relevance = ent['relevance']
e.count = ent['count']
entities << e
end
entities
end
end