movieDB 0.2.4 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZjM4MWY0ZjliNThkY2U4YjcyZWNhMWY1NWIxZTY1NTJhYjkwZDllMw==
5
- data.tar.gz: !binary |-
6
- ZjVjMDg2M2ZkZGFlNjdmZGU5N2IxY2NkNGM0Yzk2YTc0MzU0ZDJlZg==
2
+ SHA1:
3
+ metadata.gz: 124312db314fc9ba1cffc82ab4a756954cf499dc
4
+ data.tar.gz: ab27ef56e493ec17a98d40e21b7ef93abc5410ef
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NzVhZTIwOGE1MTM4MDZiYmIxYTM1M2JkNzI0YjgwNTRlOGViMTI2NzNmZGQw
10
- ZGMyZWRiYTU1MjQ3Zjg1N2NiNzA5ZDU5NzhkYjA0MWU5ZDVjMjRhZjIyNTRh
11
- MmE5ZGNmMDFlMWQ3MjA4MWEwYzlhY2MyNjg0ZTRjMTE4MzVhNzg=
12
- data.tar.gz: !binary |-
13
- ZjlhYjYxMzNiNDIwODU0NGE2NTllNWMzYzFiYTZkNzA0MjYxMzJkZDRmYjBi
14
- NTAxMjFmN2ZmYmZlMmFlMDEzNTllZTFjZDM2Njk5YjkwYTM2ODQ1ZmI0MDE1
15
- ZGQ1NjUwMDI5NjYwZmJmMGZjZDQyOWRlYWVlNmNmMDdkOTFhNTM=
6
+ metadata.gz: d566633537eaec4e45bc7dbe89a12fe003bf028e125b6e3774d19f02124212966b978b9fbb34cd9210125e898449b2e265698484bb689adec4016fae596072e2
7
+ data.tar.gz: a7a50173eeb6e75cd94051ca85e67399ddda31f25335e45788aa668cce525b6f97780e5102447beb0a982d12f35597c5bf8c0efe89a1508c2e1abbf8ed0da5e0
data/README.md CHANGED
@@ -11,23 +11,6 @@ Basic functions and Data Analysis:
11
11
  * Exploratory Data Analysis
12
12
  * Confirmatory Data Analysis
13
13
 
14
- #### VERY IMPORTANT NOTE
15
-
16
- Our budget feature depends on themoviedb gem.
17
-
18
- Please follow the URL links for reading info.
19
-
20
- * https://www.themoviedb.org
21
- * https://github.com/ahmetabdi/themoviedb
22
-
23
- ## Requirements
24
-
25
- ruby 1.9.x
26
-
27
- themoviedb api key
28
-
29
- code formattted using TomDoc code documentation specification
30
-
31
14
  ## Installation
32
15
 
33
16
  Add this line to your application's Gemfile:
@@ -48,29 +31,25 @@ Or install it yourself as:
48
31
 
49
32
  > require 'movieDB'
50
33
 
51
- > require 'MovieDB/data_export'
52
-
53
- > require 'themoviedb'
54
-
55
- ## Usage - Fetch Raw Movie Data From IMDb (3 Steps)
34
+ ## Usage - Fetch Raw Movie Data From IMDb
56
35
 
57
- > MovieDB::Movie.new /* PRINTS OUT THE DEFAULT INITIALIZED VALUES */
36
+ > MovieDB::Movie.get_data("0369610", "3079380")
58
37
 
59
- > MovieDB::Movie.clear_data_store /* ONLY IF YOUR WANT TO EMPTY YOUR DATASTORE (ARRAY) */
38
+ /* YOU CAN ADD AS MANY IMDB IDs AS YOU LIKE. BUT DO NOT EXCEED THE MAXIMUM REQUEST RATE. */
60
39
 
61
- > MovieDB::Movie.send(:get_multiple_imdb_movie_data, "0369610", "3079380", "2395427")
40
+ ### IMDb Data
62
41
 
63
- /* YOU CAN ADD AS MANY IMDB UNIQUE NUMBERS. DO NOT EXCEED MAXIMUM REQUEST RATE.*/
42
+ When IMDb data is fetched, two things happen.
64
43
 
65
- > MovieDB::DataExport.export_movie_data
44
+ First a reports folder is created in the movieDB gem.
66
45
 
67
- ### Exported Document
46
+ Second, the fetched data is written to an xls format and stored in the reports directory.
68
47
 
69
- The exported movie data is stored in your reports directory.
48
+ The file name is 'imdb_' + name title of the films you requested + today's date
70
49
 
71
- The file name is 'imdb_raw_data_' + today's date.
50
+ For example, the fetched data used
72
51
 
73
- $ open /reports/imdb_raw_data_20150608.xls
52
+ $ open /reports/imdb_JurassicWorld_Spy_20150611.xls
74
53
 
75
54
  ## Usage - Analyze Raw Data and Generate Statistical Results (4 Steps)
76
55
 
@@ -80,7 +59,7 @@ The file name is 'imdb_raw_data_' + today's date.
80
59
 
81
60
  > require 'MovieDB/data_process'
82
61
 
83
- > MovieDB::DataProcess.send(:basic_statistic, 'imdb_raw_data_20131216.xls')
62
+ > MovieDB::DataProcess.send(:basic_statistic, 'mdb_JurassicWorld_Spy_20150611.xls')
84
63
 
85
64
  ### Exported - Analyzed Data
86
65
 
data/lib/movieDB.rb CHANGED
@@ -2,13 +2,13 @@ require "rubygems"
2
2
  require "time" # Time is an abstraction of dates and times.
3
3
  require "open-uri" # is an easy-to-use wrapper for net/http, net/https and net/ftp.
4
4
  require "nokogiri" # is an HTML, XML, SAX, and Reader parser.
5
- require "zimdb" # Access movie information from IMDb via the API offered by http://www.imdbapi.com/
6
5
  require "themoviedb" # Provides a simple, easy to use interface for the Movie Database API.
7
6
  require "imdb" # Easily use Ruby or the command line to find information on IMDB.com.
8
7
  require "spreadsheet" # A library designed to read and write Spreadsheet Documents.
9
8
  require "MovieDB/base"
10
9
  require "MovieDB/data_analysis"
11
10
  require "MovieDB/secret"
11
+ require "MovieDB/data_export"
12
12
 
13
13
  unless defined? MovieDB::Movie
14
14
  module MovieDB #:nodoc:
@@ -28,6 +28,7 @@ unless defined? MovieDB::Movie
28
28
  class Movie < MovieDB::Base
29
29
  include StatusChecker
30
30
 
31
+ extend MovieDB::DataExport
31
32
  extend MovieDB::Secret::Lock
32
33
 
33
34
  const_set("MovieError", Class.new(StandardError))
@@ -97,6 +98,7 @@ unless defined? MovieDB::Movie
97
98
  DEFAULT_BAFTA_NOMINATION = 3
98
99
  DEFAULT_BAFTA_WINS = 1
99
100
  DEFAULT_FILM_RELEASE = ['theatrical', 'video', 'television', 'internet', 'print']
101
+
100
102
  def initialize(attributes = {})
101
103
  $IMDB_ATTRIBUTES_HEADERS = movie_attr = %w(title cast_members cast_characters cast_member_ids cast_members_characters
102
104
  trailer_url director writer filming_locations company genres languages countries
@@ -107,144 +109,63 @@ unless defined? MovieDB::Movie
107
109
  movie_attr.each do |attr|
108
110
  self.send("#{attr}=", (attributes.has_key?(attr.to_sym) ? attributes[attr.to_sym] : self.class.const_get("DEFAULT_#{attr.upcase}")))
109
111
  end
110
-
111
- end
112
-
113
- # Iterating through the block for title duplication.
114
- # Return true if the array is not nil.
115
- # Absence of title duplications should yield an empty array.
116
- def self.title_present?
117
- titles = Movie.instance_eval { filter_movie_attr("title") }
118
- @title_exist = titles.detect { |duplicates| titles.count(duplicates) > 1 }
119
- !@title_exist.nil?
120
- end
121
-
122
- def unique_id
123
- @unique_id ||= "#{Date.today}#{Array.new(9){rand(9)}.join}".gsub('-','')
124
112
  end
125
113
 
126
- class << self
127
- # Get a single data from imdb database.
128
- #
129
- # TODO: This method should be deprecated in the next version release.
130
- def get_imdb_movie_data(value)
114
+ # This is empty the container #
115
+ # def clear_data_store
116
+ # return @movie_DS = []
117
+ # end
118
+
119
+ # You can Imdb movie data like this:
120
+ #
121
+ # MovieDB::Movie.send(:get_multiple_imdb_movie_data, "2024544", "1800241")
122
+ #
123
+ # Example: You can also collect the title attribute:
124
+ #
125
+ # MovieDB::Movie.instance_eval { filter_movie_attr("title") }
126
+ def self.get_data(*args)
127
+ @movie_DS = []
128
+
129
+ args.each do |value|
130
+ movie_info = Movie.new
131
131
  @movie_data = Imdb::Movie.new(value)
132
- return @movie_data
133
- end
134
132
 
135
- def global_movie_data_store
136
- return $GLOBAL_MOVIE_DS
137
- end
138
- # You can add multiple Imdb ids like this:
139
- #
140
- # MovieDB::Movie.send(:get_multiple_imdb_movie_data, "2024544", "1800241")
141
- #
142
- # Example: You can also collect the title attribute:
143
- #
144
- # MovieDB::Movie.instance_eval{filter_movie_attr("title")}
145
- def get_multiple_imdb_movie_data(*args)
146
- if args.size == 1
147
- puts "*" * 41
148
- puts "* A minimum of 2 Imdb id's are required *"
149
- puts "* To perform statistical data analysis *"
150
- puts "* You only have ONE Imdb id entered *"
151
- puts "*" * 41
133
+ begin
134
+ movie_info.title = Array.new << @movie_data.title
135
+ movie_info.cast_members = @movie_data.cast_members.flatten
136
+ movie_info.cast_characters = @movie_data.cast_characters
137
+ movie_info.cast_member_ids = @movie_data.cast_member_ids
138
+ movie_info.cast_members_characters = @movie_data.cast_members_characters
139
+ movie_info.trailer_url = @movie_data.trailer_url.nil? ? 'No Trailer' : @movie_data.trailer_url
140
+ movie_info.director = @movie_data.director.flatten
141
+ movie_info.writer = @movie_data.writers.flatten
142
+ movie_info.filming_locations = @movie_data.filming_locations.flatten.join(', ')
143
+ movie_info.company = Array.new << @movie_data.company
144
+ movie_info.genres = @movie_data.genres.flatten.join(' ').sub(' ' , ', ')
145
+ movie_info.languages = Array.new << @movie_data.languages.flatten.join(' ').sub(' ' , ', ')
146
+ movie_info.countries = Array.new << @movie_data.countries.flatten.join(' ').sub(' ' , ', ')
147
+ movie_info.length = Array.new << @movie_data.length
148
+ movie_info.plot = Array.new << @movie_data.plot
149
+ movie_info.poster = Array.new << @movie_data.poster
150
+ movie_info.rating = Array.new << @movie_data.rating
151
+ movie_info.votes = Array.new << @movie_data.votes
152
+ movie_info.mpaa_rating = Array.new << @movie_data.mpaa_rating == [nil] ? ["Not Rated"] : [@movie_data.mpaa_rating]
153
+ movie_info.tagline = Array.new << @movie_data.tagline
154
+ movie_info.year = Array.new << @movie_data.year
155
+ movie_info.release_date = Array.new << @movie_data.release_date
156
+ rescue
157
+ raise ArgumentError, 'Invalid IMDb id entered.'
152
158
  end
153
159
 
154
- args.each do |value|
155
- get_imdb_movie_data(value)
156
- @movie_DS ||=[]
157
- movie_info = Movie.new
158
-
159
- # Query themoviedb.org for film revenue.
160
- # returns 0 if revenue record doesn't exist.
161
- tmdb_arr = []
162
- tmdb_key = MovieDB::Movie.key
163
- Tmdb::Api.key(tmdb_key)
164
- tmdb = Tmdb::Movie.find(@movie_data.title)
165
-
166
- if tmdb.empty?
167
- tmdb_data = Tmdb::Movie.new
168
- tmdb_data.revenue = 0
169
- else
170
- tmdb.select { |t| tmdb_arr << t.id }
171
- tmdb_id = tmdb_arr[0]
172
- tmdb_data = Tmdb::Movie.detail(tmdb_id)
173
- end
174
-
175
- begin
176
- movie_info.title = Array.new << @movie_data.title
177
- movie_info.cast_members = @movie_data.cast_members.flatten
178
- movie_info.cast_characters = @movie_data.cast_characters
179
- movie_info.cast_member_ids = @movie_data.cast_member_ids
180
- movie_info.cast_members_characters = @movie_data.cast_members_characters
181
- movie_info.trailer_url = @movie_data.trailer_url.nil? ? 'No Trailer' : @movie_data.trailer_url
182
- movie_info.director = @movie_data.director.flatten
183
- movie_info.writer = @movie_data.writers.flatten
184
- movie_info.filming_locations = @movie_data.filming_locations.flatten.join(', ')
185
- movie_info.company = Array.new << @movie_data.company
186
- movie_info.genres = @movie_data.genres.flatten.join(' ').sub(' ' , ', ')
187
- movie_info.languages = Array.new << @movie_data.languages.flatten.join(' ').sub(' ' , ', ')
188
- movie_info.countries = Array.new << @movie_data.countries.flatten.join(' ').sub(' ' , ', ')
189
- movie_info.length = Array.new << @movie_data.length
190
- movie_info.plot = Array.new << @movie_data.plot
191
- movie_info.poster = Array.new << @movie_data.poster
192
- movie_info.rating = Array.new << @movie_data.rating
193
- movie_info.votes = Array.new << @movie_data.votes
194
- movie_info.mpaa_rating = Array.new << @movie_data.mpaa_rating == [nil] ? ["Not Rated"] : [@movie_data.mpaa_rating]
195
- movie_info.tagline = Array.new << @movie_data.tagline
196
- movie_info.year = Array.new << @movie_data.year
197
- movie_info.release_date = Array.new << @movie_data.release_date
198
- movie_info.worldwide_gross = Array.new << tmdb_data["revenue"]
199
- movie_info.unique_id = @unique_id
200
-
201
- # TODO: Write API to request additional data from AMPAS.
202
- #
203
- # Example: We can fetch the data like this:
204
- #
205
- # movie_info.academy_award_nomination = academy_award_nomination
206
- # movie_info.academy_award_wins = academy_award_wins
207
- # movie_info.golden_globe_nominations = golden_globe_nominations
208
- # movie_info.golden_globe_wins = golden_globe_wins
209
- # movie_info.bafta_nomination = bafta_nomination
210
- # movie_info.bafta_wins = bafta_wins
211
- $GLOBAL_MOVIE_DS = @movie_DS << movie_info
212
- rescue
213
- raise ArgumentError, 'invalid imbd id'
214
- end
215
- end
216
-
217
- return @movie_DS
218
- end
219
-
220
- def clear_data_store
221
- @movie_DS = []
222
-
223
- return @movie_DS
160
+ @movie_DS << movie_info
224
161
  end
225
162
 
226
- # Filter the data store for the movie attributes. Return an array of the attributes.
227
- #
228
- # Example
229
- #
230
- # Movie.filter_movie_attr('cast_members') #=> ["Chris_Hemsworth", "Natalie_Portman"]
231
- def filter_movie_attr(attr)
232
- attr_raw = attr
233
- attr_sym = attr.to_sym
234
-
235
- raise ArgumentError, ("#{attr_sym} is not a valid attribute." if !attr_sym == :director && :cast_members)
236
- filtered = @movie_DS.select{ |ds| ds.attr_title? }.map(&attr_sym)#.flatten
237
- attr_raw == ('languages' && 'title') ? filtered : filtered#.uniq
238
- end
163
+ write_imdb_data_to_xls
239
164
  end
240
165
 
241
- private_class_method :get_multiple_imdb_movie_data, :filter_movie_attr, :get_imdb_movie_data
242
-
243
- def attr_title
244
- !@title.nil?
166
+ def self.write_imdb_data_to_xls
167
+ Movie.export_movie_data(@movie_DS)
245
168
  end
246
- alias :attr_title? :attr_title
247
-
248
169
  end
249
170
  end
250
171
  end
data/lib/movieDB/base.rb CHANGED
@@ -12,4 +12,3 @@ module MovieDB #:nodoc
12
12
  end
13
13
  end
14
14
  $:.unshift File.expand_path('..', __FILE__)
15
-
@@ -7,7 +7,7 @@ module MovieDB
7
7
  module AnalysisOfVariance
8
8
  module LeastSquares
9
9
  module Statistic
10
- def basic_statistic (directory_name)
10
+ def basic_statistic(directory_name)
11
11
  open_spreadsheet(directory_name)
12
12
 
13
13
  if check_imdb_count == true
@@ -37,7 +37,9 @@ module MovieDB
37
37
 
38
38
  def perform_computation
39
39
  # Perform computation on the data collected.
40
+ #
40
41
  # TODO: Need to use coefficienct statistical formula.
42
+ #
41
43
  # Calculate median as an example but COD formula must be used.
42
44
  # Mean is commonly called as average. Mean or Average is defined as the sum of
43
45
  # all the given elements divided by the total number of elements.
@@ -228,7 +230,7 @@ module MovieDB
228
230
  end
229
231
 
230
232
  class ExportData
231
- def write_spreadsheet (data, data_analysis_name)
233
+ def write_spreadsheet(data, data_analysis_name)
232
234
  begin data_analysis.is_a? String
233
235
  @data_analysis_name = data_analysis_name.split.join.gsub('_', ' ').downcase.to_s
234
236
  case data_analysis_name
@@ -256,7 +258,5 @@ module MovieDB
256
258
  end
257
259
  end
258
260
 
259
- def write_discrete_least_squares_meshless_method; end
260
- def write_discrete_least_squares_meshless_method; end
261
261
  end
262
262
  end
@@ -1,129 +1,97 @@
1
1
  require "spreadsheet"
2
- require "MovieDB"
3
2
 
4
- # This module will write xls document to file
5
- #
6
- # Usage
7
- #
8
- # @book = Spreadsheet::Workbook.new
3
+ # JSON Data (movie_DS) fetched from IMDb by the movieDB.rb module is processed here.
4
+ # Spreadsheet gem is used to writes the attributes in an xls format to the report folder,
5
+ # where it is later used for data analysis.
6
+ #
7
+ # Usage / Example:
8
+ #
9
+ # MovieDB::Movie.export_movie_data(IMDB_JSON_FILE)
9
10
  module MovieDB
10
- class DataExport < MovieDB::Movie
11
- class << self
12
- #TODO: Check the data analysis(DA) name. Write a define_method and include the DA.
13
-
14
- def export_movie_data
15
- create_spreadsheet_file
16
- create_spreadsheet_report
17
- write_xls_file
18
- end
19
-
20
- def create_spreadsheet_file
21
- directory_name = 'reports'
22
- create_directory(directory_name)
23
- Spreadsheet.client_encoding = 'UTF-8'
24
- @book = Spreadsheet::Workbook.new
25
- @sheet = @book.create_worksheet name: "Data Analysis: #{$DATA_ANALYSIS_NAME}" # the analysis name should be an input
26
- end
11
+ module DataExport
12
+ def export_movie_data(movie_DS)
13
+ @movie_DS = movie_DS
14
+ create_spreadsheet_file
15
+ create_spreadsheet_report(movie_DS)
16
+ write_xls_file
17
+ end
27
18
 
28
- def create_directory(directory_name)
29
- Dir.mkdir(directory_name) unless File.exists? directory_name
30
- end
19
+ def create_spreadsheet_file
20
+ directory_name = 'reports'
21
+ create_directory(directory_name)
31
22
 
32
- def create_spreadsheet_report
33
- create_spreadsheet_header
34
- create_spreadsheet_body
35
- end
23
+ Spreadsheet.client_encoding = 'UTF-8'
36
24
 
37
- def create_spreadsheet_header
38
- @sheet.row(0).concat $IMDB_ATTRIBUTES_HEADERS
25
+ @book = Spreadsheet::Workbook.new
26
+ @sheet = @book.create_worksheet
27
+ @sheet.name = report_name if @movie_DS
28
+ @sheet.name = "Data Analysis: #{$DATA_ANALYSIS_NAME}" if $DATA_ANALYSIS_NAME
29
+ end
39
30
 
40
- title_format = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 13
41
- float_format = Spreadsheet::Format.new :number_format => "0.00"
31
+ def create_directory(directory_name)
32
+ Dir.mkdir(directory_name) unless File.exists? directory_name
33
+ end
42
34
 
43
- @sheet.row(0).default_format = title_format
35
+ def create_spreadsheet_report(movie_DS)
36
+ create_spreadsheet_header
37
+ create_spreadsheet_body(movie_DS)
38
+ end
44
39
 
45
- @sheet.column(1).default_format = float_format
46
- @sheet.column(16).default_format = float_format
47
- @sheet.column(22).default_format = float_format
48
- end
40
+ def create_spreadsheet_header
41
+ @sheet.row(0).concat $IMDB_ATTRIBUTES_HEADERS
49
42
 
50
- # Loop through array of and array imbd data. Each row has the
51
- # the information about the film/movie
52
- # The Data is obtained from MovieDB::Movie
53
- # example
54
- #
55
- # Film: catching fire
56
- def create_spreadsheet_body
57
- $IMDB_ATTRIBUTES_HEADERS.each do |header|
58
- case header
59
- when 'title' then spreadsheet_body_text_data("title")
60
- when 'cast_members' then spreadsheet_body_count_data("cast_members")
61
- when 'cast_characters' then spreadsheet_body_count_data("cast_characters")
62
- when 'cast_member_ids' then spreadsheet_body_count_data("cast_member_ids")
63
- when 'cast_members_characters' then spreadsheet_body_count_data("cast_members_characters")
64
- when 'trailer_url' then spreadsheet_body_text_data("trailer_url")
65
- when 'director' then spreadsheet_body_text_data("director")
66
- when 'writer' then spreadsheet_body_text_data("writer")
67
- when 'filming_locations' then spreadsheet_body_text_data("filming_locations")
68
- when 'company' then spreadsheet_body_text_data("company")
69
- when 'genres' then spreadsheet_body_text_data("genres")
70
- when 'languages' then spreadsheet_body_text_data("languages")
71
- when 'countries' then spreadsheet_body_text_data("countries")
72
- when 'length' then spreadsheet_body_numeric_data("length")
73
- when 'plot' then spreadsheet_body_text_data("plot")
74
- when 'poster' then spreadsheet_body_text_data("poster")
75
- when 'rating' then spreadsheet_body_numeric_data("rating")
76
- when 'votes' then spreadsheet_body_numeric_data("votes")
77
- when 'mpaa_rating' then spreadsheet_body_numeric_data("mpaa_rating")
78
- when 'tagline' then spreadsheet_body_text_data("tagline")
79
- when 'year' then spreadsheet_body_numeric_data("year")
80
- when 'release_date' then spreadsheet_body_numeric_data("release_date")
81
- when 'worldwide_gross' then spreadsheet_body_numeric_data("worldwide_gross")
82
- else
83
- end
84
- end
85
- end
43
+ title_format = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 13
44
+ float_format = Spreadsheet::Format.new :number_format => "0.00"
86
45
 
87
- def spreadsheet_body_text_data(header_title)
88
- @e_t = element_title = MovieDB::Movie.instance_eval { filter_movie_attr(header_title) }.flatten
46
+ @sheet.row(0).default_format = title_format
47
+ @sheet.column(1).default_format = float_format
48
+ @sheet.column(16).default_format = float_format
49
+ @sheet.column(22).default_format = float_format
50
+ end
89
51
 
90
- element_title.each_with_index do |element2, i|
91
- element_array = element_title[(i)].split(' ',)
92
- @sheet.row(1 + i).concat element_array
52
+ # The values from the header_attr is converted from a string to a method.
53
+ # We accomplish this by using Object#send
54
+ #
55
+ # Example Usage:
56
+ #
57
+ # movie_attribute = movie_DS[i].send(header_attr)
58
+ #
59
+ # Starts the row insert on row 1 and not row 0.
60
+ #
61
+ # Example Usage:
62
+ #
63
+ # row = @sheet.row(i + 1)
64
+ def create_spreadsheet_body(movie_DS)
65
+ 0.upto(movie_DS.length - 1) do |i|
66
+ row = @sheet.row(i + 1)
67
+
68
+ $IMDB_ATTRIBUTES_HEADERS.each do |header_attr|
69
+ string_values = ['title', 'language', 'length', 'rating', 'vote', 'release', 'mpaa_rating', 'year']
70
+ movie_attribute = movie_DS[i].send(header_attr)
71
+
72
+ row.push(movie_attribute.map { |t| t }.join(' ')) if ([].unshift header_attr).any? { |v| string_values.include?(v) }
73
+ row.push movie_attribute.length if (movie_attribute.is_a? Array) && ([].unshift header_attr).any? { |v| !string_values.include?(v) }
74
+ row.push(movie_attribute) if movie_attribute.is_a? String
93
75
  end
94
76
  end
77
+ end
95
78
 
96
- def spreadsheet_body_count_data(header_title)
97
- element_cast = MovieDB::Movie.instance_eval { filter_movie_attr(header_title) }
98
-
99
- 0.upto(@e_t.length - 1) do |i|
100
- element_array = []
101
-
102
- element_array << element_cast[i].length
103
- @sheet.row(1 + i).concat element_array
104
- end
105
- end
106
-
107
- def spreadsheet_body_numeric_data(header_title)
108
- @e_t = element_title = MovieDB::Movie.instance_eval { filter_movie_attr(header_title) }
79
+ def report_name
80
+ name = "imdb_"
109
81
 
110
- element_title.each_with_index do |element2, i|
111
- element_array = element_title[(i)]
112
- @sheet.row(1 + i).concat element_array
113
- end
82
+ 0.upto(@movie_DS.length - 1) do |i|
83
+ name << @movie_DS[i].title.map { |m| m }.join().gsub(' ', '') + "_"
114
84
  end
115
85
 
116
- def report_name
117
- name = "imdb_raw_data_".to_s.downcase
118
- name << "#{Time.now.to_s.gsub(':', '').gsub('-', '').gsub(' ', '').split('')[0..9].join}"
119
- end
86
+ name << "#{Time.now.to_s.gsub(':', '').gsub('-', '').gsub(' ', '').split('')[0..7].join}"
120
87
 
121
- def write_xls_file
122
- filename = ("#{report_name}.xls")
123
- @book.write File.join('reports', filename)
124
- return filename
125
- end
88
+ return name
89
+ end
126
90
 
91
+ def write_xls_file
92
+ filename = ("#{report_name}.xls")
93
+ @book.write File.join('reports', filename)
94
+ return filename
127
95
  end
128
96
  end
129
97
  end
@@ -1,3 +1,3 @@
1
1
  module MovieDB
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.7"
3
3
  end
metadata CHANGED
@@ -1,153 +1,153 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: movieDB
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Albert McKeever
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-09 00:00:00.000000000 Z
11
+ date: 2015-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: imdb
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: zimdb
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ! '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ! '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: highline
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ! '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ! '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: fakeweb
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ! '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ! '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: activesupport
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ! '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: 4.0.0
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ! '>='
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: 4.0.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: spreadsheet
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ! '>='
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ! '>='
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: themoviedb
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ! '>='
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ! '>='
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  description: Perform Data Analysis on IMDB Movies
@@ -157,9 +157,8 @@ executables: []
157
157
  extensions: []
158
158
  extra_rdoc_files: []
159
159
  files:
160
- - .DS_Store
161
- - .gitignore
162
- - .travis.yml
160
+ - ".gitignore"
161
+ - ".travis.yml"
163
162
  - Gemfile
164
163
  - LICENSE.txt
165
164
  - README.md
@@ -194,17 +193,17 @@ require_paths:
194
193
  - lib
195
194
  required_ruby_version: !ruby/object:Gem::Requirement
196
195
  requirements:
197
- - - ! '>='
196
+ - - ">="
198
197
  - !ruby/object:Gem::Version
199
198
  version: '0'
200
199
  required_rubygems_version: !ruby/object:Gem::Requirement
201
200
  requirements:
202
- - - ! '>='
201
+ - - ">="
203
202
  - !ruby/object:Gem::Version
204
203
  version: '0'
205
204
  requirements: []
206
205
  rubyforge_project:
207
- rubygems_version: 2.4.7
206
+ rubygems_version: 2.4.6
208
207
  signing_key:
209
208
  specification_version: 4
210
209
  summary: Movie/Film Statistic and Data Analysis
data/.DS_Store DELETED
Binary file