best_music 0.1.0 → 1.0.0

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: 6567e47de1b0ad90672f3f66f58d3b9a661ec57d1a06f2bce594243d2877feae
4
- data.tar.gz: 9da5ac359ba142893b1d882b84c76bf02a613c682f18487bd38e461a012da762
3
+ metadata.gz: f68ceff34e38f99e007c5f610dc9cb1fa56fadd2667c2fe25ae400565285be70
4
+ data.tar.gz: 48e6ed2d37dbaeddcdfc2f24961e407a0496a6b2adc536a1845e45343ac2fe27
5
5
  SHA512:
6
- metadata.gz: 0abbdc57138a1f7bfe2b440933d909d241c2c402ca82a0e4e11fcb505487fc2695d6af53c6eba5a2260f9aff5389d3fc12f6498b59cc18c881fa312d9a81ec8e
7
- data.tar.gz: eaaf2980ce4759517f16b2696848eb48e32ee9a7bb9412f5a5dfdbb6afcd42c7ded33112eb221c3461f0a83b955e42b275fdf6980381be65f5abb89bb830da79
6
+ metadata.gz: f8b2bf303217dd2ee72a01831eeb3fe253a8f310f8e735d51793d7d872585ceb41484d64d63aad9c1e963b1d92f64c1fca15060f195ac5432ce02c0126337ade
7
+ data.tar.gz: d62d07379dde05ade6c1f7f8c5b1272e07ce595aedf45c020f227b2ca70036ad1b913327d694d4ff62aa8bb98fd03b5cfd2d4fda293ad833128aea6237f1ca68
data/.DS_Store ADDED
Binary file
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Best Music
2
2
 
3
- _Best Music_ is a CLI app that returns Pitchfork.com's _Best New Albums_ in realtime. It allows easy browsability by genre and score and provides a brief album description and link to the full review online.
3
+ _Best Music_ is a CLI app that returns Pitchfork.com's "Best New Albums" in realtime. It allows easy browsability by genre and score and provides a brief album description and link to the full review online.
4
4
 
5
5
  ## Installation
6
6
 
@@ -26,10 +26,10 @@ Once you've installed/cloned/downloaded the Gem, run `bin/setup` to install depe
26
26
 
27
27
  To launch _Best Music_, simply run `bin/best-music`. The app returns live data from more than a dozen webpages, so it may take a few seconds to launch. Thanks for your patience!
28
28
 
29
- Once _Best Music_ has loaded, you will have access to this week's _Best New Album_ along with a number of options for browsing the past 12 weeks' worth of _Best New Albums_. You can:
29
+ Once _Best Music_ has loaded, you will have access to this week's "Best New Album" along with a number of options for browsing the past 12 weeks' worth of "Best New Albums." You can:
30
30
 
31
- 1. Browse through a list of previous best albums by typing `list`.
32
- 2. Explore the best albums by genre. Just type `genre`.
31
+ 1. Browse through a list of previous albums by typing `list`.
32
+ 2. Explore albums by genre. Just type `genre`.
33
33
  3. Type `score` to check out the highest scoring albums.
34
34
 
35
35
  If at any point you need a refresher on your options, simply type `help` to access a list of instructions.
Binary file
data/bin/.DS_Store ADDED
Binary file
data/bin/best-music CHANGED
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- require_relative "../lib/best_music/version"
3
2
  require_relative "../lib/environment.rb"
4
3
 
5
4
  BestMusic::CLI.new.call
data/bin/setup CHANGED
@@ -4,5 +4,3 @@ IFS=$'\n\t'
4
4
  set -vx
5
5
 
6
6
  bundle install
7
-
8
- # Do any other automated setup that you need to do here
@@ -1,4 +1,4 @@
1
- require_relative './genre.rb'
1
+ require_relative '../environment.rb'
2
2
 
3
3
  class Album
4
4
  attr_accessor :name, :artist, :genre, :url, :rating, :description
@@ -0,0 +1,89 @@
1
+ require_relative '../environment.rb'
2
+
3
+ module BestMusic
4
+ class CLI
5
+ @@path = 'https://pitchfork.com/reviews/best/albums/'
6
+
7
+ def call
8
+ puts "Welcome to Best Music!".colorize( :background => :green)
9
+ puts "Please wait while we bring you the best new albums according to Pitchfork.com...".red
10
+
11
+ Scraper.album_list(@@path)
12
+ Scraper.album_score
13
+ Scraper.album_description
14
+
15
+ puts "The 'Best New Album' is:"
16
+ puts "*#{Album.all[0].name}* by #{Album.all[0].artist}".colorize(:background => :red)
17
+ puts "It has a score of #{Album.all[0].rating}".yellow
18
+ puts "Pitchfork says: \"#{Album.all[0].description}\""
19
+ puts "To read the full review and/or to learn more visit:"
20
+ puts "https://pitchfork.com#{Album.all[0].url}".green
21
+ puts "______________________".red
22
+ puts "Check out more great music!".yellow
23
+ instructions
24
+
25
+ input = ""
26
+ while input != "exit"
27
+
28
+ puts "What would you like to do?".green
29
+
30
+ input = gets.downcase.chomp
31
+
32
+ case input
33
+ when "list"
34
+ album_list
35
+ when "genre"
36
+ albums_by_genre
37
+ when "score"
38
+ albums_by_rating
39
+ when "help"
40
+ instructions
41
+ end
42
+ end
43
+ end
44
+
45
+ def album_list
46
+ puts "Below are the 12 most recent 'Best New Albums.'"
47
+ Album.all.each do |a|
48
+ puts "*#{a.name}* by #{a.artist}".colorize(:background => :red)
49
+ puts "It has a score of #{a.rating}".yellow
50
+ puts "Pitchfork says: \"#{a.description}\""
51
+ puts "To read the full review and/or to learn more visit:"
52
+ puts "https://pitchfork.com#{a.url}".green
53
+ puts "______________________".yellow
54
+ end
55
+ end
56
+
57
+ def albums_by_genre
58
+ Genre.all.each do |g|
59
+ puts "// #{g.name} //".upcase.yellow
60
+ g.albums.each do |a|
61
+ puts "*#{a.name}* by #{a.artist}".colorize(:background => :red)
62
+ puts "It has a score of #{a.rating}".yellow
63
+ puts "Pitchfork says: \"#{a.description}\""
64
+ puts "To read the full review and/or to learn more visit:"
65
+ puts "https://pitchfork.com#{a.url}".green
66
+ puts "----".red
67
+ end
68
+ end
69
+ end
70
+
71
+ def albums_by_rating
72
+ Album.albums_by_rating.each do |a|
73
+ puts "*#{a.name}* by #{a.artist}".colorize(:background => :red)
74
+ puts "It has a score of #{a.rating}".yellow
75
+ puts "Pitchfork says: \"#{a.description}\""
76
+ puts "To read the full review and/or to learn more visit:"
77
+ puts "https://pitchfork.com#{a.url}".green
78
+ puts "______________________".yellow
79
+ end
80
+ end
81
+
82
+ def instructions
83
+ puts "To list all recent 'Best New Albums,' type 'list'."
84
+ puts "To browse by genre, type 'genre'."
85
+ puts "To browse by album score, type 'score'."
86
+ puts "To quit, type 'exit'."
87
+ end
88
+ end
89
+ end
File without changes
@@ -1,9 +1,4 @@
1
- require 'open-uri'
2
- require 'nokogiri'
3
- require 'pry'
4
- require_relative './album.rb'
5
-
6
- #album_list_url = https://pitchfork.com/reviews/best/albums/
1
+ require_relative '../environment.rb'
7
2
 
8
3
  class Scraper
9
4
  def self.scrape_pitchfork(index_url)
@@ -14,7 +9,7 @@ class Scraper
14
9
  a_list = scrape_pitchfork(index_url).css(".fragment-list").css(".review")
15
10
  a_list.each do |a|
16
11
  album = a.css(".review__title-album").text
17
- artist = a.css("li")[0].text.gsub("Ã", "ü").gsub("¼", "")
12
+ artist = a.css("li")[0].text.gsub("Ã", "ü").gsub("¼", "").gsub("ü©", "é")
18
13
  genre = a.css("li")[1].text
19
14
  url = a.css("a").attr("href").value
20
15
  Genre.new(genre) if !Genre.all.collect {|g| g.name}.include?(genre)
@@ -32,8 +27,7 @@ class Scraper
32
27
  def self.album_description
33
28
  Album.all.each do |a|
34
29
  url = "https://pitchfork.com#{a.url}"
35
- description = scrape_pitchfork(url).css(".review-detail__abstract").text.gsub(/\u0099\u0080/, "").gsub(/â€(?=\Ss)/, "'")
36
- a.description = description.gsub("â€", "--").chomp
30
+ a.description = scrape_pitchfork(url).css(".review-detail__abstract").text.gsub(/\u0099\u0080/, "").gsub(/â€(?=\Ss)/, "'").gsub("â€", "--").gsub("é", "é").chomp
37
31
  end
38
32
  end
39
33
  end
@@ -1,3 +1,3 @@
1
1
  module BestMusic
2
- VERSION = "0.1.0"
2
+ VERSION = "1.0.0"
3
3
  end
data/lib/environment.rb CHANGED
@@ -1,90 +1,10 @@
1
1
  require 'colorize'
2
- require_relative './scraper.rb'
3
-
4
- module BestMusic
5
- class CLI
6
- @@path = 'https://pitchfork.com/reviews/best/albums/'
7
-
8
- def call
9
- puts "Welcome to Best Music!".colorize( :background => :green)
10
- puts "Please wait while we bring you the best new albums according to Pitchfork.com...".red
11
-
12
- Scraper.album_list(@@path)
13
- Scraper.album_score
14
- Scraper.album_description
15
-
16
- puts "The 'Best New Album' is:"
17
- puts "*#{Album.all[0].name}* by #{Album.all[0].artist}".colorize(:background => :red)
18
- puts "It has a score of #{Album.all[0].rating}".yellow
19
- puts "Pitchfork says: \"#{Album.all[0].description}\""
20
- puts "To read the full review and/or to learn more visit:"
21
- puts "https://pitchfork.com#{Album.all[0].url}".green
22
- puts "______________________".red
23
- puts "Check out more great music!".yellow
24
- instructions
25
-
26
- input = ""
27
- while input != "exit"
28
-
29
- puts "What would you like to do?".green
30
-
31
- input = gets.downcase.chomp
32
-
33
- case input
34
- when "list"
35
- album_list
36
- when "genre"
37
- albums_by_genre
38
- when "score"
39
- albums_by_rating
40
- when "help"
41
- instructions
42
- end
43
- end
44
- end
45
-
46
- def album_list
47
- puts "Below are the 'Best New Albums' for the past 12 weeks."
48
- Album.all.each do |a|
49
- puts "*#{a.name}* by #{a.artist}".colorize(:background => :red)
50
- puts "It has a score of #{a.rating}".yellow
51
- puts "Pitchfork says: \"#{a.description}\""
52
- puts "To read the full review and/or to learn more visit:"
53
- puts "https://pitchfork.com#{a.url}".green
54
- puts "______________________".yellow
55
- end
56
- end
57
-
58
- def albums_by_genre
59
- Genre.all.each do |g|
60
- puts "// #{g.name} //".upcase.yellow
61
- g.albums.each do |a|
62
- puts "*#{a.name}* by #{a.artist}".colorize(:background => :red)
63
- puts "It has a score of #{a.rating}".yellow
64
- puts "Pitchfork says: \"#{a.description}\""
65
- puts "To read the full review and/or to learn more visit:"
66
- puts "https://pitchfork.com#{a.url}".green
67
- puts "----".red
68
- end
69
- end
70
- end
71
-
72
- def albums_by_rating
73
- Album.albums_by_rating.each do |a|
74
- puts "*#{a.name}* by #{a.artist}".colorize(:background => :red)
75
- puts "It has a score of #{a.rating}".yellow
76
- puts "Pitchfork says: \"#{a.description}\""
77
- puts "To read the full review and/or to learn more visit:"
78
- puts "https://pitchfork.com#{a.url}".green
79
- puts "______________________".yellow
80
- end
81
- end
82
-
83
- def instructions
84
- puts "To list all recent 'Best New Albums,' type 'list'."
85
- puts "To browse by genre, type 'genre'."
86
- puts "To browse by album score, type 'score'."
87
- puts "To quit, type 'exit'."
88
- end
89
- end
90
- end
2
+ require 'open-uri'
3
+ require 'nokogiri'
4
+ require 'pry'
5
+
6
+ require_relative './best_music/album.rb'
7
+ require_relative './best_music/cli.rb'
8
+ require_relative './best_music/genre.rb'
9
+ require_relative './best_music/scraper.rb'
10
+ require_relative './best_music/version.rb'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: best_music
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - cyantis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-04-12 00:00:00.000000000 Z
11
+ date: 2019-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -47,6 +47,7 @@ executables: []
47
47
  extensions: []
48
48
  extra_rdoc_files: []
49
49
  files:
50
+ - ".DS_Store"
50
51
  - ".Rhistory"
51
52
  - ".gitignore"
52
53
  - Gemfile
@@ -54,15 +55,17 @@ files:
54
55
  - LICENSE.txt
55
56
  - README.md
56
57
  - Rakefile
58
+ - best_music-0.1.0.gem
57
59
  - best_music.gemspec
60
+ - bin/.DS_Store
58
61
  - bin/best-music
59
- - bin/console
60
62
  - bin/setup
61
- - lib/album.rb
63
+ - lib/best_music/album.rb
64
+ - lib/best_music/cli.rb
65
+ - lib/best_music/genre.rb
66
+ - lib/best_music/scraper.rb
62
67
  - lib/best_music/version.rb
63
68
  - lib/environment.rb
64
- - lib/genre.rb
65
- - lib/scraper.rb
66
69
  homepage: https://github.com/cyantis/best_music
67
70
  licenses:
68
71
  - MIT
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "best_music"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)