parsing_articles 1.0.0 → 2.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 42df730377b2eb5be2ecd77a1beb9d8930bf07e4
4
- data.tar.gz: ccd77fe1a5d93fc0bac185c25dae07d0e253dde0
3
+ metadata.gz: 1d4340c5f4a5428c40736a5168f29fb22e962b6a
4
+ data.tar.gz: cc4fbb98399ba744e294bca402613bd67db6b1ce
5
5
  SHA512:
6
- metadata.gz: aedc0585cb52516c209466b376d9e7f998b3afadd5b4b61882f98bbaef7aa20d6614052b39a65605e0445c25d1697abdf63b3b58806a3b202c7c8beccf9521bc
7
- data.tar.gz: 0e972e2fb326a217b36d515610741863ff402b77a1672f23dde1904475018b17545b5a5475f164b336d34418fb0a6cd8172ec0bb52e740cf68a221e6f1cac9a8
6
+ metadata.gz: f3d7cd31cd84f05733ce92bf902d31487818ed515329e895fa79c8929f805c26572a02a1154dfe82bdaba224196fc61ed55894da843136021683a17cf5ce6529
7
+ data.tar.gz: 799741f721a7dea6ce1c74f74da900860282f58c4729a80c3a284a07722765c151492cbdeedde9b30ca490ead690f3d9e778993c7c30c3bbfdaefc958abae5ec
@@ -1,10 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- parsing_articles (1.0.0)
4
+ parsing_articles (2.0.0)
5
5
  activesupport
6
6
  koala
7
- nokogiri (>= 1.8.2)
7
+ vcr
8
+ webmock
8
9
 
9
10
  GEM
10
11
  remote: https://rubygems.org/
@@ -17,9 +18,12 @@ GEM
17
18
  addressable (2.5.2)
18
19
  public_suffix (>= 2.0.2, < 4.0)
19
20
  concurrent-ruby (1.0.5)
21
+ crack (0.4.3)
22
+ safe_yaml (~> 1.0.0)
20
23
  diff-lcs (1.3)
21
24
  faraday (0.14.0)
22
25
  multipart-post (>= 1.2, < 3)
26
+ hashdiff (0.3.7)
23
27
  i18n (0.9.3)
24
28
  concurrent-ruby (~> 1.0)
25
29
  json (2.1.0)
@@ -27,11 +31,8 @@ GEM
27
31
  addressable
28
32
  faraday
29
33
  json (>= 1.8)
30
- mini_portile2 (2.3.0)
31
34
  minitest (5.11.3)
32
35
  multipart-post (2.0.0)
33
- nokogiri (1.8.2)
34
- mini_portile2 (~> 2.3.0)
35
36
  public_suffix (3.0.1)
36
37
  rake (10.5.0)
37
38
  rspec (3.7.0)
@@ -47,9 +48,15 @@ GEM
47
48
  diff-lcs (>= 1.2.0, < 2.0)
48
49
  rspec-support (~> 3.7.0)
49
50
  rspec-support (3.7.1)
51
+ safe_yaml (1.0.4)
50
52
  thread_safe (0.3.6)
51
53
  tzinfo (1.2.5)
52
54
  thread_safe (~> 0.1)
55
+ vcr (4.0.0)
56
+ webmock (3.3.0)
57
+ addressable (>= 2.3.6)
58
+ crack (>= 0.3.2)
59
+ hashdiff
53
60
 
54
61
  PLATFORMS
55
62
  ruby
data/README.md CHANGED
@@ -26,13 +26,12 @@ Or install it yourself as:
26
26
  ParsingArticles::GetArticles.config_facebook(APP_ID, APP_KEY)
27
27
 
28
28
  Next You can use it to parse artcles from facebook:
29
- @articles_facebook = ParsingArticles::GetArticles.new(url_of_facebook_page)
30
- @articles_facebook.get_array
29
+ @articles_facebook = ParsingArticles::Parse.new(url).get_array
31
30
  The last command returns array with articles
32
31
 
33
- Similar considered to Rss urls(no configuration needed):
34
- @articles_rss = ParsingArticles::GetArticles.new(rss)
35
- @articles_rss.get_array
32
+ Of course you can simply use either .Facebook class or .Rss class
33
+
34
+
36
35
 
37
36
 
38
37
 
@@ -1,61 +1,69 @@
1
1
  require "parsing_articles/version"
2
2
  require 'rss'
3
- require 'open-uri'
4
- require 'nokogiri'
3
+ require 'open-uri'
5
4
  require 'koala'
6
5
  module ParsingArticles
7
- class GetArticles
6
+ class StandartParser
8
7
  def initialize(url)
9
- @url = url.to_s
10
- @articles_results = []
8
+ @url = url
11
9
  end
12
10
 
11
+ def parse; end
12
+
13
+ def connect; end
14
+
15
+ def get_array;
16
+ parse
17
+ end
18
+ end
19
+
20
+ class Facebook < StandartParser
13
21
  def self.config_facebook(app_id = nil, app_secret = nil)
14
22
  @APP_ID = app_id
15
23
  @APP_KEY = app_secret
16
24
  end
17
25
 
18
- def get_array
19
- facebook_or_rss
20
- end
21
-
22
26
  private
23
- def facebook_or_rss
24
- /https:\/\/www.facebook.com/.match(@url) ? facebook_parser : rss_parser
27
+ def connect
28
+ graph = Koala::Facebook::API.new(Facebook.get_app_access_token)
25
29
  end
26
30
 
27
- def facebook_parser
28
- graph = Koala::Facebook::API.new(GetArticles.get_app_access_token)
29
- get_facebook_array(graph)
31
+ def parse
32
+ connect.get_connection(connect.get_object('', id: @url)['id'], 'posts', {
33
+ fields: ['title', 'link', 'message', 'picture', 'created_time']})
30
34
  end
31
35
 
32
36
  def self.get_app_access_token
33
- @oauth = Koala::Facebook::OAuth.new(@APP_ID || = '1977681792501372', @APP_KEY || ='920ff6a0a18835cb7b2fef5cda8cd491')
34
- @oauth.get_app_access_token
37
+ @oauth = Koala::Facebook::OAuth.new(@APP_ID ||= '1977681792501372', @APP_KEY ||='920ff6a0a18835cb7b2fef5cda8cd491')
38
+ @oauth.get_app_access_token
35
39
  end
40
+ end
36
41
 
37
- def get_facebook_array(graph)
38
- @articles_results = graph.get_connection(facebook_get_page_id, 'posts', {
39
- fields: ['title', 'link', 'message', 'created_time']})
42
+ class Rss < StandartParser
43
+ private
44
+ def connect
45
+ rss = RSS::Parser.parse(@url, false).items
40
46
  end
41
47
 
42
- def facebook_get_page_id
43
- page = Nokogiri::HTML(open(@url))
44
- page_id = /([\d]){15}/.match((page.css('head')).to_s)
48
+ def parse
49
+ connect.map do |result|
50
+ result = { 'title' => result.title,
51
+ 'created_time' => result.pubDate,
52
+ 'link' => result.link,
53
+ 'picture' => result.description[/img.*?src="(.*?)"/i,1],
54
+ 'message' => result.description.gsub(/<\/?[^>]*>/, "")}
55
+ end
45
56
  end
57
+ end
46
58
 
47
- def rss_parser()
48
- rss = RSS::Parser.parse(@url, false).items
49
- get_rss_array(rss) do |result|
50
- result = { 'title' => result.title, 'created_time' => result.pubDate, 'link' => result.link, 'message' => result.description.gsub(/<\/?[^>]*>/, "")}
51
- @articles_results.push(result)
52
- end
59
+ class Parse < StandartParser
60
+ def get_array
61
+ facebook_or_rss.to_a
53
62
  end
54
63
 
55
- def get_rss_array(rss, &block)
56
- rss.each &block
57
- @articles_results
64
+ private
65
+ def facebook_or_rss
66
+ /https:\/\/www.facebook.com/.match(@url) ? Facebook.new(@url).get_array : Rss.new(@url).get_array
58
67
  end
59
-
60
68
  end
61
69
  end
@@ -1,3 +1,3 @@
1
1
  module ParsingArticles
2
- VERSION = "1.0.0"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -29,8 +29,9 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency "bundler", "~> 1.16"
30
30
  spec.add_development_dependency "rake", "~> 10.0"
31
31
  spec.add_development_dependency "rspec", "~> 3.0"
32
- spec.add_dependency "nokogiri", ">=1.8.2"
32
+ spec.add_dependency 'webmock'
33
33
  spec.add_dependency "activesupport"
34
34
  spec.add_dependency "koala"
35
+ spec.add_dependency 'vcr'
35
36
 
36
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parsing_articles
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - morozartem9
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-02-05 00:00:00.000000000 Z
11
+ date: 2018-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -53,19 +53,19 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: nokogiri
56
+ name: webmock
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 1.8.2
61
+ version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 1.8.2
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: activesupport
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: vcr
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  description: " parsing articles from rss or facebook"
98
112
  email:
99
113
  - morozartem9@gmail.com