ra_events 0.0.5 → 0.0.6

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
  SHA1:
3
- metadata.gz: 2b73936f62724eb100bade025ab74a22b078d955
4
- data.tar.gz: 8a756a52598179effeb9176cff2e21cda9546d12
3
+ metadata.gz: 8ae17676f288c0d714600718b8e0894af795f8f6
4
+ data.tar.gz: 3b9c44d7e29dc7a922828b366e68680df61ff376
5
5
  SHA512:
6
- metadata.gz: b4d8823a713e23ce13572368ee3e1bf99be09c49df89e3bd8e4e94a848f1c948b0e79ac92d956e10beb3c3fe06aba6e24d81f79af1d27a84bed2b9848ef11d58
7
- data.tar.gz: 727edd037bf7eb4885464651183741b7fa2fd2e398528f2f6ea9aff57e6d251279c6d068e56fa050e87be53d33107248f963bc51813a29a00b19a567e6eae4b2
6
+ metadata.gz: 478285ff42881d57c325fd3c339946b85d4507c8aaa11551d11121c03edfd1a33391c9d5a10cd20ad92146bde591bb64bad921b1650aec63c5f72e394ab11fbf
7
+ data.tar.gz: 75728efe498e6d5d37d07f9b3045115e4d80b461dc91ff7aa6ce0f84f3ff5300db89f4e91202902c4845e8135f8eac83ea824be1c93f5ae51ba7e52a0064682b
data/lib/ra_events.rb CHANGED
@@ -2,5 +2,3 @@ require_relative "./ra_events/version"
2
2
  require_relative './ra_events/cli'
3
3
  require_relative './ra_events/scraper'
4
4
  require_relative './ra_events/event'
5
-
6
- require 'nokogiri'
data/lib/ra_events/cli.rb CHANGED
@@ -9,7 +9,6 @@ URL_BASE = "https://www.residentadvisor.net"
9
9
  welcome
10
10
  list_events(user_inputs_state)
11
11
  goto_event_url
12
- exit_program
13
12
  end
14
13
 
15
14
  def welcome
@@ -28,34 +27,49 @@ URL_BASE = "https://www.residentadvisor.net"
28
27
  end
29
28
 
30
29
  def list_events(user_inputs_state)
31
-
32
30
  display_events_this_week_text
33
31
 
34
- Event.create_from_collection(Scraper.scrape_events_page(user_inputs_state))
32
+ events_by_week = Scraper.scrape_events_page(user_inputs_state)
33
+ Event.create_from_collection(events_by_week)
35
34
  Event.all.each.with_index(1) do |event, i|
36
- i -= 1
37
- if event.title != "" && event.location != ""
35
+
36
+ if event.no_events_listed == true
37
+ puts "There are currently no events listed for this date range in this region."
38
+ puts
39
+ clear_events
40
+ call
41
+ else
38
42
  puts "#{i}. #{event.title} "
39
43
  puts "Location: #{event.location} " unless event.artists.nil?
40
44
  puts "Artists: #{event.artists}" unless event.artists.nil?
41
- puts "Date: #{event.date.gsub("T00:00", "")}"
45
+ puts "Date: #{event.date.gsub("T00:00", "")}"
42
46
  puts
43
47
  end
44
48
  end
45
49
  end
46
50
 
47
51
  def goto_event_url
48
- input = nil
49
- while input != "exit"
50
- puts "Type 1-#{Event.all.count} to view event page in your browser or type exit:"
51
- input = gets.strip
52
- if input.to_i > 0 && input.to_i < Event.all.count
52
+ puts "Type the event # you'd like to view in your browser, 'menu' or 'exit':"
53
+ input = gets.strip.downcase
54
+
55
+ if input.to_i > 0 && input.to_i <= Event.all.count
53
56
  puts "Opening residentadvisor.net..."
54
- event = Event.all[input.sub("goto ", "").to_i]
55
- URL_BASE + event.url
57
+ event = Event.all[input.to_i - 1]
58
+ puts "#{URL_BASE + event.url}"
56
59
  `open #{URL_BASE + event.url}`
60
+ goto_event_url
61
+ elsif input == "exit"
62
+ exit_program
63
+ elsif input == "menu"
64
+ main_menu
65
+ else
66
+ puts "Invalid"
67
+ goto_event_url
57
68
  end
58
- end
69
+ end
70
+
71
+ def main_menu
72
+ call
59
73
  end
60
74
 
61
75
  def display_events_this_week_text
@@ -69,7 +83,13 @@ URL_BASE = "https://www.residentadvisor.net"
69
83
  end
70
84
 
71
85
  def exit_program
72
- puts "Bye, See you on the dance floor!"
86
+ clear_events
87
+ puts "Bye, see you on the dance floor!"
88
+ exit
89
+ end
90
+
91
+ def clear_events
92
+ Event.clear
73
93
  end
74
94
 
75
95
  end
@@ -2,7 +2,7 @@ require 'pry'
2
2
 
3
3
  class Event
4
4
 
5
- attr_accessor :date, :title, :location, :artists, :url
5
+ attr_accessor :date, :title, :location, :artists, :url, :no_events_listed
6
6
 
7
7
  @@all = []
8
8
 
@@ -23,4 +23,8 @@ class Event
23
23
  def self.all
24
24
  @@all
25
25
  end
26
+
27
+ def self.clear
28
+ self.all.clear
29
+ end
26
30
  end
@@ -19,50 +19,33 @@ class Scraper
19
19
  end
20
20
 
21
21
  state_event_page_url
22
- binding.pry
23
22
  end
24
23
 
25
24
  def self.scrape_events_page(url)
26
25
  ra_events_page = Nokogiri::HTML(open(url))
27
26
 
28
27
  events = []
28
+ events << {no_events_listed: true} if self.is_real_event?(ra_events_page)
29
+
30
+ ra_events_page.css("#items").each do |event_listings|
31
+ event_listings.css('li').each do |event|
32
+ event_date = event.css('time').text
33
+ event_title = event.css('div h1 a').text.gsub("#{event.css('span a').text}", "")
34
+ event_location = event.css('span a[1]').text + " " + event.css('a[2]').text unless event.css('span a').text.empty?
35
+ event_artists = event.css('div div').text unless event.css('div div').text.empty?
36
+ event_url = event.css('a').attr('href').text
37
+
38
+ if event_title != "" && event_location != ""
39
+ events << {date: event_date, title: event_title, location: event_location, artists: event_artists, url: event_url}
40
+ end
41
+ end
42
+ end
29
43
 
30
- ra_events_page.css("#items").each do |event_listing|
31
-
32
- event_listing.css('li').each do |date| #until date.css('a').text == "Submit event"
33
- # binding.pry
34
- event_date = date.css('time').text
35
- event_title = date.css('div h1 a').text.gsub("#{date.css('span a').text}", "")
36
- event_location = date.css('span a').text unless date.css('span a').text.empty?
37
- event_artists = date.css('div div').text unless date.css('div div').text.empty?
38
- event_url = date.css('a').attr('href').text
39
-
40
- events << {date: event_date, title: event_title, location: event_location, artists: event_artists, url: event_url}
41
- # binding.pry
42
-
43
- end
44
+ events
45
+ end
44
46
 
45
- end
46
- events.compact
47
- # binding.pry
47
+ def self.is_real_event?(ra_events_page)
48
+ ra_events_page.css('.pr8').first.text.include?("no events")
48
49
  end
49
50
 
50
51
  end
51
-
52
-
53
- # This will grab the Date of all of the listed shows
54
-
55
- # ra_events_page.css("#event-listing .date").each do |e|
56
- # puts "#{e.css('a').text}"
57
- # end
58
-
59
-
60
- # ra_events_page.css("#items").each do |event_listing|
61
- #
62
-
63
- # Title: date.css('a').text || date.css('div h1').text # ex: "Selector Dub Narcotic, This Saxophone Kills Fascists at Babycastles"
64
- # Artists: date.css('div div').text
65
- # Url: date.css('a').attr('href').text
66
-
67
- # unless date.css('a').text == "Submit event"
68
-
@@ -1,3 +1,3 @@
1
1
  module RaEvents
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
data/ra_events.gemspec CHANGED
@@ -11,7 +11,8 @@ Gem::Specification.new do |spec|
11
11
  spec.email = ["mk.etlinger@gmail.com"]
12
12
 
13
13
  spec.summary = %q{ra_events lists Resident Advisor events by state from the comfort of your CLI}
14
- spec.description = %q{Type `ra-events` after running `gem install ra_events`. Then type in your state, get a list of electronic music events by week, and open an event in your browser for more details.}
14
+ spec.description = %q{*Disclaimer: ra_events uses the 'open' command to open an event URL in your browser. This will not work on Windows machines, however, the URL will be printed for easy copy/paste*
15
+ Type `ra-events` after running `gem install ra_events`. Then type in your state, get a list of electronic music events by week, and open an event in your browser for more details.}
15
16
  spec.homepage = "https://github.com/Mk-Etlinger/ra-events-cli-app"
16
17
  spec.license = "MIT"
17
18
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ra_events
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Etlinger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-04 00:00:00.000000000 Z
11
+ date: 2017-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,9 +80,9 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: 1.7.0
83
- description: Type `ra-events` after running `gem install ra_events`. Then type in
84
- your state, get a list of electronic music events by week, and open an event in
85
- your browser for more details.
83
+ description: |-
84
+ *Disclaimer: ra_events uses the 'open' command to open an event URL in your browser. This will not work on Windows machines, however, the URL will be printed for easy copy/paste*
85
+ Type `ra-events` after running `gem install ra_events`. Then type in your state, get a list of electronic music events by week, and open an event in your browser for more details.
86
86
  email:
87
87
  - mk.etlinger@gmail.com
88
88
  executables: