seo-keywords-generator-ruby 0.1.9 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3fcce4a4dae84b3eea8abefcf4dce39f10f9084c2b2f1ca90c5cb5e14ee06ab5
4
- data.tar.gz: b0aa67a12d6d680e70f87793a4da42cd90f440209936aafb0e685dd049c2240b
3
+ metadata.gz: c194e2d1710fd2d9ee64bb4a7fc1943812d430b780ae4d58d0decb161d9be782
4
+ data.tar.gz: 895cd9589b58d2cefff32c8896042119068cae7517f298e96e60640cec65a651
5
5
  SHA512:
6
- metadata.gz: 93c5ac9430262fbb10f3a4654595718e980f3a3941011e58404285ca6e69809a53f866e85bcc49c67837df263b75f8fc2cc12ee8e36c97e1316f1a7ac54d1f83
7
- data.tar.gz: 336d24b436d53d7c83a42fc5dd236ee6fe019286c5e324e70ce2769cdbf37b2bf2947f5b045e05ac942d413ed3ea011dbdccc260b201ad40299799fdacbab6ed
6
+ metadata.gz: 8ae40ae8282437ce336b7404cea767fdbfdbae78b2fbcdf0cf308a6a02fdad4fce469b9217525afadaf2678dc8334c6980f5b7973bbd7d140b451742d964a016
7
+ data.tar.gz: 77554adfde96256355bc02ebcbf05c499f43018d146fd2e16f2d16cce71d4cd2658bfc2b4f5a1f28c317cac00a54da1aa9fb54f3d8e69bc6ccf070a1b65b4dc8
data/bin/seo CHANGED
@@ -3,9 +3,6 @@
3
3
  # frozen_string_literal: true
4
4
 
5
5
  # Enable local usage from cloned repo
6
- root = File.expand_path("../..", __FILE__)
7
- $LOAD_PATH << "#{root}/lib" if File.exist?("#{root}/Gemfile")
8
-
9
6
  require "seo-keywords-generator-ruby"
10
7
 
11
8
  SeoKeywordsGenerator::CLI.new(ARGV).run
@@ -1,9 +1,99 @@
1
1
  require 'google_search_results'
2
+ require 'optparse'
2
3
  require 'json'
3
4
  require 'csv'
4
5
 
5
6
  module SeoKeywordsGenerator
6
- autoload :CLI, "seo-keywords-generator-ruby/cli"
7
+ class CLI
8
+ def initialize(argv)
9
+ @argv = argv
10
+ end
11
+
12
+ def run
13
+ options = {
14
+ engines: ['ac', 'rs', 'rq'],
15
+ depth_limit: 0,
16
+ save_to: 'CSV',
17
+ api_key: '5868ece26d41221f5e19ae8b3e355d22db23df1712da675d144760fc30d57988',
18
+ domain: 'google.com',
19
+ country: 'us',
20
+ lang: 'en',
21
+ }
22
+
23
+ OptionParser.new do |opts|
24
+ opts.banner = 'Usage: seo [options]'
25
+
26
+ opts.on('-q', '--query QUERY', String, 'Search query (required)') do |q|
27
+ options[:query] = q
28
+ end
29
+
30
+ opts.on('-e', '--engines ENGINES', Array, 'Choices of engines to extract: Autocomplete (ac), Related Searches (rs), People Also Ask (rq). You can select multiple engines by separating them with a comma: ac,rs. All engines are selected by default.') do |e|
31
+ options[:engines] = e
32
+ end
33
+
34
+ opts.on('-d', '--depth-limit LIMIT', Integer, 'Depth limit for People Also Ask. Default is 0, first 2-4 results.') do |dl|
35
+ options[:depth_limit] = dl
36
+ end
37
+
38
+ opts.on('-s', '--save-to SAVE', String, 'Saves the results in the current directory in the selected format (CSV, JSON, TXT). Default CSV.') do |st|
39
+ options[:save_to] = st
40
+ end
41
+
42
+ opts.on('-k', '--api-key KEY', String, 'Your SerpApi API key: https://serpapi.com/manage-api-key. Default is a test API key to test CLI.') do |ak|
43
+ options[:api_key] = ak
44
+ end
45
+
46
+ opts.on('-g', '--domain DOMAIN', String, 'Google domain: https://serpapi.com/google-domains. Default google.com.') do |gd|
47
+ options[:domain] = gd
48
+ end
49
+
50
+ opts.on('-c', '--country COUNTRY', String, 'Country of the search: https://serpapi.com/google-countries. Default us.') do |gl|
51
+ options[:country] = gl
52
+ end
53
+
54
+ opts.on('-l', '--language LANGUAGE', String, 'Language of the search: https://serpapi.com/google-languages. Default en.') do |hl|
55
+ options[:lang] = hl
56
+ end
57
+ end.parse!(@argv)
58
+
59
+ keyword_research = SeoKeywordsGenerator.new(
60
+ query=options[:query],
61
+ api_key=options[:api_key],
62
+ lang=options[:lang],
63
+ country=options[:country],
64
+ domain=options[:domain]
65
+ )
66
+
67
+ data = {}
68
+
69
+ options[:engines]&.each do |engine|
70
+ case engine.downcase
71
+ when 'ac'
72
+ data['auto_complete'] = keyword_research.get_auto_complete()
73
+ when 'rs'
74
+ data['related_searches'] = keyword_research.get_related_searches()
75
+ when 'rq'
76
+ data['related_questions'] = keyword_research.get_related_questions(options[:depth_limit])
77
+ end
78
+ end
79
+
80
+ if !data.empty?
81
+ keyword_research.print_data(data)
82
+ puts "Saving data in #{options[:save_to].upcase} format..."
83
+
84
+ case options[:save_to].upcase
85
+ when 'CSV'
86
+ keyword_research.save_to_csv(data)
87
+ when 'JSON'
88
+ keyword_research.save_to_json(data)
89
+ when 'TXT'
90
+ keyword_research.save_to_txt(data)
91
+ end
92
+
93
+ puts "Data successfully saved to #{options[:query].gsub(' ', '_')}.#{options[:save_to].downcase} file"
94
+ end
95
+ end
96
+ end
7
97
 
8
98
  class Scraper
9
99
  attr_accessor :query, :api_key, :lang, :country, :domain
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seo-keywords-generator-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artur Chukhrai