sd_events 0.1.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 +7 -0
- data/bin/sd-events +6 -0
- data/lib/sd_events/cli.rb +109 -0
- data/lib/sd_events/events.rb +49 -0
- data/lib/sd_events/scraper.rb +60 -0
- data/lib/sd_events/version.rb +3 -0
- data/lib/sd_events.rb +13 -0
- metadata +120 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 57b9117def84fd8483551fd7e54c2a4457bde8954ed8cc830feb28e0e1f7adfe
|
|
4
|
+
data.tar.gz: 2f1b08b220b9c15e512dd4857b366d3b6d71dad322929b13f9757e7d32cd750d
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 20e37f096b8f2d5728d2a01ccf9716c17408801e1af868b3e8ae5cdb1d2cbabecafb2ef994a20bf940befb5873616a588b1d3d7b05dede695cbd0f6101c5ebbc
|
|
7
|
+
data.tar.gz: '01846653fdf1dcddb37e5bb5283853163ec3797152ec9813707f4044328a50efda049dbca87fbe1f3c4bceb797ddce96ee504916242e4af0fee813a3a0d673cd'
|
data/bin/sd-events
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
class SdEvents::CLI
|
|
2
|
+
|
|
3
|
+
def call
|
|
4
|
+
start
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def start
|
|
8
|
+
puts ""
|
|
9
|
+
puts "******* Events Happening Now in San Diego *******"
|
|
10
|
+
puts ""
|
|
11
|
+
list_menu
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def list_menu
|
|
15
|
+
|
|
16
|
+
puts "Hello, the time is now #{Time.now}."
|
|
17
|
+
puts "Please select which events you would like to see or type 'exit'"
|
|
18
|
+
puts ""
|
|
19
|
+
puts "1. Morning Events"
|
|
20
|
+
puts "2. Afternoon Events"
|
|
21
|
+
puts "3. Evening Events"
|
|
22
|
+
puts "4. Late Night Events"
|
|
23
|
+
puts ""
|
|
24
|
+
|
|
25
|
+
input = gets.strip.downcase
|
|
26
|
+
|
|
27
|
+
if input == "1"
|
|
28
|
+
SdEvents::Events.create_morning_events
|
|
29
|
+
display_events
|
|
30
|
+
event_menu
|
|
31
|
+
|
|
32
|
+
elsif input == "2"
|
|
33
|
+
SdEvents::Events.create_afternoon_events
|
|
34
|
+
display_events
|
|
35
|
+
event_menu
|
|
36
|
+
|
|
37
|
+
elsif input == "3"
|
|
38
|
+
SdEvents::Events.create_evening_events
|
|
39
|
+
display_events
|
|
40
|
+
event_menu
|
|
41
|
+
|
|
42
|
+
elsif input == "4"
|
|
43
|
+
SdEvents::Events.create_night_events
|
|
44
|
+
display_events
|
|
45
|
+
event_menu
|
|
46
|
+
|
|
47
|
+
elsif input == "exit"
|
|
48
|
+
goodbye
|
|
49
|
+
|
|
50
|
+
else
|
|
51
|
+
puts "Not sure what you're asking, here is the menu again:"
|
|
52
|
+
list_menu
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def display_events
|
|
58
|
+
SdEvents::Events.all.each.with_index(1) do |event, i|
|
|
59
|
+
puts "#{i}."
|
|
60
|
+
puts "Event: #{event.name.upcase}"
|
|
61
|
+
puts "Venue: #{event.venue}"
|
|
62
|
+
puts "Time: #{event.time}"
|
|
63
|
+
puts ""
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def event_menu
|
|
68
|
+
puts ""
|
|
69
|
+
puts "To see more info about an event, please select the number of the event:"
|
|
70
|
+
input = gets.downcase.to_i-1
|
|
71
|
+
SdEvents::Events.find(input)
|
|
72
|
+
puts ""
|
|
73
|
+
puts "Event: #{SdEvents::Events.all[input].name}"
|
|
74
|
+
puts "City: #{SdEvents::Events.all[input].city}"
|
|
75
|
+
puts "Category: #{SdEvents::Events.all[input].category}"
|
|
76
|
+
puts ""
|
|
77
|
+
puts "To see the menu again, type 'menu' or to exit type 'exit':"
|
|
78
|
+
SdEvents::Events.all.clear
|
|
79
|
+
new_input = gets.downcase.strip
|
|
80
|
+
if new_input == "menu"
|
|
81
|
+
list_menu
|
|
82
|
+
elsif new_input == "exit"
|
|
83
|
+
goodbye
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def self.no_events
|
|
88
|
+
puts ""
|
|
89
|
+
puts "Uh oh, looks like there are no events for that time..."
|
|
90
|
+
puts "Please return tomorrow for more events."
|
|
91
|
+
puts ""
|
|
92
|
+
puts "To see the menu again, type 'menu' or type 'exit':"
|
|
93
|
+
input = gets.downcase.strip
|
|
94
|
+
if input == "menu"
|
|
95
|
+
self.new.list_menu
|
|
96
|
+
elsif input == "exit"
|
|
97
|
+
self.new.goodbye
|
|
98
|
+
else
|
|
99
|
+
"Not sure what you're asking, here is the menu again:"
|
|
100
|
+
self.new.list_menu
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def goodbye
|
|
105
|
+
puts "Thanks for visiting SD Events!"
|
|
106
|
+
exit
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
class SdEvents::Events
|
|
2
|
+
attr_accessor :name, :venue, :city, :area, :category, :time
|
|
3
|
+
@@all = []
|
|
4
|
+
|
|
5
|
+
def initialize
|
|
6
|
+
@@all << self
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def self.all
|
|
10
|
+
@@all
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.clear
|
|
14
|
+
@@all.clear
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.find(id)
|
|
18
|
+
self.all[id-1]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.create_morning_events
|
|
22
|
+
SdEvents::Scraper.scrape_morning
|
|
23
|
+
if @@all.empty?
|
|
24
|
+
SdEvents::CLI.no_events
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.create_afternoon_events
|
|
29
|
+
SdEvents::Scraper.scrape_afternoon
|
|
30
|
+
if @@all.empty?
|
|
31
|
+
SdEvents::CLI.no_events
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def self.create_evening_events
|
|
36
|
+
SdEvents::Scraper.scrape_evening
|
|
37
|
+
if @@all.empty?
|
|
38
|
+
SdEvents::CLI.no_events
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def self.create_night_events
|
|
43
|
+
SdEvents::Scraper.scrape_night
|
|
44
|
+
if @@all.empty?
|
|
45
|
+
SdEvents::CLI.no_events
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
class SdEvents::Scraper
|
|
2
|
+
|
|
3
|
+
def self.scrape
|
|
4
|
+
@@doc = Nokogiri::HTML(open("https://www.sandiegoreader.com/events/#"))
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def self.scrape_morning
|
|
8
|
+
self.scrape.css("div#body div#content.content div.daypart_morning .event_list").each do |event|
|
|
9
|
+
event.css("tr").collect do |attribute|
|
|
10
|
+
new_event = SdEvents::Events.new
|
|
11
|
+
new_event.name = attribute.css(".title").css("h4").text.strip
|
|
12
|
+
new_event.venue = attribute.css(".title").css("h5").text.strip
|
|
13
|
+
new_event.time = attribute.css("td.time").text.strip
|
|
14
|
+
new_event.city = attribute.css("td.city").text.strip
|
|
15
|
+
new_event.category = attribute.css("td.category").text.strip
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.scrape_afternoon
|
|
21
|
+
self.scrape.css("div#body div#content.content div.daypart_afternoon .event_list").each do |event|
|
|
22
|
+
event.css("tr").collect do |attribute|
|
|
23
|
+
new_event = SdEvents::Events.new
|
|
24
|
+
new_event.name = attribute.css(".title").css("h4").text.strip
|
|
25
|
+
new_event.venue = attribute.css(".title").css("h5").text.strip
|
|
26
|
+
new_event.time = attribute.css("td.time").text.strip
|
|
27
|
+
new_event.city = attribute.css("td.city").text.strip
|
|
28
|
+
new_event.category = attribute.css("td.category").text.strip
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.scrape_evening
|
|
34
|
+
self.scrape.css("div#body div#content.content div.daypart_evening .event_list").each do |event|
|
|
35
|
+
event.css("tr").collect do |attribute|
|
|
36
|
+
new_event = SdEvents::Events.new
|
|
37
|
+
new_event.name = attribute.css(".title").css("h4").text.strip
|
|
38
|
+
new_event.venue = attribute.css(".title").css("h5").text.strip
|
|
39
|
+
new_event.time = attribute.css("td.time").text.strip
|
|
40
|
+
new_event.city = attribute.css("td.city").text.strip
|
|
41
|
+
new_event.category = attribute.css("td.category").text.strip
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def self.scrape_night
|
|
47
|
+
self.scrape.css("div#body div#content.content div.daypart_night .event_list").each do |event|
|
|
48
|
+
event.css("tr").collect do |attribute|
|
|
49
|
+
new_event = SdEvents::Events.new
|
|
50
|
+
new_event.name = attribute.css(".title").css("h4").text.strip
|
|
51
|
+
new_event.venue = attribute.css(".title").css("h5").text.strip
|
|
52
|
+
new_event.time = attribute.css("td.time").text.strip
|
|
53
|
+
new_event.city = attribute.css("td.city").text.strip
|
|
54
|
+
new_event.category = attribute.css("td.category").text.strip
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
end
|
data/lib/sd_events.rb
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require 'open-uri'
|
|
2
|
+
require 'pry'
|
|
3
|
+
require 'nokogiri'
|
|
4
|
+
|
|
5
|
+
require_relative './sd_events/version'
|
|
6
|
+
require_relative './sd_events/cli'
|
|
7
|
+
require_relative './sd_events/events'
|
|
8
|
+
require_relative './sd_events/scraper'
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
module SdEvents
|
|
12
|
+
# Your code goes here...
|
|
13
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: sd_events
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.2
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Kayla Hansen
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2017-11-14 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.16'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.16'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '10.0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '10.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: rspec
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: pry
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: nokogiri
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
description:
|
|
84
|
+
email: shiverr@gmail.com
|
|
85
|
+
executables:
|
|
86
|
+
- sd-events
|
|
87
|
+
extensions: []
|
|
88
|
+
extra_rdoc_files: []
|
|
89
|
+
files:
|
|
90
|
+
- bin/sd-events
|
|
91
|
+
- lib/sd_events.rb
|
|
92
|
+
- lib/sd_events/cli.rb
|
|
93
|
+
- lib/sd_events/events.rb
|
|
94
|
+
- lib/sd_events/scraper.rb
|
|
95
|
+
- lib/sd_events/version.rb
|
|
96
|
+
homepage: https://github.com/americanmouths/sdevents-cli-app
|
|
97
|
+
licenses:
|
|
98
|
+
- MIT
|
|
99
|
+
metadata: {}
|
|
100
|
+
post_install_message:
|
|
101
|
+
rdoc_options: []
|
|
102
|
+
require_paths:
|
|
103
|
+
- lib
|
|
104
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
105
|
+
requirements:
|
|
106
|
+
- - ">="
|
|
107
|
+
- !ruby/object:Gem::Version
|
|
108
|
+
version: '0'
|
|
109
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
|
+
requirements:
|
|
111
|
+
- - ">="
|
|
112
|
+
- !ruby/object:Gem::Version
|
|
113
|
+
version: '0'
|
|
114
|
+
requirements: []
|
|
115
|
+
rubyforge_project:
|
|
116
|
+
rubygems_version: 2.7.2
|
|
117
|
+
signing_key:
|
|
118
|
+
specification_version: 4
|
|
119
|
+
summary: Listing of events happening in San Diego today
|
|
120
|
+
test_files: []
|