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 +4 -4
- data/.gitignore +1 -1
- data/.rspec +1 -0
- data/.travis.yml +6 -0
- data/CHANGELOG.md +2 -0
- data/Gemfile +2 -0
- data/Rakefile +3 -3
- data/bin/console +5 -6
- data/bin/google_news +28 -26
- data/bin/setup +0 -0
- data/google_news.gemspec +11 -12
- data/lib/google_news/cli.rb +65 -0
- data/lib/google_news/version.rb +1 -1
- data/lib/google_news.rb +3 -1
- metadata +48 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d82fabbe3456707329c9d55f22433ff8cf03ecc2528f35f805f3a33c5a006e4d
|
4
|
+
data.tar.gz: 05ac38bfcec8edc401ba73d13f4b95bc45d5caebee93e72c6626d90a38d2324c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81a86f5527947e62673d615d6efb9fe7c2bc3c4206cfa60a805f88e8eb6cc3b360a9d73b30b232c87a551d2527130a2316694f07bc597fa8f7c21c72ad60f402
|
7
|
+
data.tar.gz: 4640d37f2b90cee7a4081ca023ecb892da77bdabbff2b3d19049dbf674bb6651d0b916db4b08227d06cb1ca8aee7129002b7cc8b546e88811a8134ee19239c09
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
data/Gemfile
CHANGED
data/Rakefile
CHANGED
data/bin/console
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'bundler/setup'
|
4
|
-
|
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
|
-
|
11
|
-
|
9
|
+
require "pry"
|
10
|
+
Pry.start
|
12
11
|
|
13
|
-
require
|
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
|
-
|
8
|
-
puts <<-TEXT
|
9
|
-
|
10
|
-
google_news #{GoogleNews::VERSION}
|
11
|
-
https://github.com/magynhard/google_news
|
6
|
+
GoogleNews::CLI.run
|
12
7
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
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
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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.
|
36
|
-
spec.add_development_dependency 'rake', '
|
37
|
-
spec.add_development_dependency 'rspec', '
|
38
|
-
spec.add_development_dependency 'pry', '
|
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
|
data/lib/google_news/version.rb
CHANGED
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. "
|
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.
|
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:
|
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:
|
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: '
|
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: '
|
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.
|
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.
|
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:
|
165
|
+
version: 2.3.0
|
132
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
167
|
requirements:
|
134
168
|
- - ">="
|