job_hunter_cli 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/job_hunter_cli-0.1.2.gem +0 -0
- data/job_hunter_cli.gemspec +1 -3
- data/lib/job_hunter_cli.rb +1 -0
- data/lib/job_hunter_cli/cli.rb +51 -50
- data/lib/job_hunter_cli/job.rb +22 -0
- data/lib/job_hunter_cli/scraper.rb +13 -17
- data/lib/job_hunter_cli/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7a069a82ddd44ed87014ae52cd1e1cf8a1ae1e7
|
4
|
+
data.tar.gz: 9e630fac3ca511b1673721eb6ba680dc4dc5ca47
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb6e2c7cbcfd223cb2742285cdccf1e05e3c277bdaa9dc0b166a8ed453064a451f23660fbc6368fb73e271f92655f4c0ba8a603f5bf35b991a99b0e554d47c98
|
7
|
+
data.tar.gz: 513c494923bc655f92a8e585f719a8d6c5d1ee038e3dea6a7e8ef8929c8c005dde6b2aeaf6407e1f8b45e67e3c204d3ab19c22428f5e0c0a37453702df5af93b
|
Binary file
|
data/job_hunter_cli.gemspec
CHANGED
@@ -1,6 +1,4 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
3
|
-
|
4
2
|
lib = File.expand_path('../lib', __FILE__)
|
5
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
6
4
|
require 'job_hunter_cli/version'
|
@@ -21,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
21
19
|
spec.require_paths = ["lib"]
|
22
20
|
|
23
21
|
spec.add_development_dependency "open-uri"
|
24
|
-
spec.add_development_dependency "nokogiri", '~> 1.6.0', '>= 1.6.0'
|
22
|
+
spec.add_development_dependency "nokogiri", '~> 1.6.0', '>= 1.6.0'
|
25
23
|
spec.add_development_dependency "bundler", "~> 1.12"
|
26
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
27
25
|
end
|
data/lib/job_hunter_cli.rb
CHANGED
@@ -5,6 +5,7 @@ require 'pry'
|
|
5
5
|
require_relative "job_hunter_cli/version"
|
6
6
|
require_relative "job_hunter_cli/scraper"
|
7
7
|
require_relative "job_hunter_cli/cli"
|
8
|
+
require_relative "job_hunter_cli/job"
|
8
9
|
|
9
10
|
#this sets up the JobHunter Module as having access to all the JobHunter::*FILES*
|
10
11
|
module JobHunterCli
|
data/lib/job_hunter_cli/cli.rb
CHANGED
@@ -1,66 +1,67 @@
|
|
1
1
|
# Controller
|
2
|
-
|
2
|
+
# For review
|
3
3
|
class JobHunterCli::CLI
|
4
4
|
|
5
5
|
def start
|
6
|
-
input =""
|
7
|
-
input.downcase!
|
8
|
-
invalid = "invalid"
|
9
6
|
puts ""
|
10
7
|
puts " ---------------------------------- | WELCOME TO JOB HUNTER |-------------------------------- "
|
11
|
-
puts "
|
12
|
-
puts "
|
8
|
+
puts " Job Hunter shows you only the most recent jobs posted on Indeed.com "
|
9
|
+
puts " -------------------------------------------------------------------------------------------- "
|
10
|
+
puts ""
|
11
|
+
puts " Note: If you press enter without input then search will return its default values "
|
12
|
+
puts " Press exit anytime to exit search and start over "
|
13
13
|
puts ""
|
14
|
-
|
14
|
+
define_scraper
|
15
|
+
end
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
if input !="exit"
|
19
|
-
puts "1. Enter the max number of the search results you want return. Defaults to 10 if not specified"
|
20
|
-
input = gets.strip
|
21
|
-
scraper.limit = "limit=" + input
|
22
|
-
end
|
17
|
+
def define_scraper
|
18
|
+
scraper = JobHunterCli::Scraper.new # instantiate the scraper class and save it in a local variable
|
23
19
|
|
24
|
-
if
|
20
|
+
puts "1. Enter the max number of the search results you want return. Defaults to 10 if not specified"
|
21
|
+
scraper.limit = scraper_queries("limit")
|
25
22
|
puts "2. Enter any query or name of job role"
|
26
|
-
|
27
|
-
scraper.q = "q=" + input
|
28
|
-
end
|
29
|
-
|
30
|
-
if input!="exit"
|
23
|
+
scraper.q = scraper_queries("q")
|
31
24
|
puts "3. Enter initals or name of country. Defaults to US if not specified"
|
32
|
-
|
33
|
-
scraper.co = "co=" + input
|
34
|
-
end
|
35
|
-
|
36
|
-
if input!="exit"
|
25
|
+
scraper.co = scraper_queries("co")
|
37
26
|
puts "4. Enter a postal code or a city"
|
38
|
-
|
39
|
-
scraper.l = "l=" + input
|
40
|
-
end
|
41
|
-
|
42
|
-
if input!="exit"
|
27
|
+
scraper.l = scraper_queries("l")
|
43
28
|
puts "5. Enter a number for distance from search location. Defaults to 25 if not specified"
|
44
|
-
|
45
|
-
|
46
|
-
|
29
|
+
scraper.radius = scraper_queries("radius")
|
30
|
+
scraper.scrape_jobs # start scrape
|
31
|
+
print_jobs
|
32
|
+
prompt_after_search
|
33
|
+
end
|
47
34
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
jobs_array.each do |a|
|
53
|
-
puts "|" + "#{counter+=1}" +"|"
|
54
|
-
a.each do |key,value|
|
55
|
-
puts "#{key.capitalize}: #{value}"
|
56
|
-
end # end of second each enumerable
|
57
|
-
puts ""
|
58
|
-
end # end of first each enumerable
|
59
|
-
else
|
60
|
-
puts "Search Ended"
|
61
|
-
end # end of last if statement on line 47
|
62
|
-
end # end of until statement
|
35
|
+
def scraper_queries(query_type)
|
36
|
+
input = gets.strip
|
37
|
+
"#{query_type}=#{input}"
|
38
|
+
end
|
63
39
|
|
64
|
-
|
40
|
+
def print_jobs
|
41
|
+
counter = 0 # apply numbering to results
|
42
|
+
JobHunterCli::Job.all.each do |job_details|
|
43
|
+
puts ""
|
44
|
+
puts "#{counter+=1}. " + job_details.job_role
|
45
|
+
puts " • " + job_details.company
|
46
|
+
puts " • " + job_details.city + ", " + job_details.state + " - " +job_details.country
|
47
|
+
puts " • " + job_details.date_posted
|
48
|
+
puts " • " + job_details.post_duration
|
49
|
+
puts " • " + job_details.description
|
50
|
+
puts " • " + job_details.url
|
51
|
+
end # end of second each enumerable
|
52
|
+
end # end of print_jobs method
|
53
|
+
|
54
|
+
def prompt_after_search
|
55
|
+
puts ""
|
56
|
+
puts "--------------------| Search Completed |----------------------"
|
57
|
+
puts " Type 'start' to start over or 'exit' to exit search "
|
58
|
+
input = gets.strip
|
59
|
+
if input == "exit"
|
60
|
+
puts "Search Ended...."
|
61
|
+
elsif input == "start"
|
62
|
+
puts "Enter New Search"
|
63
|
+
self.define_scraper
|
64
|
+
end
|
65
|
+
end
|
65
66
|
|
66
|
-
end
|
67
|
+
end # end of class
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class JobHunterCli::Job
|
2
|
+
attr_accessor :job_role, :company, :city, :state, :country, :url, :description, :date_posted, :post_duration
|
3
|
+
@@jobs = []
|
4
|
+
|
5
|
+
def initialize(params = {}) # default argument, when instantiated the
|
6
|
+
@job_role = params[:job_role]
|
7
|
+
@company = params[:company]
|
8
|
+
@city = params[:city]
|
9
|
+
@state = params[:state]
|
10
|
+
@country = params[:country]
|
11
|
+
@url = params[:url]
|
12
|
+
@description = params[:description]
|
13
|
+
@date_posted = params[:date_posted]
|
14
|
+
@post_duration = params[:post_duration]
|
15
|
+
@@jobs << self
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.all
|
19
|
+
@@jobs
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -5,25 +5,21 @@ class JobHunterCli::Scraper
|
|
5
5
|
def scrape_jobs
|
6
6
|
# indeed.com api uses XML. To parse in XLM use Nokogiri
|
7
7
|
uri = "http://api.indeed.com/ads/apisearch?publisher=3881286689960538&#{@q}&#{@l}&sort=date&#{@radius}&st=&jt=&start=&#{@limit}&fromage=&filter=&latlong=1&#{@co}&chnl=&userip=1.2.3.4&useragent=Mozilla/%2F4.0%28Firefox%29&v=2"
|
8
|
-
|
9
|
-
jobs_hash = {}
|
8
|
+
|
10
9
|
doc = Nokogiri::XML(open(uri))
|
11
10
|
doc.css("result").each do |job_result|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
}
|
23
|
-
|
24
|
-
|
25
|
-
end # end of each statement
|
26
|
-
jobs_array
|
11
|
+
JobHunterCli::Job.new({
|
12
|
+
job_role: job_result.css("jobtitle").text,
|
13
|
+
company: job_result.css("company").text,
|
14
|
+
city: job_result.css("city").text,
|
15
|
+
state: job_result.css("state").text,
|
16
|
+
country: job_result.css("country").text,
|
17
|
+
url: job_result.css("url").text,
|
18
|
+
description: job_result.css("snippet").text,
|
19
|
+
date_posted: job_result.css("date").text,
|
20
|
+
post_duration: job_result.css("formattedRelativeTime").text
|
21
|
+
})
|
22
|
+
end # end of each statemen
|
27
23
|
end
|
28
24
|
|
29
25
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: job_hunter_cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lenn Hypolite
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: open-uri
|
@@ -91,9 +91,11 @@ files:
|
|
91
91
|
- bin/job_hunter_cli
|
92
92
|
- bin/setup
|
93
93
|
- job_hunter_cli-0.1.1.gem
|
94
|
+
- job_hunter_cli-0.1.2.gem
|
94
95
|
- job_hunter_cli.gemspec
|
95
96
|
- lib/job_hunter_cli.rb
|
96
97
|
- lib/job_hunter_cli/cli.rb
|
98
|
+
- lib/job_hunter_cli/job.rb
|
97
99
|
- lib/job_hunter_cli/scraper.rb
|
98
100
|
- lib/job_hunter_cli/version.rb
|
99
101
|
- spec.md
|