movieDB 0.2.4 → 0.2.7

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.
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