google_news 0.0.1 → 0.0.2

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
  SHA256:
3
- metadata.gz: df4beeb3e71a539fd40e36aff03536fd8239976510093a0af1f7c8cbc91df797
4
- data.tar.gz: dbc67f83eed942876a9ac46e7763de6d19dbebdd135fe6d9ca09867ea0bc2282
3
+ metadata.gz: d82fabbe3456707329c9d55f22433ff8cf03ecc2528f35f805f3a33c5a006e4d
4
+ data.tar.gz: 05ac38bfcec8edc401ba73d13f4b95bc45d5caebee93e72c6626d90a38d2324c
5
5
  SHA512:
6
- metadata.gz: 68e12a403a5a857760ae821d4b8a6d9532b4825fbf7302a0cdfa40753945730ead7d0788bb459e5f67aa716c83be85d48bbf98e15fb53b434c1556e29f26676f
7
- data.tar.gz: 695d594b22921aabc3ca570407c34bd9d47d227c188f39ad001b3c5d12f3ff1a6c515fdf9d87b5a3c3a1646ada27e5e76101159b654da89721d58a771e93c048
6
+ metadata.gz: 81a86f5527947e62673d615d6efb9fe7c2bc3c4206cfa60a805f88e8eb6cc3b360a9d73b30b232c87a551d2527130a2316694f07bc597fa8f7c21c72ad60f402
7
+ data.tar.gz: 4640d37f2b90cee7a4081ca023ecb892da77bdabbff2b3d19049dbf674bb6651d0b916db4b08227d06cb1ca8aee7129002b7cc8b546e88811a8134ee19239c09
data/.gitignore CHANGED
@@ -12,4 +12,4 @@
12
12
  *.gem
13
13
 
14
14
  # rspec failure tracking
15
- .rspec_status
15
+ .rspec_status
data/.rspec CHANGED
@@ -1,2 +1,3 @@
1
1
  --format documentation
2
2
  --color
3
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ ---
2
+ language: ruby
3
+ cache: bundler
4
+ rvm:
5
+ - 3.3.5
6
+ before_install: gem install bundler -v 2.7.1
data/CHANGELOG.md ADDED
@@ -0,0 +1,2 @@
1
+ # 0.0.1
2
+ - initial alpha release with basic features, most is untested
data/Gemfile CHANGED
@@ -2,3 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in google_news.gemspec
4
4
  gemspec
5
+
6
+
data/Rakefile CHANGED
@@ -9,9 +9,9 @@ task :default do
9
9
  end
10
10
 
11
11
  task :console do
12
- require_relative '../lib/google_news'
13
- require 'irb'
14
- IRB.start(__FILE__)
12
+ require_relative 'lib/google_news'
13
+ require 'pry'
14
+ Pry.start
15
15
  end
16
16
 
17
17
  RSpec::Core::RakeTask.new(:spec)
data/bin/console CHANGED
@@ -1,14 +1,13 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'bundler/setup'
4
- require_relative '../lib/google_news'
5
-
4
+ require 'google_news'
6
5
  # You can add fixtures and/or initialization code here to make experimenting
7
6
  # with your gem easier. You can also use a different console, if you like.
8
7
 
9
8
  # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require 'pry'
11
- # Pry.start
9
+ require "pry"
10
+ Pry.start
12
11
 
13
- require 'irb'
14
- IRB.start(__FILE__)
12
+ #require "irb"
13
+ #IRB.start(__FILE__)
data/bin/google_news CHANGED
@@ -1,31 +1,33 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative '../lib/google_news'
3
+ require_relative '../lib/google_news/cli'
4
4
 
5
- arg = ARGV[0]
6
5
 
7
- if %w[help -h --help].include?(arg) || arg.nil? || arg == ''
8
- puts <<-TEXT
9
-
10
- google_news #{GoogleNews::VERSION}
11
- https://github.com/magynhard/google_news
6
+ GoogleNews::CLI.run
12
7
 
13
- Usage:
14
- google_news [options]
15
- Options:
16
- -h, --help Show this help message
17
- -v, --version Show version
18
- -n, --number N Number of headlines to fetch (default: 10)
19
- -c, --country CC Country code (default: "us")
20
- -l, --language LL Language code (default: "en")
21
- --headlines Fetch top headlines
22
- --topic TOPIC Fetch headlines for a specific topic (WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH)
23
- --geo LOCATION Fetch headlines for a specific geographic location (e.g. "48.8566,2.3522" for Paris)
24
- --search QUERY Search headlines for a specific query
25
- --website SITE Fetch headlines from a specific website (e.g. "bbc.com")
26
-
27
- TEXT
28
- elsif %w[]
29
- else
30
- puts "Invalid command or option. Use --help for usage information."
31
- end
8
+ #
9
+ # if %w[help -h --help].include?(arg) || arg.nil? || arg == ''
10
+ # puts <<-TEXT
11
+ #
12
+ # google_news #{GoogleNews::VERSION}
13
+ # https://github.com/magynhard/google_news
14
+ #
15
+ # Usage:
16
+ # google_news [options]
17
+ # Options:
18
+ # -h, --help Show this help message
19
+ # -v, --version Show version
20
+ # -n, --number N Number of headlines to fetch (default: 10)
21
+ # -c, --country CC Country code (default: "us")
22
+ # -l, --language LL Language code (default: "en")
23
+ # --headlines Fetch top headlines
24
+ # --topic TOPIC Fetch headlines for a specific topic (WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH)
25
+ # --geo LOCATION Fetch headlines for a specific geographic location (e.g. "48.8566,2.3522" for Paris)
26
+ # --search QUERY Search headlines for a specific query
27
+ # --website SITE Fetch headlines from a specific website (e.g. "bbc.com")
28
+ #
29
+ # TEXT
30
+ # elsif %w[]
31
+ # else
32
+ # puts "Invalid command or option. Use --help for usage information."
33
+ # end
data/bin/setup CHANGED
File without changes
data/google_news.gemspec CHANGED
@@ -14,14 +14,11 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = "https://github.com/magynhard/google_news"
15
15
  spec.license = "MIT"
16
16
 
17
- # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
- # to allow pushing to a single host or delete this section to allow pushing to any host.
19
- if spec.respond_to?(:metadata)
20
- spec.metadata['allowed_push_host'] = "https://rubygems.org"
21
- else
22
- raise "RubyGems 2.0 or newer is required to protect against " \
23
- "public gem pushes."
24
- end
17
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
18
+ spec.metadata['allowed_push_host'] = "https://rubygems.org"
19
+ spec.metadata['homepage_uri'] = spec.homepage
20
+ spec.metadata['source_code_uri'] = spec.homepage
21
+ spec.metadata['changelog_uri'] = "#{spec.homepage}/CHANGELOG.md"
25
22
 
26
23
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
27
24
  f.match(%r{^(test|spec|features)/})
@@ -32,8 +29,10 @@ Gem::Specification.new do |spec|
32
29
  spec.add_runtime_dependency 'rss', '>= 0.2.6'
33
30
  spec.add_runtime_dependency 'open-uri', '>= 0.1.0'
34
31
 
35
- spec.add_development_dependency 'bundler', '>= 2.0'
36
- spec.add_development_dependency 'rake', '>= 10.0'
37
- spec.add_development_dependency 'rspec', '>= 3.0'
38
- spec.add_development_dependency 'pry', '>= 0.10.0'
32
+ spec.add_development_dependency 'bundler', '>= 2.7.1'
33
+ spec.add_development_dependency 'rake', '~> 12.0'
34
+ spec.add_development_dependency 'rspec', '~> 3.0'
35
+ spec.add_development_dependency 'pry', '~> 0.15.2'
36
+ spec.add_development_dependency 'fiddle', '~> 1.1.8'
37
+ spec.add_development_dependency 'ostruct', '~> 0.6.3'
39
38
  end
@@ -0,0 +1,65 @@
1
+ require 'optparse'
2
+ require 'json'
3
+ require_relative '../google_news'
4
+
5
+ module GoogleNews
6
+ #
7
+ # Command-line interface for GoogleNews
8
+ #
9
+ class CLI
10
+ def self.run(args = ARGV)
11
+ options = { n: 10, language: 'en' }
12
+ opt_parser = OptionParser.new do |opts|
13
+ opts.banner = "Usage: google_news [options]"
14
+ opts.on('-tTOPIC', '--topic=TOPIC', 'Get news for a specific topic. One of: WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH') do |topic|
15
+ options[:topic] = topic
16
+ end
17
+ opts.on('-gPOSITION', '--geo=POSITION', 'Get news for a specific geographic location, e.g. "48.8566,2.3522" for Paris') do |position|
18
+ options[:geo] = position
19
+ end
20
+ opts.on('-cCOUNTRY', '--country=COUNTRY', 'Country code, e.g. "us" for United States (default: us)') do |country|
21
+ options[:country] = country
22
+ end
23
+ opts.on('-lLANGUAGE', '--language=LANGUAGE', 'Language code, e.g. "en" for English (default: en)') do |language|
24
+ options[:language] = language
25
+ end
26
+ opts.on('-nN', '--n=N', Integer, 'Number of headlines to fetch (default: 10)') do |n|
27
+ options[:n] = n
28
+ end
29
+ opts.on('-h', '--help', 'Show this help message') do
30
+ puts opts
31
+ exit
32
+ end
33
+ end
34
+ begin
35
+ opt_parser.parse!(args)
36
+ rescue OptionParser::InvalidOption => e
37
+ puts e.message
38
+ puts opt_parser
39
+ exit 1
40
+ end
41
+ show_logo
42
+ begin
43
+ if options[:headlines]
44
+ headlines = GoogleNews.headlines(country: options[:country] || 'us', language: options[:language] || 'en', n: options[:n] || 10)
45
+ elsif options[:topic]
46
+ headlines = GoogleNews.topic(options[:topic], country: options[:country] || 'us', language: options[:language] || 'en', n: options[:n] || 10)
47
+ elsif options[:geo]
48
+ headlines = GoogleNews.geo(options[:geo], country: options[:country] || 'us', language: options[:language] || 'en', n: options[:n] || 10)
49
+ else
50
+ headlines = GoogleNews.headlines(country: options[:country] || 'us', language: options[:language] || 'en', n: options[:n] || 10)
51
+ end
52
+ end
53
+ puts headlines.to_json
54
+ end
55
+
56
+ def self.show_logo
57
+ puts
58
+ puts "GoogleNews CLI v#{GoogleNews::VERSION} - Get Google News headlines from Ruby or the command line."
59
+ puts ""
60
+ puts "Powered by the 'google_news' Ruby gem"
61
+ puts ""
62
+ end
63
+
64
+ end
65
+ end
@@ -1,3 +1,3 @@
1
1
  module GoogleNews
2
- VERSION = '0.0.1'.freeze
2
+ VERSION = '0.0.2'.freeze
3
3
  end
data/lib/google_news.rb CHANGED
@@ -6,6 +6,8 @@ require 'open-uri'
6
6
  require 'rss'
7
7
  require 'uri'
8
8
 
9
+ require_relative 'google_news/version'
10
+
9
11
  module GoogleNews
10
12
  HEADLINES_RSS = 'https://news.google.com/news/rss'.freeze
11
13
  TOPICS_RSS = 'https://news.google.com/news/rss/headlines/section/topic/'.freeze
@@ -48,7 +50,7 @@ module GoogleNews
48
50
  #
49
51
  # Get top headlines for a specific geographic location from Google News
50
52
  #
51
- # @param [String] position e.g. "48.8566,2.3522" for Paris
53
+ # @param [String] position name e.g. "Berlin" for Berlin
52
54
  # @param [String] country
53
55
  # @param [String] language
54
56
  # @param [Integer] n
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_news
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthäus J. N. Beyrle
@@ -43,56 +43,84 @@ dependencies:
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: '2.0'
46
+ version: 2.7.1
47
47
  type: :development
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: '2.0'
53
+ version: 2.7.1
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: rake
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - ">="
58
+ - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '10.0'
60
+ version: '12.0'
61
61
  type: :development
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - ">="
65
+ - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '10.0'
67
+ version: '12.0'
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: rspec
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ">="
72
+ - - "~>"
73
73
  - !ruby/object:Gem::Version
74
74
  version: '3.0'
75
75
  type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - ">="
79
+ - - "~>"
80
80
  - !ruby/object:Gem::Version
81
81
  version: '3.0'
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: pry
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - ">="
86
+ - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: 0.10.0
88
+ version: 0.15.2
89
89
  type: :development
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - ">="
93
+ - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: 0.10.0
95
+ version: 0.15.2
96
+ - !ruby/object:Gem::Dependency
97
+ name: fiddle
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: 1.1.8
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 1.1.8
110
+ - !ruby/object:Gem::Dependency
111
+ name: ostruct
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: 0.6.3
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: 0.6.3
96
124
  email:
97
125
  - google_news.gemspec@mail.magynhard.de
98
126
  executables:
@@ -103,6 +131,8 @@ files:
103
131
  - ".gitattributes"
104
132
  - ".gitignore"
105
133
  - ".rspec"
134
+ - ".travis.yml"
135
+ - CHANGELOG.md
106
136
  - CODE_OF_CONDUCT.md
107
137
  - Gemfile
108
138
  - LICENSE
@@ -115,12 +145,16 @@ files:
115
145
  - google_news.gemspec
116
146
  - lib/custom_errors/invalid_key_type_error.rb
117
147
  - lib/google_news.rb
148
+ - lib/google_news/cli.rb
118
149
  - lib/google_news/version.rb
119
150
  homepage: https://github.com/magynhard/google_news
120
151
  licenses:
121
152
  - MIT
122
153
  metadata:
123
154
  allowed_push_host: https://rubygems.org
155
+ homepage_uri: https://github.com/magynhard/google_news
156
+ source_code_uri: https://github.com/magynhard/google_news
157
+ changelog_uri: https://github.com/magynhard/google_news/CHANGELOG.md
124
158
  rdoc_options: []
125
159
  require_paths:
126
160
  - lib
@@ -128,7 +162,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
128
162
  requirements:
129
163
  - - ">="
130
164
  - !ruby/object:Gem::Version
131
- version: '0'
165
+ version: 2.3.0
132
166
  required_rubygems_version: !ruby/object:Gem::Requirement
133
167
  requirements:
134
168
  - - ">="