QuarantineLiveStreams 0.1.0 → 0.1.1

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 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