top_movies_of_the_year 0.2.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 5deb555c2cf2c63feafaff1c916e07dcc8f770660c90724dd9af32cfd6984d25
4
+ data.tar.gz: 9667b97f9a86724c845932fec6316ac9a9082aa842d09c2c7c38b4113f607074
5
+ SHA512:
6
+ metadata.gz: 5ef2d07f859f5b51e47b5e93373624b2c15cda66f776509c934532642454545c86f5c3fc4d29e7a65a98cd3cefec64a899b026bb07e041375fa4b2f2334c7bc7
7
+ data.tar.gz: 6fb688c101c24cd6d7593686a283fe839028c0551efe817d5f613bdc15a2ac72745520c65f4ceffe5059cd4deff30e7864b8748914c6586549d37f2452d4d565
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require './lib/top_movies_of_the_year'
4
+ require "bundler/setup"
5
+
6
+ TopMoviesOfTheYear::CLI.new.call
@@ -0,0 +1,13 @@
1
+ require_relative "./top_movies_of_the_year/version"
2
+ require 'open-uri'
3
+ require 'nokogiri'
4
+ require 'pry'
5
+
6
+ require_relative "./top_movies_of_the_year/version"
7
+ require_relative './top_movies_of_the_year/movies'
8
+ require_relative './top_movies_of_the_year/scraper'
9
+ require_relative './top_movies_of_the_year/cli'
10
+
11
+ module TopMoviesOfTheYear
12
+ # Your code goes here...
13
+ end
@@ -0,0 +1,82 @@
1
+ class TopMoviesOfTheYear::CLI
2
+ def call
3
+ TopMoviesOfTheYear::Scraper.new.make_comingsoon_movies
4
+ list_movies
5
+ menu
6
+ end
7
+
8
+ def list_movies
9
+ print_topmovies
10
+ end
11
+
12
+ def menu
13
+ input = nil
14
+ while input != "exit"
15
+ input = gets.strip.downcase
16
+
17
+ if input.to_i > 0 && input.to_i <= TopMoviesOfTheYear::Movies.all.size
18
+ movie = TopMoviesOfTheYear::Movies.find(input.to_i)
19
+ print_movie(movie)
20
+ elsif input.to_i > TopMoviesOfTheYear::Movies.all.size
21
+ puts "You entered number #{input.to_i}."
22
+ puts 'Type "list" to list movies OR type "exit" to quit.'
23
+ elsif input == "list"
24
+ list_movies
25
+ elsif input == "exit"
26
+ puts ""
27
+ goodbye
28
+ puts ""
29
+ else
30
+ puts "Not sure what you want, enter the number of movie from 1 to #{TopMoviesOfTheYear::Movies.all.size} you want more information on or" + ' type "list" to list movies or "exit" to quit.'
31
+ end
32
+ end
33
+ end
34
+
35
+ def print_topmovies
36
+ puts "-------------------------------------------------------------------------------------------------------------"
37
+ puts " W E L C O M E T O T H E #{TopMoviesOfTheYear::Movies.all.size} T O P M O V I E S O F T H E Y E A R "
38
+ puts "-------------------------------------------------------------------------------------------------------------"
39
+ puts ""
40
+
41
+ TopMoviesOfTheYear::Movies.all.each.with_index(1) do |movies, index|
42
+ if index < 10
43
+ index = "0#{index}"
44
+ end
45
+ puts "#{index}. #{movies.title}"
46
+ end
47
+ puts ""
48
+ puts "Enter the number of movie from 1 to #{TopMoviesOfTheYear::Movies.all.size} you want more information on or " + 'type "exit" to quit.'
49
+ puts ""
50
+ end
51
+
52
+ def print_movie(movie)
53
+ puts ""
54
+ puts "----------------------------------------#{movie.title} ------------------------------------"
55
+ puts ""
56
+ puts "Time: #{movie.time_url}"
57
+ puts "Info: #{movie.info_url}"
58
+ puts "Review: #{movie.review_url}"
59
+ puts "Videos: #{movie.video_url}"
60
+ puts "Ratings: #{movie.get_rating}"
61
+ puts "Year: #{movie.get_year}"
62
+ puts "Genre: #{movie.get_genre}"
63
+ puts "Directed By: #{movie.get_directedby}"
64
+ puts "Company: #{movie.get_company}"
65
+ puts "-------------------------------------D E S C R I P T I O N-----------------------------------"
66
+ puts ""
67
+ puts "#{movie.get_desc}"
68
+ puts ""
69
+ puts "----------------------------------------S T A R R I N G----------------------------------------"
70
+ puts " "
71
+ puts "Starring: #{movie.get_starring}"
72
+ puts " "
73
+ puts "------------------------------------------------------------------------------------------------"
74
+ puts " "
75
+ puts "Enter the number of movie from 1 to #{TopMoviesOfTheYear::Movies.all.size} you want more information on or" + ' type "list" to list movies or "exit" to quit.'
76
+ end
77
+
78
+
79
+ def goodbye
80
+ puts "Have a nice day. See you again Good Bye"
81
+ end
82
+ end
@@ -0,0 +1,100 @@
1
+ class TopMoviesOfTheYear::Movies
2
+
3
+ attr_accessor :title, :url, :timeurl, :infourl, :reviewurl, :videosurl, :rating, :year, :genre,
4
+ :directedby, :company, :desc, :starring_array
5
+
6
+ @@all = []
7
+
8
+ def self.new_from_index_page(movie_row)
9
+ self.new(
10
+ @title = movie_row.css("div.smallposter.shrink img.lazy").attr("alt").text.strip,
11
+ @url = "https://www.cinemaclock.com#{movie_row.css("h3.movietitle a").attr("href").text}"
12
+ )
13
+ end
14
+
15
+ def initialize(title=nil, url=nil, genre_index=nil )
16
+ @title = title
17
+ @url = url
18
+ self.class.all << self
19
+ end
20
+
21
+ def self.all
22
+ @@all
23
+ end
24
+
25
+ def self.find(id)
26
+ self.all[id-1]
27
+ end
28
+
29
+ def profile_doc
30
+ @movie_profile = Nokogiri::HTML(open(self.url))
31
+ end
32
+
33
+ def time_url
34
+ @tim_button = "https://www.cinemaclock.com#{profile_doc.css("a.buttontoptab.btntim").attr("href").text}"
35
+ end
36
+
37
+ def info_url
38
+ @info_button = "https://www.cinemaclock.com#{profile_doc.css("a.buttontoptab.btninf").attr("href").text}"
39
+ end
40
+
41
+ def review_url
42
+ @rev_button = "https://www.cinemaclock.com#{profile_doc.css("a.buttontoptab.btnrev").attr("href").text}"
43
+ end
44
+
45
+ def video_url
46
+ if "https://www.cinemaclock.com#{profile_doc.css("a.buttontoptab.btnvid").attr("href")}" != "https://www.cinemaclock.com"
47
+ @vid_button = "https://www.cinemaclock.com#{profile_doc.css("a.buttontoptab.btnvid").attr("href").text}"
48
+ else
49
+ @vid_button = "Unavailable at this time"
50
+ end
51
+ end
52
+
53
+ def get_rating
54
+ @rating = profile_doc.css("#ratingmpaa > td.desc2 > div > div > span").text
55
+ end
56
+
57
+ def get_year
58
+ scraper_doc = profile_doc.css("table.desc tr")
59
+ scraper_doc.collect do |row|
60
+ if row.css("td.desc1").text == "Year"
61
+ return @year = row.css("td.desc2").text
62
+ end
63
+ end
64
+ end
65
+
66
+ def get_genre
67
+ scraper_doc = profile_doc.css("table.desc tr")
68
+ scraper_doc.collect do |row|
69
+ if row.css("td.desc1").text == "Genre"
70
+ return @genre = row.css("td.desc2").text
71
+ end
72
+ end
73
+ end
74
+
75
+ def get_directedby
76
+ scraper_doc = profile_doc.css("table.desc tr")
77
+ scraper_doc.collect do |row|
78
+ if row.css("td.desc1").text == "Directed by"
79
+ return @directedby = row.css("td.desc2").text
80
+ end
81
+ end
82
+ end
83
+
84
+ def get_company
85
+ @company = profile_doc.xpath("//*[@id='companycan']").text
86
+ end
87
+
88
+ def get_desc
89
+ @desc = profile_doc.css("div:nth-child(5) > i").text
90
+ end
91
+
92
+ def get_starring
93
+ starring_doc = profile_doc.css("div#actors1 div.aktor div.aktnam")
94
+ @starring_array = starring_doc.collect do |row|
95
+ row.css("span.acname").text.strip
96
+ end
97
+ @starring_array.compact.reject(&:empty?).join(', ')
98
+ end
99
+
100
+ end
@@ -0,0 +1,17 @@
1
+ class TopMoviesOfTheYear::Scraper
2
+
3
+ def get_page
4
+ Nokogiri::HTML(open("https://www.cinemaclock.com/movies/top-10"))
5
+ end
6
+
7
+ def scrape_comingsoon_movies
8
+ get_page.css("div#CT div.BD div.movieblock")
9
+ end
10
+
11
+ def make_comingsoon_movies
12
+ scrape_comingsoon_movies.css("div.movieblock.efilm").each do |movie_row|
13
+ TopMoviesOfTheYear::Movies.new_from_index_page(movie_row)
14
+ end
15
+ end
16
+
17
+ end
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: top_movies_of_the_year
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - "'ayesha ansari'"
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-05-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: nokogiri
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: List Top Movies provide details related to the top movie selected
70
+ email:
71
+ - "'ayesha.x.ansari@gmail.com'"
72
+ executables:
73
+ - top-movies-of-the-year
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - bin/top-movies-of-the-year
78
+ - lib/top_movies_of_the_year.rb
79
+ - lib/top_movies_of_the_year/cli.rb
80
+ - lib/top_movies_of_the_year/movies.rb
81
+ - lib/top_movies_of_the_year/scraper.rb
82
+ homepage: http://rubygems.org/gems/top_movies_of_the_year
83
+ licenses:
84
+ - MIT
85
+ metadata: {}
86
+ post_install_message:
87
+ rdoc_options: []
88
+ require_paths:
89
+ - lib
90
+ - lib/top_movies_of_the_year
91
+ required_ruby_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ requirements: []
102
+ rubyforge_project:
103
+ rubygems_version: 2.7.6
104
+ signing_key:
105
+ specification_version: 4
106
+ summary: Top Movies Of The Year
107
+ test_files: []