QuarantineLiveStreams 0.1.0 → 0.1.1

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: 90b1753bfc1e5543cd0c5e1dd84ae5e6a5dac45c022b4c08ca961d50028b0b08
4
- data.tar.gz: dc427283450842321241d7c3d90a31c853aa4c798a5a61b106181e2e015efe24
3
+ metadata.gz: 33d57f4e47a08abbf378b6dd31797782838331a3ffd4f904940ff01653e58e71
4
+ data.tar.gz: 026420e64659a371ae774b77e0ae89fee52475f60bffa6f9c82cfed8c51c6719
5
5
  SHA512:
6
- metadata.gz: 25f56453c5f67f146f3cdf4dbd35cce3502b45f5f2036eee64fddfcc545a693f1832198a9be9b767351d08aad4dc9cd472eac02130b7994f921ceda916f2a60d
7
- data.tar.gz: f2eb3223502d96427a944ceea9ce05f2af44fe93094464b32ddc55ca8af8f34a0be5d81d9b404462b8bc595e70f155d7c59effab1b30e8bece12e64c7ff947bc
6
+ metadata.gz: 644beb588f1d92eb2545da2f2968457f1c55964f65e96e39fe9a43085d5d7ac0a6631a22151d7c4529ae6845b14b9bb47304dcbed38da513e0fc71327cbb30d7
7
+ data.tar.gz: f932baa4d132bce79c7792ff4ecd6a9d2bdd0527db19eb5250fd1bc0bfbf3dedd9a0deb5b91f34950db8817016cb1e79bfdad43545c1bccb0d3da82ed1bbc7ad
@@ -0,0 +1,34 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ QuarantineLiveStreams (0.1.1)
5
+ colorize (~> 0.8.1)
6
+ nokogiri
7
+ uri
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ coderay (1.1.2)
13
+ colorize (0.8.1)
14
+ method_source (1.0.0)
15
+ mini_portile2 (2.4.0)
16
+ nokogiri (1.10.9)
17
+ mini_portile2 (~> 2.4.0)
18
+ pry (0.13.1)
19
+ coderay (~> 1.1)
20
+ method_source (~> 1.0)
21
+ rake (13.0.1)
22
+ uri (0.10.0)
23
+
24
+ PLATFORMS
25
+ ruby
26
+
27
+ DEPENDENCIES
28
+ QuarantineLiveStreams!
29
+ bundler (~> 2.0)
30
+ pry
31
+ rake (~> 13.0)
32
+
33
+ BUNDLED WITH
34
+ 2.1.4
@@ -12,19 +12,16 @@ Gem::Specification.new do |spec|
12
12
  spec.license = "MIT"
13
13
  spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
14
14
 
15
- #spec.metadata["allowed_push_host"] = spec.homepage
16
-
17
15
  spec.metadata["homepage_uri"] = spec.homepage
18
16
  spec.metadata["source_code_uri"] = "https://github.com/mattenbar/QLS"
19
- #spec.metadata["changelog_uri"] = "https://github.com/mattenbar/QLS.git"
20
17
 
21
18
  # Specify which files should be added to the gem when it is released.
22
19
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
20
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
24
21
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
22
  end
26
- spec.bindir = "exe"
27
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
+ spec.bindir = "bin"
24
+ spec.executables = ["QLS"]
28
25
  spec.require_paths = ["lib"]
29
26
 
30
27
  spec.add_development_dependency "bundler", "~> 2.0"
data/bin/QLS CHANGED
@@ -1,4 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
- require_relative "../lib/QuarantineLiveStreams"
2
+
3
+ # Have bundler/setup run so that that setup script, which loads dependencies, can run.
4
+ # Once done, you can require your gem from source itself.
5
+ # You can actually just require the gem, it will know to look lin lib QuarantineLiveStreams
6
+ # require_relative "../lib/QuarantineLiveStreams"
7
+ require "bundler/setup"
8
+ require 'QuarantineLiveStreams'
3
9
 
4
10
  QuarantineLiveStreams::CLI.new.call
@@ -1,8 +1,12 @@
1
+ require 'nokogiri'
2
+ require 'open-uri'
3
+ require 'pry'
4
+ require 'colorize'
5
+
1
6
  require_relative "./QuarantineLiveStreams/version"
2
7
  require_relative "./QuarantineLiveStreams/cli"
3
8
  require_relative "./QuarantineLiveStreams/scraper"
4
9
  require_relative "./QuarantineLiveStreams/event"
5
- require 'nokogiri'
6
- require 'open-uri'
7
- require 'pry'
8
- require 'colorize'
10
+
11
+ module QuarantineLiveStreams
12
+ end
@@ -19,147 +19,129 @@ class QuarantineLiveStreams::CLI
19
19
 
20
20
  case input
21
21
  when "all"
22
- puts ""
23
- puts "Enter the number of the event you would like to see,"
24
- puts "or 0 to go back to menu"
25
- display_all_event_names
26
- puts ""
27
- puts "Enter the number of the event you would like to see,"
28
- puts "or 0 to go back to menu"
29
- puts ""
30
- all_input = gets.strip.to_i
22
+ all
23
+ when "dates"
24
+ dates
25
+ when "genres"
26
+ genres
27
+ end
28
+ end
29
+ end
30
+
31
+ def all
32
+ puts ""
33
+ puts "Enter the number of the event you would like to see,"
34
+ puts "or 0 to go back to menu"
35
+ QuarantineLiveStreams::Event.display_all_event_names
36
+ puts ""
37
+ puts "Enter the number of the event you would like to see,"
38
+ puts "or 0 to go back to menu"
39
+ puts ""
40
+ all_input = gets.strip.to_i
31
41
 
32
- if all_input > 0 && all_input <= QuarantineLiveStreams::Event.all.length
42
+ if all_input > 0 && all_input <= QuarantineLiveStreams::Event.all.length
33
43
 
34
- @current_event = QuarantineLiveStreams::Event.all[all_input - 1]
44
+ current_event = QuarantineLiveStreams::Event.all[all_input - 1]
35
45
 
36
- puts ""
37
- puts "Live Stream: #{@current_event.name}"
38
- puts "Genre: #{@current_event.genre}"
39
- puts "Date: #{@current_event.date}"
40
- puts "Time: #{@current_event.time} ET."
41
- puts "Link: #{@current_event.link.colorize(:green)}"
42
- puts ""
43
- end
46
+ puts ""
47
+ puts "Live Stream: #{current_event.name}"
48
+ puts "Genre: #{current_event.genre}"
49
+ puts "Date: #{current_event.date}"
50
+ puts "Time: #{current_event.time} ET."
51
+ puts "Link: #{current_event.link.colorize(:green)}"
52
+ puts ""
53
+ end
54
+ end
44
55
 
45
- when "dates"
46
- puts ""
47
- display_all_dates #shows all dates
48
- puts ""
49
- puts "Please enter the number for the date to see events for that date,"
50
- puts "or 0 to go back to main menu"
51
- puts ""
52
- date_input = gets.strip.to_i #gets what date we want from user
53
- puts ""
56
+ def dates
57
+ puts ""
58
+ QuarantineLiveStreams::Event.display_all_dates #shows all dates
59
+ puts ""
60
+ puts "Please enter the number for the date to see events for that date,"
61
+ puts "or 0 to go back to main menu"
62
+ puts ""
63
+ date_input = gets.strip.to_i #gets what date we want from user
64
+ puts ""
54
65
 
55
66
 
56
- current_date = @all_dates_array[date_input - 1]
67
+ current_date = QuarantineLiveStreams::Event.all_dates_array[date_input - 1]
57
68
 
58
- QuarantineLiveStreams::Event.find_by_date(@all_dates_array.index(current_date)) #searching by string name
69
+ QuarantineLiveStreams::Event.display_by_date(QuarantineLiveStreams::Event.all_dates_array.index(current_date)) #searching by string name
59
70
 
60
- if date_input > 0 && date_input <= @all_dates_array.length
61
- @events_by_date = QuarantineLiveStreams::Event.all.each_with_index do |event_obj, index|
62
- if event_obj.date == current_date
63
- puts "#{index + 1}. #{event_obj.name}"
64
- event_obj
65
- end
71
+ if date_input > 0 && date_input <= QuarantineLiveStreams::Event.all_dates_array.length
72
+ @events_by_date = QuarantineLiveStreams::Event.all.each_with_index do |event_obj, index|
73
+ if event_obj.date == current_date
74
+ puts "#{index + 1}. #{event_obj.name}"
75
+ event_obj
66
76
  end
77
+ end
67
78
 
68
- puts ""
69
- puts "Please enter the number of the event you would like more info about,"
70
- puts "or 0 to return to main menu"
71
- puts ""
72
- event_input = gets.strip.to_i
73
- puts ""
79
+ puts ""
80
+ puts "Please enter the number of the event you would like more info about,"
81
+ puts "or 0 to return to main menu"
82
+ puts ""
83
+ event_input = gets.strip.to_i
84
+ puts ""
74
85
 
75
86
 
76
- if event_input > 0 && event_input <= QuarantineLiveStreams::Event.all.length
87
+ if event_input > 0 && event_input <= QuarantineLiveStreams::Event.all.length
77
88
  @current_event = QuarantineLiveStreams::Event.all[event_input - 1]
78
89
 
79
- puts "Live Stream: #{@current_event.name}"
80
- puts "Genre: #{@current_event.genre}"
81
- puts "Date: #{@current_event.date}"
82
- puts "Time: #{@current_event.time} ET."
83
- puts "Link: #{@current_event.link.colorize(:green)}"
84
- end
85
- end
90
+ puts "Live Stream: #{@current_event.name}"
91
+ puts "Genre: #{@current_event.genre}"
92
+ puts "Date: #{@current_event.date}"
93
+ puts "Time: #{@current_event.time} ET."
94
+ puts "Link: #{@current_event.link.colorize(:green)}"
95
+ end
96
+ end
97
+ end
86
98
 
87
- when "genres"
88
- puts ""
89
-
90
- display_all_genres
91
- puts ""
92
- puts "please enter the number of the genre you would like to see events for,"
93
- puts "or 0 to go back to main menu"
94
- puts ""
95
- genre_input = gets.strip.to_i
96
- puts ""
97
-
98
- current_genre = @all_genres_array[genre_input - 1]
99
- QuarantineLiveStreams::Event.find_by_genre(@all_genres_array.index(current_genre))
99
+ def genres
100
+ puts ""
101
+ QuarantineLiveStreams::Event.display_all_genres
102
+ puts ""
103
+ puts "please enter the number of the genre you would like to see events for,"
104
+ puts "or 0 to go back to main menu"
105
+ puts ""
106
+ genre_input = gets.strip.to_i
107
+ puts ""
108
+
109
+ current_genre = QuarantineLiveStreams::Event.all_genres_array[genre_input - 1]
110
+ QuarantineLiveStreams::Event.find_by_genre(QuarantineLiveStreams::Event.all_genres_array.index(current_genre))
100
111
 
101
112
 
102
- if genre_input > 0 && genre_input <= @all_genres_array.length
103
- @events_by_genre = QuarantineLiveStreams::Event.all.each_with_index do |event_obj, index|
104
- if event_obj.genre == current_genre
105
- puts "#{index + 1}. #{event_obj.name}"
106
- event_obj
107
- end
113
+ if genre_input > 0 && genre_input <= QuarantineLiveStreams::Event.all_genres_array.length
114
+ @events_by_genre = QuarantineLiveStreams::Event.all.each_with_index do |event_obj, index|
115
+ if event_obj.genre == current_genre
116
+ puts "#{index + 1}. #{event_obj.name}"
117
+ event_obj
108
118
  end
119
+ end
109
120
 
110
- puts ""
111
- puts "Please enter the number of the event you would like more info about"
112
- puts "or 0 to go back to main menu"
113
- puts ""
114
- event_input = gets.strip.to_i
115
- puts ""
116
-
117
- if event_input > 0 && event_input <= QuarantineLiveStreams::Event.all.length
118
- @current_event = QuarantineLiveStreams::Event.all[event_input - 1]
121
+ puts ""
122
+ puts "Please enter the number of the event you would like more info about"
123
+ puts "or 0 to go back to main menu"
124
+ puts ""
125
+ event_input = gets.strip.to_i
126
+ puts ""
127
+
128
+ if event_input > 0 && event_input <= QuarantineLiveStreams::Event.all.length
129
+ current_event = QuarantineLiveStreams::Event.all[event_input - 1]
119
130
 
120
- puts "Live Stream: #{@current_event.name}"
121
- puts "Genre: #{@current_event.genre}"
122
- puts "Date: #{@current_event.date}"
123
- puts "Time: #{@current_event.time} ET."
124
- puts "Link: #{@current_event.link.colorize(:green)}"
125
- end
126
- end
131
+ puts "Live Stream: #{current_event.name}"
132
+ puts "Genre: #{current_event.genre}"
133
+ puts "Date: #{current_event.date}"
134
+ puts "Time: #{current_event.time} ET."
135
+ puts "Link: #{current_event.link.colorize(:green)}"
127
136
  end
128
- end
137
+ end
129
138
  end
130
139
 
131
140
  def make_events
141
+ # Let's talk about memoization
132
142
  QuarantineLiveStreams::Event.create_from_collection
133
143
  end
134
144
 
135
- def display_all_event_names
136
- QuarantineLiveStreams::Event.all.each_with_index do |event_obj, index|
137
- puts "#{index + 1}. #{event_obj.name}"
138
- end
139
- end
140
-
141
- def display_all_dates
142
- @all_dates_array = QuarantineLiveStreams::Event.all.map do |event_obj|
143
- event_obj.date
144
- end
145
-
146
- @all_dates_array = @all_dates_array.uniq
147
- @all_dates_array.each_with_index do |date, index|
148
- puts "#{index + 1}. #{date}"
149
- end
150
- end
151
-
152
- def display_all_genres
153
- @all_genres_array = QuarantineLiveStreams::Event.all.map do |event_obj|
154
- event_obj.genre
155
- end
156
-
157
- @all_genres_array = @all_genres_array.uniq
158
- @all_genres_array.each_with_index do |genre, index|
159
- puts "#{index + 1}. #{genre}"
160
- end
161
- end
162
-
163
145
  def welcome
164
146
  puts ""
165
147
  puts "|******************************|".colorize(:light_blue)
@@ -2,7 +2,9 @@ class QuarantineLiveStreams::Event
2
2
  attr_accessor :date, :genre, :name, :time, :link
3
3
 
4
4
  @@all = []
5
- @events_by_genre = []
5
+ @@events_by_genre = []
6
+ @@events_by_date = []
7
+ @@all_dates_array = []
6
8
 
7
9
  def initialize(event_hash)
8
10
  @date = event_hash[:date]
@@ -12,8 +14,10 @@ class QuarantineLiveStreams::Event
12
14
  @link = event_hash[:link]
13
15
  @@all << self
14
16
  end
15
-
16
- def self.create_from_collection(events_array = QuarantineLiveStreams::Scraper.scrape_site)
17
+
18
+ def self.create_from_collection(events_array = nil)
19
+ # Nicer way to allow for an argument with a default that's complex.
20
+ events_array ||= QuarantineLiveStreams::Scraper.scrape_npr
17
21
  events_array.each do |event_hash|
18
22
  self.new(event_hash)
19
23
  end
@@ -24,26 +28,63 @@ class QuarantineLiveStreams::Event
24
28
  end
25
29
 
26
30
  def self.find_by_genre(genre)
27
- @events_by_genre = []
28
- QuarantineLiveStreams::Event.all.each do |event_obj|
29
- if event_obj.genre == genre
30
- @events_by_genre << event_obj
31
- end
31
+ @@events_by_genre = QuarantineLiveStreams::Event.all.map{|e| e.genre == genre}
32
+ end
33
+
34
+ def self.display_by_date(date)
35
+ @@events_by_date = QuarantineLiveStreams::Event.all.map {|e| e.date == date}
36
+ end
37
+
38
+ def self.display_all_dates
39
+ self.create_dates_array
40
+ self.print_dates
41
+ end
42
+
43
+ def self.create_dates_array
44
+ @@all_dates_array = QuarantineLiveStreams::Event.all.map do |event_obj|
45
+ event_obj.date
46
+ end
47
+
48
+ @@all_dates_array = @@all_dates_array.uniq
49
+ end
50
+
51
+ def self.print_dates
52
+ @@all_dates_array.each_with_index do |date, index|
53
+ puts "#{index + 1}. #{date}"
32
54
  end
33
- @events_by_genre.each_with_index do |event_obj, index|
55
+ end
56
+
57
+ def self.display_all_event_names
58
+ # This sounds like it should be part of the Event class...
59
+ self.all.each_with_index do |event_obj, index|
34
60
  puts "#{index + 1}. #{event_obj.name}"
35
61
  end
36
62
  end
37
63
 
38
- def self.find_by_date(date)
39
- @events_by_date = []
40
- QuarantineLiveStreams::Event.all.each do |event_obj|
41
- if event_obj.date == date
42
- @events_by_date << event_obj
43
- end
64
+ def self.all_dates_array
65
+ @@all_dates_array
66
+ end
67
+
68
+ def self.display_all_genres
69
+ self.create_genres_array
70
+ self.print_genres
71
+ end
72
+
73
+ def self.print_genres
74
+ @@all_genres_array.each_with_index do |genre, index|
75
+ puts "#{index + 1}. #{genre}"
44
76
  end
45
- @events_by_date.each_with_index do |event_obj, index|
46
- puts "#{index + 1}. #{event_obj.name}"
77
+ end
78
+
79
+ def self.create_genres_array
80
+ @@all_genres_array = QuarantineLiveStreams::Event.all.map do |event_obj|
81
+ event_obj.genre
47
82
  end
83
+
84
+ @@all_genres_array = @@all_genres_array.uniq
85
+ end
86
+
87
+ def self.all_genres_array
88
+ @@all_genres_array
48
89
  end
49
90
  end
@@ -1,13 +1,16 @@
1
1
  class QuarantineLiveStreams::Scraper
2
- @events_array = []
2
+ @events_array = [] # Not sure if you need these class instance variables.
3
+ # Let's go over them.
3
4
 
4
- def self.scrape_site
5
+ def self.scrape_npr
5
6
  url = "https://www.npr.org/2020/03/17/816504058/a-list-of-live-virtual-concerts-to-watch-during-the-coronavirus-shutdown"
6
7
  doc = Nokogiri::HTML(open(url))
7
8
  content = doc.css(".storytext")
8
9
  found = false
9
10
  date = "test"
10
11
  genre = "test"
12
+ # This is pretty messy but scraping always is but this could probably be
13
+ # cleaned up a ton if I looked at the page.
11
14
  content.children.each do |el|
12
15
  if (el.name == 'h3')
13
16
  found = true
@@ -27,7 +30,8 @@ class QuarantineLiveStreams::Scraper
27
30
  time = el.text.gsub(/.*?(?=Time)/im, "")
28
31
  event_hash[:time] = time = time.slice(0..(time.index('. ETL')))
29
32
  if event_hash[:link] = el.css('a').attr('href')
30
- event_hash[:link] = el.css('a').attr('href').value
33
+ # INDENT
34
+ event_hash[:link] = el.css('a').attr('href').value
31
35
  end
32
36
  @events_array << event_hash
33
37
  end
@@ -1,3 +1,3 @@
1
1
  module QuarantineLiveStreams
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: QuarantineLiveStreams
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - mattenbar
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2020-04-29 00:00:00.000000000 Z
12
12
  dependencies:
@@ -98,7 +98,8 @@ description: Scrapes upcoming events that are being live streamed and then retur
98
98
  the date time and link ot the event
99
99
  email:
100
100
  - matthew.enbar@gmail.com
101
- executables: []
101
+ executables:
102
+ - QLS
102
103
  extensions: []
103
104
  extra_rdoc_files: []
104
105
  files:
@@ -106,8 +107,10 @@ files:
106
107
  - ".gitignore"
107
108
  - CODE_OF_CONDUCT.md
108
109
  - Gemfile
110
+ - Gemfile.lock
109
111
  - LICENSE.txt
110
112
  - NOTES.md
113
+ - QuarantineLiveStreams-0.1.0.gem
111
114
  - QuarantineLiveStreams.gemspec
112
115
  - README.md
113
116
  - Rakefile