feedie_the_feed 0.0.1
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 +7 -0
- data/LICENSE +13 -0
- data/README.md +5 -0
- data/lib/feedie_the_feed/feed_grabber.rb +110 -0
- data/lib/feedie_the_feed/version.rb +3 -0
- data/lib/feedie_the_feed.rb +4 -0
- metadata +91 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f50a2f884fa7b2cc27447dba1f67d2111a12edc9
|
4
|
+
data.tar.gz: b4be442cf52a973cfb7176ac885467a8fbbcbd7d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4a9b029ebbda614af096c801077f0894a5120fd1e6d5eb21fc0c60a2cba71e8f359a0ab1e26c478a251bf5a2eea252d4c12d672cf7c454e4f103802680c39934
|
7
|
+
data.tar.gz: 9aa4488e8010c2ff6a55582d62a1024d76c6c8922c844f39409e6b133a9b2a63231058f86a12ba10eb5684c80257b925f9ac6b34b1ef7ce9cf4c98c25e2ce101
|
data/LICENSE
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
2
|
+
Version 2, December 2004
|
3
|
+
|
4
|
+
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
5
|
+
|
6
|
+
Everyone is permitted to copy and distribute verbatim or modified
|
7
|
+
copies of this license document, and changing it is allowed as long
|
8
|
+
as the name is changed.
|
9
|
+
|
10
|
+
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
11
|
+
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
12
|
+
|
13
|
+
0. You just DO WHAT THE FUCK YOU WANT TO.
|
data/README.md
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
# WorldsBestRssAndFBParser::Feed.execute "http://abcnews.go.com/abcnews/topstories"
|
2
|
+
# WorldsBestRssAndFBParser::Feed.execute "https://www.facebook.com/leagueoflegends/"
|
3
|
+
|
4
|
+
#FACEBOOK_APPID="458198461180322"
|
5
|
+
#FACEBOOK_SECRET="f256365f32d5cea44316ecfcda203d99"
|
6
|
+
|
7
|
+
#facebook_appid="458198461180322"
|
8
|
+
#facebook_secret="f256365f32d5cea44316ecfcda203d99"
|
9
|
+
|
10
|
+
require 'feedjira'
|
11
|
+
require 'koala'
|
12
|
+
require 'uri'
|
13
|
+
require 'public_suffix'
|
14
|
+
|
15
|
+
module FeedieTheFeed
|
16
|
+
class FeedGrabber
|
17
|
+
|
18
|
+
# Stops feedjira spamming in console when there is no last modified time field in an rss feed
|
19
|
+
Feedjira.logger.level = Logger::FATAL
|
20
|
+
|
21
|
+
def initialize(facebook_appid=nil, facebook_secret=nil)
|
22
|
+
@facebook_appid = facebook_appid
|
23
|
+
@facebook_secret = facebook_secret
|
24
|
+
end
|
25
|
+
|
26
|
+
def get(url, facebook_appid=nil, facebook_secret=nil)
|
27
|
+
set_facebook_credentials(facebook_appid, facebook_secret) if facebook_appid && facebook_secret
|
28
|
+
validate_url_and_start(url)
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def set_facebook_credentials(facebook_appid, facebook_secret)
|
34
|
+
@facebook_appid = facebook_appid
|
35
|
+
@facebook_secret = facebook_secret
|
36
|
+
end
|
37
|
+
|
38
|
+
def validate_url_and_start(url)
|
39
|
+
if url =~ /\A#{URI::regexp(['http', 'https'])}\z/
|
40
|
+
get_proper_feed(url)
|
41
|
+
else
|
42
|
+
p "Bad url." #GOTA THROW EXCEPTION
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def get_proper_feed(url)
|
47
|
+
is_facebook_url?(url) ? get_facebook_feed(url) : get_rss_feed(url)
|
48
|
+
end
|
49
|
+
|
50
|
+
def is_facebook_url?(url)
|
51
|
+
uri = URI.parse(url)
|
52
|
+
PublicSuffix.parse(uri.host).domain == 'facebook.com'
|
53
|
+
end
|
54
|
+
|
55
|
+
def get_facebook_feed(url)
|
56
|
+
authorize_facebook
|
57
|
+
posts = @fb_graph_api.get_connection(get_fb_page_name(url), 'posts', {
|
58
|
+
limit: 10, # max 100
|
59
|
+
fields: ['message', 'id', 'from', 'type', 'picture', 'link', 'created_time']
|
60
|
+
})
|
61
|
+
formalize_fb_feed_array(posts.to_a)
|
62
|
+
end
|
63
|
+
|
64
|
+
def authorize_facebook
|
65
|
+
@facebook_appid ||= ENV['FACEBOOK_APPID']
|
66
|
+
@facebook_secret ||= ENV['FACEBOOK_SECRET']
|
67
|
+
oauth = Koala::Facebook::OAuth.new(@facebook_appid, @facebook_secret)
|
68
|
+
access_token = oauth.get_app_access_token
|
69
|
+
@fb_graph_api = Koala::Facebook::API.new(access_token)
|
70
|
+
end
|
71
|
+
|
72
|
+
def get_fb_page_name(url)
|
73
|
+
URI.parse(url).path.match(/\A\/([^\/]*)/)[1]
|
74
|
+
end
|
75
|
+
|
76
|
+
def truncate(text, options = {})
|
77
|
+
return text unless text.length > options[:length]
|
78
|
+
|
79
|
+
omission = options[:omission] || "..."
|
80
|
+
length_with_room_for_omission = options[:length] - omission.length
|
81
|
+
stop = \
|
82
|
+
if options[:separator]
|
83
|
+
text.rindex(options[:separator], length_with_room_for_omission) || length_with_room_for_omission
|
84
|
+
else
|
85
|
+
length_with_room_for_omission
|
86
|
+
end
|
87
|
+
|
88
|
+
"#{text[0, stop]}#{omission}"
|
89
|
+
end
|
90
|
+
|
91
|
+
def formalize_fb_feed_array(array)
|
92
|
+
array.each do |hash|
|
93
|
+
hash['entry_id'] = hash.delete 'id'
|
94
|
+
hash['summary'] = hash.delete 'message'
|
95
|
+
hash['title'] = truncate(hash['summary'], length: 80, separator: ' ') if hash['summary']
|
96
|
+
hash['url'] = hash.delete 'link'
|
97
|
+
hash['published'] = Time.parse hash.delete('created_time')
|
98
|
+
hash['image'] = hash.delete 'picture'
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def get_rss_feed(url)
|
103
|
+
feed = Feedjira::Feed.fetch_and_parse url
|
104
|
+
feed.entries.map! do |entry|
|
105
|
+
entry.to_h
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
end
|
metadata
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: feedie_the_feed
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jerry Wisdom
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-10-07 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: feedjira
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.1.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.1.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: koala
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 3.0.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 3.0.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: public_suffix
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.0.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.0.0
|
55
|
+
description: A feed posts aggregator for rss and facebook pages
|
56
|
+
email:
|
57
|
+
- krabique48@gmail.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- LICENSE
|
63
|
+
- README.md
|
64
|
+
- lib/feedie_the_feed.rb
|
65
|
+
- lib/feedie_the_feed/feed_grabber.rb
|
66
|
+
- lib/feedie_the_feed/version.rb
|
67
|
+
homepage: https://github.com/krabique48/feedie_the_feed
|
68
|
+
licenses:
|
69
|
+
- WTFPL
|
70
|
+
metadata: {}
|
71
|
+
post_install_message:
|
72
|
+
rdoc_options: []
|
73
|
+
require_paths:
|
74
|
+
- lib
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 2.4.2
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
requirements: []
|
86
|
+
rubyforge_project:
|
87
|
+
rubygems_version: 2.6.13
|
88
|
+
signing_key:
|
89
|
+
specification_version: 4
|
90
|
+
summary: A feed posts aggregator for rss and facebook pages
|
91
|
+
test_files: []
|