top-100-movies 0.1.1 → 0.1.2

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
- SHA1:
3
- metadata.gz: 4be38d3caeca3bc1ad21abcace666f1745bfb99c
4
- data.tar.gz: 3ff9ba382dd79bf24bc38b760ff22b1ff641e823
2
+ SHA256:
3
+ metadata.gz: 0711f4259d9ca4ad96a48af9107d727636f88b025b25fe85b8b658d1ab49bf41
4
+ data.tar.gz: 5fa15f38ffc8153aab2bbf8b314c860ba686760cca5fad40d5e6e6a855109fee
5
5
  SHA512:
6
- metadata.gz: cb1fd5acd972c1751bd0f6423fd63279ba15254f78e02ced12eb9892f283910dda41a68c4cf1eb0e0580fd0d677b2d52e58bd0c013fea60ec1c3504277e95a0c
7
- data.tar.gz: b7aacd63257624304a5ef1c975cf083b685d178f8fcb63ba490c697712d704dc50829c8d3e715904724a458c81496c3955f6011d24c5f02c7cbe2bfe81be95f6
6
+ metadata.gz: 007de4ce4ec8c3aad7b0bb4eee29b9b13f46f0ca3971167fbca01c4d2f85ee3d6b459c8a40e94dd9c179f08266dc48f48b9cfc6d7a14c877caea725538a7e7d0
7
+ data.tar.gz: f7fc42fd4c3001676bb14805a35a6680ba10d53aed1b31bb7fbc69706d2ec3bd8899fe4ce3b32c7a0770f246c695147e2f84e654152afcbd860a6a18ad8e1c10
data/README.md CHANGED
@@ -20,7 +20,8 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- TODO: Write usage instructions here
23
+ Follow the on screen prompts from
24
+ `bin/top_100_movies`
24
25
 
25
26
  ## Development
26
27
 
@@ -1,29 +1,28 @@
1
1
  class Top100Movies::CLI
2
2
  def call
3
3
  Top100Movies::Scraper.new.generate_movies
4
- puts "******************************************************"
5
- puts "****** WELCOME TO TOP 100 MOVIES! ******"
6
- puts "******************************************************"
7
- puts ""
8
- list_movies
9
4
  start
10
5
  end
11
6
 
12
7
  def start
13
-
8
+ puts "******************************************************"
9
+ puts "****** WELCOME TO TOP 100 MOVIES! ******"
10
+ puts "******************************************************"
11
+ list_movies
12
+ puts ""
14
13
  puts ""
15
14
  puts "Type 'exit' to exit the program"
16
15
  puts "Please enter the number of the movie you'd like to know more about"
17
16
  puts ""
18
17
  input = gets.chomp
19
- if input.to_i > 0 && input.to_i <= 100
18
+ if input.to_i > 0 && input.to_i <= 100 #between
20
19
  movie = Top100Movies::Movie.find(input.to_i)
21
20
  Top100Movies::Movie.print_movie(movie)
22
21
  puts ""
23
22
  print "Would you like to checkout another movie? (y/n): "
24
23
  repeat = gets.chomp
25
24
  if repeat.downcase == 'y'
26
- call
25
+ start
27
26
  else
28
27
  puts "Goodbye!"
29
28
  exit
@@ -38,9 +37,8 @@ class Top100Movies::CLI
38
37
  end
39
38
 
40
39
  def list_movies
41
- puts " Rank | Name | Score "
42
40
  Top100Movies::Movie.all.each do |movie|
43
- puts " #{movie.rank}. #{movie.name} #{movie.rating}"
41
+ printf "%4s %-2s \n", "#{movie.rank}.", movie.name
44
42
  end
45
43
  end
46
44
  end
@@ -1,6 +1,6 @@
1
1
  class Top100Movies::Movie
2
2
  attr_accessor :rank, :name, :score, :url, :synopsis, :rating, :genres, :directors,
3
- :writers, :release_date, :box_office, :runtime, :studio
3
+ :writers, :release_date, :disc_release_date, :box_office, :runtime, :studio
4
4
 
5
5
  @@all = []
6
6
 
@@ -9,7 +9,9 @@ class Top100Movies::Movie
9
9
  @name = name
10
10
  @score = score
11
11
  @url = url
12
+ @disc_release_date = "N/A"
12
13
  @box_office = "N/A"
14
+ @writers = "N/A"
13
15
  @@all << self
14
16
  end
15
17
 
@@ -18,25 +20,17 @@ class Top100Movies::Movie
18
20
  index.search(".bold").text.tr('\.',''),
19
21
  index.search(".unstyled").text.strip,
20
22
  index.search(".tMeterScore").text.strip,
21
- self.scrape_url(index)
23
+ Top100Movies::Scraper.scrape_url(index)
22
24
  )
23
25
  end
24
26
 
25
- def self.scrape_url(index)
26
- url = "https://www.rottentomatoes.com"
27
- index.search("a").each do |link|
28
- url += link['href']
29
- end
30
- url
31
- end
32
-
33
27
  def self.all
34
- @@all.reject! { |c| c.name.empty? }
28
+ @@all.reject { |c| c.name.empty? }
35
29
  end
36
30
 
37
31
  def self.find(rank)
38
32
  if @@all[rank-1].synopsis == nil
39
- self.scrape_details(@@all[rank-1])
33
+ Top100Movies::Scraper.scrape_details(@@all[rank-1])
40
34
  @@all[rank-1]
41
35
  else
42
36
  @@all[rank-1]
@@ -47,51 +41,23 @@ class Top100Movies::Movie
47
41
  puts ""
48
42
  puts "#{movie.rank}. #{movie.name}"
49
43
  puts ""
50
- puts "SYNOPSIS"
44
+ puts "Rotten Tomatoes Score: #{movie.score}"
45
+ puts ""
46
+ puts "Synopsis"
51
47
  puts "#{movie.synopsis}"
52
48
  puts ""
53
- puts "Rating: \t#{movie.rating}"
54
- puts "Genre: \t\t#{movie.genres.join(", ")}"
55
- puts "Directors:\t#{movie.directors}"
56
- puts "Writers:\t#{movie.writers}"
57
- puts "In Theaters:\t#{movie.release_date[0..11]}"
58
- puts "Box Office:\t#{movie.box_office}"
59
- puts "Runtime: \t#{movie.runtime}"
60
- puts "Studio: \t#{movie.studio}"
61
- end
62
49
 
63
- def self.scrape_details(movie)
64
- doc = Nokogiri::HTML(open("#{movie.url}"))
65
-
66
- movie.synopsis = doc.search("div#movieSynopsis").first.text.strip
67
- details = doc.search(".meta-value").map{|i| i.text.strip}
68
-
69
- if details.size == 8
70
- genres = details[1].split(", \n")
71
- genres.map!{|genre| genre.gsub(/\s{2,}/,'')}
72
- movie.genres = genres
73
- details.delete(details[1])
50
+ printf "%18s %-2s \n", "Rating:", movie.rating
51
+ printf "%18s %-2s \n", "Genre:", movie.genres.join(", ")
52
+ printf "%18s %-2s \n", "Directors:", movie.directors
53
+ printf "%18s %-2s \n", "Writers:", movie.writers
54
+ printf "%18s %-2s \n", "In Theaters:", movie.release_date[0..11]
55
+ printf "%18s %-2s \n", "On Disc/Streaming:", movie.disc_release_date
56
+ printf "%18s %-2s \n", "Box Office:", movie.box_office
57
+ printf "%18s %-2s \n", "Runtime:", movie.runtime
58
+ printf "%18s %-2s \n", "Studio:", movie.studio
59
+ end
74
60
 
75
- movie.rating = details[0]
76
- movie.directors = details[1]
77
- movie.writers = details[2]
78
- movie.release_date = details[3]
79
- movie.runtime = details[5]
80
- movie.studio = details[6]
81
- else
82
- genres = details[1].split(", \n")
83
- genres.map!{|genre| genre.gsub(/\s{2,}/,'')}
84
- movie.genres = genres
85
- details.delete(details[1]) # delete genres
86
61
 
87
- movie.rating = details[0]
88
- movie.directors = details[1]
89
- movie.writers = details[2]
90
- movie.release_date = details[3]
91
- movie.box_office = details[5]
92
- movie.runtime = details[6]
93
- movie.studio = details[7]
94
- end
95
- end
96
62
 
97
63
  end
@@ -19,4 +19,46 @@ class Top100Movies::Scraper
19
19
  end
20
20
  end
21
21
 
22
+ def self.scrape_url(index)
23
+ url = "https://www.rottentomatoes.com"
24
+ index.search("a").each do |link|
25
+ url += link['href']
26
+ end
27
+ url
28
+ end
29
+
30
+ def self.scrape_details(movie)
31
+ doc = Nokogiri::HTML(open("#{movie.url}"))
32
+
33
+ movie.synopsis = doc.search("div#movieSynopsis").first.text.strip
34
+
35
+ labels = doc.search(".meta-label").map{|i| i.text.strip}
36
+ values = doc.search(".meta-value").map{|i| i.text.strip}
37
+
38
+ labels.each_index do |i|
39
+ case labels[i]
40
+ when "Rating:"
41
+ movie.rating = values[i]
42
+ when "Genre:"
43
+ genres = values[i].split(", \n")
44
+ genres.map!{|genre| genre.gsub(/\s{2,}/,'')}
45
+ movie.genres = genres
46
+ when "Directed By:"
47
+ movie.directors = values[i]
48
+ when "Written By:"
49
+ movie.writers = values[i]
50
+ when "In Theaters:"
51
+ movie.release_date = values[i].gsub("\n","")[0..11]
52
+ when "On Disc/Streaming"
53
+ movie.disc_release_date = values[i]
54
+ when "Box Office:"
55
+ movie.box_office = values[i]
56
+ when "Runtime:"
57
+ movie.runtime = values[i]
58
+ when "Studio:"
59
+ movie.studio = values[i]
60
+ end
61
+ end
62
+ end
63
+
22
64
  end
@@ -1,3 +1,3 @@
1
1
  module Top100Movies
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
Binary file
@@ -26,9 +26,10 @@ Gem::Specification.new do |spec|
26
26
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
27
27
  f.match(%r{^(test|spec|features)/})
28
28
  end
29
- spec.bindir = "exe"
30
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
+ spec.bindir = "bin"
30
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
31
31
  spec.require_paths = ["lib"]
32
+ spec.executables << 'top_100_movies'
32
33
 
33
34
  spec.add_development_dependency "bundler", "~> 1.16"
34
35
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: top-100-movies
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Min Suk Kim
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-13 00:00:00.000000000 Z
11
+ date: 2017-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -55,7 +55,10 @@ dependencies:
55
55
  description: All data from this gem is scraped from https://www.rottentomatoes.com
56
56
  email:
57
57
  - mk4555@nyu.edu
58
- executables: []
58
+ executables:
59
+ - console
60
+ - setup
61
+ - top_100_movies
59
62
  extensions: []
60
63
  extra_rdoc_files: []
61
64
  files:
@@ -79,6 +82,7 @@ files:
79
82
  - notes.md
80
83
  - spec.md
81
84
  - top-100-movies-0.1.0.gem
85
+ - top-100-movies-0.1.1.gem
82
86
  - top_100_movies.gemspec
83
87
  homepage: https://github.com/mk4555/top-100-movies-cli-gem
84
88
  licenses:
@@ -101,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
105
  version: '0'
102
106
  requirements: []
103
107
  rubyforge_project:
104
- rubygems_version: 2.6.14
108
+ rubygems_version: 2.7.3
105
109
  signing_key:
106
110
  specification_version: 4
107
111
  summary: CLI gem that lists and shows details of top 100 movies picked by Rotten Tomatoes