why_im_broke 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/why_im_broke +5 -0
- data/config/environment.rb +8 -0
- data/lib/why_im_broke_cli.rb +5 -0
- data/lib/why_im_broke_cli/cli.rb +68 -0
- data/lib/why_im_broke_cli/item.rb +66 -0
- data/lib/why_im_broke_cli/scraper.rb +26 -0
- data/lib/why_im_broke_cli/version.rb +3 -0
- metadata +108 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6478ed205ceee395425f2115e74c9c96caf03ee6a56093d36756f8b20709f72c
|
4
|
+
data.tar.gz: a2c1d972eec981010d34e6ab0981b9640ddcb5f9b17cfaa9ee30344626b75d7f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c3c65eb06651450a3f227a1146feb5ab9855733acc28c817e032ffba078702be75d3e869474b668b5957fdc4e19a39d02b5aaa910d95f5959abd03dfb937bbde
|
7
|
+
data.tar.gz: '09fd1b31947049713f15d8c2c08b03528b751b50ad8553030b7e5f210f76fd4c1788312adfc0d4b36b5299a9ec79757eaadd98b49179ffc14930a8e51887b8b8'
|
data/bin/why_im_broke
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
class WhyImBrokeCli::CLI
|
2
|
+
|
3
|
+
def call
|
4
|
+
welcome
|
5
|
+
menu
|
6
|
+
end
|
7
|
+
|
8
|
+
def welcome
|
9
|
+
puts "Welcome to This Is Why I'm Broke."
|
10
|
+
puts "These are the 101 best things to do in NYC plus a little extra:"
|
11
|
+
WhyImBrokeCli::Scraper.activate
|
12
|
+
end
|
13
|
+
|
14
|
+
def menu
|
15
|
+
input = nil
|
16
|
+
while input != "exit"
|
17
|
+
puts "You can type list, search, or exit:"
|
18
|
+
input = gets.strip.downcase
|
19
|
+
|
20
|
+
if input == "list"
|
21
|
+
list
|
22
|
+
elsif input == "search"
|
23
|
+
search
|
24
|
+
else
|
25
|
+
puts "Sorry try again" unless input == "exit"
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
goodbye
|
30
|
+
end
|
31
|
+
|
32
|
+
def list
|
33
|
+
WhyImBrokeCli::Item.list
|
34
|
+
puts "You can enter a number to learn more about an event:"
|
35
|
+
input = gets.strip.downcase
|
36
|
+
if input.to_i <= 0 || input.to_i > 102
|
37
|
+
puts "Sorry try again"
|
38
|
+
else
|
39
|
+
WhyImBrokeCli::Item.details(input.to_i - 1)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def search
|
44
|
+
puts "You can search by type of event:"
|
45
|
+
puts "(Bars, Attractions, Restaurants, Museums, Movie, Comedy, Theater, Things to do, Music, Sports, Shopping, Nightlife, Health)"
|
46
|
+
input = gets.strip.capitalize
|
47
|
+
|
48
|
+
if WhyImBrokeCli::Item.search_by_type(input) == []
|
49
|
+
puts "Sorry try again"
|
50
|
+
else
|
51
|
+
x = WhyImBrokeCli::Item.search_by_type(input)
|
52
|
+
puts "You can enter a number to learn more about an event:"
|
53
|
+
input = gets.strip.to_i
|
54
|
+
|
55
|
+
if input <= 0 || input > x.size
|
56
|
+
puts "Sorry try again"
|
57
|
+
else
|
58
|
+
WhyImBrokeCli::Item.details_for_search(x, input.to_i - 1)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def goodbye
|
64
|
+
puts "Goodbye Friend"
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
class WhyImBrokeCli::Item
|
2
|
+
|
3
|
+
@@all = []
|
4
|
+
attr_accessor :type, :title, :location, :info, :url
|
5
|
+
|
6
|
+
def initialize(type, title, location, info, url)
|
7
|
+
@type = type
|
8
|
+
@title = title
|
9
|
+
@location = location
|
10
|
+
@info = info
|
11
|
+
@url = url
|
12
|
+
@@all.push(self) unless @@all.include?(self) || self.title == ""
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.all
|
16
|
+
@@all
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.list
|
20
|
+
@@all.each_with_index do |item, i|
|
21
|
+
puts "#{i + 1}. #{item.title}"
|
22
|
+
end
|
23
|
+
nil
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.details(num)
|
27
|
+
x = all[num]
|
28
|
+
puts "\n"
|
29
|
+
puts "All you need to know for, #{num + 1}. #{x.title}:"
|
30
|
+
puts "\n"
|
31
|
+
puts "Type of activity: #{x.type}"
|
32
|
+
puts "\n"
|
33
|
+
puts "Location: #{x.location}"
|
34
|
+
puts "\n"
|
35
|
+
puts "Description: #{x.info}"
|
36
|
+
puts "\n"
|
37
|
+
puts "Website: #{x.url}"
|
38
|
+
puts "\n"
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.search_by_type(input)
|
42
|
+
x = all.select do |item|
|
43
|
+
item.type.include?(input)
|
44
|
+
end
|
45
|
+
x.each_with_index do |item, i|
|
46
|
+
puts "#{i + 1}. #{item.title}"
|
47
|
+
end
|
48
|
+
x
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.details_for_search(array, num)
|
52
|
+
x = array[num]
|
53
|
+
puts "\n"
|
54
|
+
puts "All you need to know for, #{num + 1}. #{x.title}:"
|
55
|
+
puts "\n"
|
56
|
+
puts "Type of activity: #{x.type}"
|
57
|
+
puts "\n"
|
58
|
+
puts "Location: #{x.location}"
|
59
|
+
puts "\n"
|
60
|
+
puts "Description: #{x.info}"
|
61
|
+
puts "\n"
|
62
|
+
puts "Website: #{x.url}"
|
63
|
+
puts "\n"
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class WhyImBrokeCli::Scraper
|
2
|
+
|
3
|
+
|
4
|
+
def self.activate
|
5
|
+
html = "https://www.timeout.com/newyork/things-to-do/101-things-to-do-in-new-york"
|
6
|
+
doc = Nokogiri::HTML(open(html))
|
7
|
+
|
8
|
+
container = doc.css("article.listCard")
|
9
|
+
|
10
|
+
container.each do |item|
|
11
|
+
type = item.css("div.category").text.strip
|
12
|
+
title = item.css("h3.card-title").text.strip.capitalize
|
13
|
+
location = item.css("span.bold").text.strip
|
14
|
+
info = item.css("div.js-card-desc-content").css("p").text
|
15
|
+
|
16
|
+
if item.css("a.amp-btn-secondary")[0] == nil
|
17
|
+
url = "No link provided for this event."
|
18
|
+
else
|
19
|
+
url = "https://www.timeout.com" + item.css("a.amp-btn-secondary")[0].attribute("href").value
|
20
|
+
end
|
21
|
+
|
22
|
+
x = WhyImBrokeCli::Item.new(type, title, location, info, url)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: why_im_broke
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- "'Matt Wright'"
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-11-03 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: '2.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
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: pry
|
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: nokogiri
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: Program that takes a number of different activities to do in NYC and
|
70
|
+
allows users to select an option for a more detailed description.
|
71
|
+
email:
|
72
|
+
- "'mttwright@gmail.com'"
|
73
|
+
executables:
|
74
|
+
- why_im_broke
|
75
|
+
extensions: []
|
76
|
+
extra_rdoc_files: []
|
77
|
+
files:
|
78
|
+
- bin/why_im_broke
|
79
|
+
- config/environment.rb
|
80
|
+
- lib/why_im_broke_cli.rb
|
81
|
+
- lib/why_im_broke_cli/cli.rb
|
82
|
+
- lib/why_im_broke_cli/item.rb
|
83
|
+
- lib/why_im_broke_cli/scraper.rb
|
84
|
+
- lib/why_im_broke_cli/version.rb
|
85
|
+
homepage: https://github.com/mttwright/why_im_broke_cli.git
|
86
|
+
licenses:
|
87
|
+
- MIT
|
88
|
+
metadata: {}
|
89
|
+
post_install_message:
|
90
|
+
rdoc_options: []
|
91
|
+
require_paths:
|
92
|
+
- lib
|
93
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
requirements: []
|
104
|
+
rubygems_version: 3.0.3
|
105
|
+
signing_key:
|
106
|
+
specification_version: 4
|
107
|
+
summary: Program that takes a number of different activities to do in NYC.
|
108
|
+
test_files: []
|