google_news 0.0.1 → 0.1.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 +4 -4
- data/.gitignore +1 -1
- data/.rspec +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +6 -0
- data/CHANGELOG.md +5 -0
- data/README.md +19 -1
- data/Rakefile +19 -3
- data/bin/console +5 -6
- data/bin/google_news +28 -26
- data/bin/setup +0 -0
- data/google_news.gemspec +21 -21
- data/lib/google_news/cli.rb +65 -0
- data/lib/google_news/version.rb +1 -1
- data/lib/google_news.rb +46 -6
- metadata +64 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6168625d6e729f8fa19728bb27caed64749d600c55550edb80c4370775b2eb96
|
|
4
|
+
data.tar.gz: 91c7cdb1d9b6ad61e621f3c914cbf117c2dd7aabc86bc5e62e4856a500d2f6f0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 447e5eb18577d9cb5c0cfce07e68c1527224de5113838ea173d4a2b2f1fe84ff1a84bd58000358b0a5d8d8a257bdb43b0ae5fd13f7be4ad00b5c505021d3764f
|
|
7
|
+
data.tar.gz: 2736ba54da2962201979a53d57029c15d52cb4c2985ea0690e6731887cfff04aab582848e7d860a87c2f410a71ab6126c5d84a40942f4082ac7c104b7c28d91e
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.4.6
|
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
|
@@ -73,7 +73,25 @@ require 'google_news'
|
|
|
73
73
|
|
|
74
74
|
results = GoogleNews.headlines n: 5 # get top 5 news in default language (country: us, language: en)
|
|
75
75
|
puts results
|
|
76
|
-
# => [
|
|
76
|
+
# => [
|
|
77
|
+
# {
|
|
78
|
+
# :title => "Title of the news article",
|
|
79
|
+
# :link => "https://link.to/the/article",
|
|
80
|
+
# :pub_date => Time("Wed, 01 Jan 2024 00:00:00 GMT"),
|
|
81
|
+
# :descriptions => [
|
|
82
|
+
# {
|
|
83
|
+
# :title => "First article, like :title",
|
|
84
|
+
# :link => "https://link.to/the/first/article",
|
|
85
|
+
# :author => "Author Name",
|
|
86
|
+
# },
|
|
87
|
+
# {
|
|
88
|
+
# :title => "Second article, same topic, similiar to first",
|
|
89
|
+
# :link => "https://link.to/the/second/article",
|
|
90
|
+
# :author => "Another Author Name",
|
|
91
|
+
# },
|
|
92
|
+
# ...
|
|
93
|
+
# ],
|
|
94
|
+
# ]
|
|
77
95
|
```
|
|
78
96
|
|
|
79
97
|
|
data/Rakefile
CHANGED
|
@@ -9,9 +9,25 @@ task :default do
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
task :console do
|
|
12
|
-
require_relative '
|
|
13
|
-
require '
|
|
14
|
-
|
|
12
|
+
require_relative 'lib/google_news'
|
|
13
|
+
require 'pry'
|
|
14
|
+
Pry.start
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
+
namespace :example do
|
|
18
|
+
task :headlines do
|
|
19
|
+
require_relative 'lib/google_news'
|
|
20
|
+
headlines = GoogleNews.headlines(n: 10, language: 'de', country: 'de')
|
|
21
|
+
headlines.each do |item|
|
|
22
|
+
puts "Title: #{item[:title]}"
|
|
23
|
+
puts "Link: #{item[:link]}"
|
|
24
|
+
puts "Published At: #{item[:pub_date].class}"
|
|
25
|
+
puts "Descriptions: #{item[:descriptions]}"
|
|
26
|
+
puts "-" * 40
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
17
33
|
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
|
-
|
|
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
|
@@ -4,24 +4,21 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
|
4
4
|
require 'google_news/version'
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |spec|
|
|
7
|
-
spec.name
|
|
8
|
-
spec.version
|
|
9
|
-
spec.executables
|
|
10
|
-
spec.authors
|
|
11
|
-
spec.email
|
|
7
|
+
spec.name = "google_news"
|
|
8
|
+
spec.version = GoogleNews::VERSION
|
|
9
|
+
spec.executables = %w[google_news]
|
|
10
|
+
spec.authors = ["Matthäus J. N. Beyrle"]
|
|
11
|
+
spec.email = ["google_news.gemspec@mail.magynhard.de"]
|
|
12
12
|
|
|
13
|
-
spec.summary
|
|
14
|
-
spec.homepage
|
|
15
|
-
spec.license
|
|
13
|
+
spec.summary = %q{Get Google News headlines from Ruby or the command line.}
|
|
14
|
+
spec.homepage = "https://github.com/magynhard/google_news"
|
|
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)/})
|
|
@@ -29,11 +26,14 @@ Gem::Specification.new do |spec|
|
|
|
29
26
|
|
|
30
27
|
spec.require_paths = ['lib']
|
|
31
28
|
|
|
32
|
-
spec.add_runtime_dependency 'rss',
|
|
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',
|
|
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'
|
|
38
|
+
spec.add_development_dependency 'nokogiri', '~> 1.18'
|
|
39
39
|
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
|
@@ -5,12 +5,15 @@
|
|
|
5
5
|
require 'open-uri'
|
|
6
6
|
require 'rss'
|
|
7
7
|
require 'uri'
|
|
8
|
+
require 'nokogiri'
|
|
9
|
+
|
|
10
|
+
require_relative 'google_news/version'
|
|
8
11
|
|
|
9
12
|
module GoogleNews
|
|
10
13
|
HEADLINES_RSS = 'https://news.google.com/news/rss'.freeze
|
|
11
|
-
TOPICS_RSS
|
|
12
|
-
GEO_RSS
|
|
13
|
-
SEARCH_RSS
|
|
14
|
+
TOPICS_RSS = 'https://news.google.com/news/rss/headlines/section/topic/'.freeze
|
|
15
|
+
GEO_RSS = 'https://news.google.com/news/rss/headlines/section/geo/'.freeze
|
|
16
|
+
SEARCH_RSS = 'https://news.google.com/rss/search?q='.freeze
|
|
14
17
|
|
|
15
18
|
TOPICS = %w[WORLD NATION BUSINESS TECHNOLOGY ENTERTAINMENT SPORTS SCIENCE HEALTH].freeze
|
|
16
19
|
|
|
@@ -48,7 +51,7 @@ module GoogleNews
|
|
|
48
51
|
#
|
|
49
52
|
# Get top headlines for a specific geographic location from Google News
|
|
50
53
|
#
|
|
51
|
-
# @param [String] position e.g. "
|
|
54
|
+
# @param [String] position name e.g. "Berlin" for Berlin
|
|
52
55
|
# @param [String] country
|
|
53
56
|
# @param [String] language
|
|
54
57
|
# @param [Integer] n
|
|
@@ -199,17 +202,18 @@ module GoogleNews
|
|
|
199
202
|
# Convert an RSS item to a hash
|
|
200
203
|
#
|
|
201
204
|
# @param [RSS::Rss::Channel::Item] item
|
|
202
|
-
# @return [Hash] with keys :title, :link, :pub_date, :
|
|
205
|
+
# @return [Hash] with keys :title, :link, :pub_date, :descriptions [:title, :link, :author], and :raw_item
|
|
203
206
|
#
|
|
204
207
|
def self.item_to_hash(item)
|
|
205
208
|
{
|
|
206
209
|
title: item.title,
|
|
207
210
|
link: extract_link(item),
|
|
208
211
|
pub_date: (item.respond_to?(:pubDate) ? item.pubDate : nil),
|
|
209
|
-
|
|
212
|
+
descriptions: (item.respond_to?(:description) ? parse_description(item.description) : nil),
|
|
210
213
|
raw_item: item
|
|
211
214
|
}
|
|
212
215
|
end
|
|
216
|
+
|
|
213
217
|
#
|
|
214
218
|
# Extract the link from an RSS item
|
|
215
219
|
#
|
|
@@ -223,6 +227,42 @@ module GoogleNews
|
|
|
223
227
|
nil
|
|
224
228
|
end
|
|
225
229
|
|
|
230
|
+
#
|
|
231
|
+
# Description can consist of a <a> tag with a link, containing the title, followed by a <font> tag with the authors name.
|
|
232
|
+
#
|
|
233
|
+
# But it can also consist of a bunch of news, inside a <ol> list, containing <li> items with a <a> tag, followed by a <font> tag each.
|
|
234
|
+
#
|
|
235
|
+
# This method creates a array of hashes with :title, :link and :author keys for each news item found in the description.
|
|
236
|
+
#
|
|
237
|
+
# @param [String] description as HTML
|
|
238
|
+
# @return [Array<Hash>] array of news items with :title, :link and :author keys
|
|
239
|
+
#
|
|
240
|
+
def self.parse_description(description)
|
|
241
|
+
return nil if description.nil?
|
|
242
|
+
doc = Nokogiri::HTML(description)
|
|
243
|
+
news_items = []
|
|
244
|
+
if doc.at_css('ol')
|
|
245
|
+
doc.css('ol li').each do |li|
|
|
246
|
+
a_tag = li.at_css('a')
|
|
247
|
+
font_tag = li.at_css('font')
|
|
248
|
+
news_items << {
|
|
249
|
+
title: a_tag ? a_tag.text : nil,
|
|
250
|
+
link: a_tag ? a_tag['href'] : nil,
|
|
251
|
+
author: font_tag ? font_tag.text : nil
|
|
252
|
+
}
|
|
253
|
+
end
|
|
254
|
+
else
|
|
255
|
+
a_tag = doc.at_css('a')
|
|
256
|
+
font_tag = doc.at_css('font')
|
|
257
|
+
news_items << {
|
|
258
|
+
title: a_tag ? a_tag.text : nil,
|
|
259
|
+
link: a_tag ? a_tag['href'] : nil,
|
|
260
|
+
author: font_tag ? font_tag.text : nil
|
|
261
|
+
}
|
|
262
|
+
end
|
|
263
|
+
news_items
|
|
264
|
+
end
|
|
265
|
+
|
|
226
266
|
#
|
|
227
267
|
# Default User-Agent string for HTTP requests
|
|
228
268
|
#
|
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.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Matthäus J. N. Beyrle
|
|
@@ -43,56 +43,98 @@ 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
|
+
- !ruby/object:Gem::Version
|
|
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
|
+
- - "~>"
|
|
94
115
|
- !ruby/object:Gem::Version
|
|
95
|
-
version: 0.
|
|
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
|
|
124
|
+
- !ruby/object:Gem::Dependency
|
|
125
|
+
name: nokogiri
|
|
126
|
+
requirement: !ruby/object:Gem::Requirement
|
|
127
|
+
requirements:
|
|
128
|
+
- - "~>"
|
|
129
|
+
- !ruby/object:Gem::Version
|
|
130
|
+
version: '1.18'
|
|
131
|
+
type: :development
|
|
132
|
+
prerelease: false
|
|
133
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
134
|
+
requirements:
|
|
135
|
+
- - "~>"
|
|
136
|
+
- !ruby/object:Gem::Version
|
|
137
|
+
version: '1.18'
|
|
96
138
|
email:
|
|
97
139
|
- google_news.gemspec@mail.magynhard.de
|
|
98
140
|
executables:
|
|
@@ -103,6 +145,9 @@ files:
|
|
|
103
145
|
- ".gitattributes"
|
|
104
146
|
- ".gitignore"
|
|
105
147
|
- ".rspec"
|
|
148
|
+
- ".ruby-version"
|
|
149
|
+
- ".travis.yml"
|
|
150
|
+
- CHANGELOG.md
|
|
106
151
|
- CODE_OF_CONDUCT.md
|
|
107
152
|
- Gemfile
|
|
108
153
|
- LICENSE
|
|
@@ -115,12 +160,16 @@ files:
|
|
|
115
160
|
- google_news.gemspec
|
|
116
161
|
- lib/custom_errors/invalid_key_type_error.rb
|
|
117
162
|
- lib/google_news.rb
|
|
163
|
+
- lib/google_news/cli.rb
|
|
118
164
|
- lib/google_news/version.rb
|
|
119
165
|
homepage: https://github.com/magynhard/google_news
|
|
120
166
|
licenses:
|
|
121
167
|
- MIT
|
|
122
168
|
metadata:
|
|
123
169
|
allowed_push_host: https://rubygems.org
|
|
170
|
+
homepage_uri: https://github.com/magynhard/google_news
|
|
171
|
+
source_code_uri: https://github.com/magynhard/google_news
|
|
172
|
+
changelog_uri: https://github.com/magynhard/google_news/CHANGELOG.md
|
|
124
173
|
rdoc_options: []
|
|
125
174
|
require_paths:
|
|
126
175
|
- lib
|
|
@@ -128,14 +177,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
128
177
|
requirements:
|
|
129
178
|
- - ">="
|
|
130
179
|
- !ruby/object:Gem::Version
|
|
131
|
-
version:
|
|
180
|
+
version: 2.3.0
|
|
132
181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
182
|
requirements:
|
|
134
183
|
- - ">="
|
|
135
184
|
- !ruby/object:Gem::Version
|
|
136
185
|
version: '0'
|
|
137
186
|
requirements: []
|
|
138
|
-
rubygems_version: 3.7.
|
|
187
|
+
rubygems_version: 3.7.2
|
|
139
188
|
specification_version: 4
|
|
140
189
|
summary: Get Google News headlines from Ruby or the command line.
|
|
141
190
|
test_files: []
|