Class: MovieDB::DataExport

Inherits:
Movie show all
Defined in:
lib/movieDB/data_export.rb

Constant Summary

Constants inherited from Movie

Movie::DEFAULT_ACADEMY_AWARD_NOMINATION, Movie::DEFAULT_ACADEMY_AWARD_WINS, Movie::DEFAULT_BAFTA_NOMINATION, Movie::DEFAULT_BAFTA_WINS, Movie::DEFAULT_CAST_CHARACTERS, Movie::DEFAULT_CAST_MEMBERS, Movie::DEFAULT_CAST_MEMBERS_CHARACTERS, Movie::DEFAULT_CAST_MEMBER_IDS, Movie::DEFAULT_COMPANY, Movie::DEFAULT_COUNTRIES, Movie::DEFAULT_DIRECTOR, Movie::DEFAULT_FILMING_LOCATIONS, Movie::DEFAULT_FILM_RELEASE, Movie::DEFAULT_GENRES, Movie::DEFAULT_GOLDEN_GLOBE_NOMINATIONS, Movie::DEFAULT_GOLDEN_GLOBE_WINS, Movie::DEFAULT_LANGUAGES, Movie::DEFAULT_LENGTH, Movie::DEFAULT_MPAA_RATING, Movie::DEFAULT_PLOT, Movie::DEFAULT_POSTER, Movie::DEFAULT_RATING, Movie::DEFAULT_RELEASE_DATE, Movie::DEFAULT_TAGLINE, Movie::DEFAULT_TITLE, Movie::DEFAULT_TRAILER_URL, Movie::DEFAULT_UNIQUE_ID, Movie::DEFAULT_VOTES, Movie::DEFAULT_WORLDWIDE_GROSS, Movie::DEFAULT_WRITER, Movie::DEFAULT_YEAR

Instance Attribute Summary

Attributes inherited from Movie

#academy_award_nomination, #academy_award_wins, #bafta_nomination, #bafta_wins, #cast_characters, #cast_member_ids, #cast_members, #cast_members_characters, #company, #countries, #director, #film_release, #filming_locations, #genres, #golden_globe_nominations, #golden_globe_wins, #languages, #length, #mpaa_rating, #plot, #poster, #rating, #release_date, #released, #tagline, #title, #trailer_url, #unique_id, #votes, #worldwide_gross, #writer, #year

Class Method Summary collapse

Methods inherited from Movie

#attr_title, clear_data_store, global_movie_data_store, #initialize, title_present?

Methods included from Secret::Lock

#key

Methods included from StatusChecker

included

Methods included from MovieError

#raise_errors

Constructor Details

This class inherits a constructor from MovieDB::Movie

Class Method Details

.create_directory(directory_name) ⇒ Object



28
29
30
# File 'lib/movieDB/data_export.rb', line 28

def create_directory(directory_name)
  Dir.mkdir(directory_name) unless File.exists? directory_name
end

.create_spreadsheet_bodyObject

Loop through array of and array imbd data. Each row has the the information about the film/movie The Data is obtained from MovieDB::Movie example catching fire |



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/movieDB/data_export.rb', line 57

def create_spreadsheet_body
 $IMDB_ATTRIBUTES_HEADERS.each do |header|
  case header
    when 'title' then spreadsheet_body_text_data("title")
    when 'cast_members' then spreadsheet_body_count_data("cast_members")
    when 'cast_characters' then spreadsheet_body_count_data("cast_characters")
    when 'cast_member_ids' then spreadsheet_body_count_data("cast_member_ids")
    when 'cast_members_characters' then spreadsheet_body_count_data("cast_members_characters")
    when 'trailer_url' then spreadsheet_body_text_data("trailer_url")
    when 'director' then spreadsheet_body_text_data("director")
    when 'writer' then spreadsheet_body_text_data("writer")
    when 'filming_locations' then spreadsheet_body_text_data("filming_locations")
    when 'company' then spreadsheet_body_text_data("company")
    when 'genres' then spreadsheet_body_text_data("genres")
    when 'languages' then spreadsheet_body_text_data("languages")
    when 'countries' then spreadsheet_body_text_data("countries")
    when 'length' then spreadsheet_body_numeric_data("length")
    when 'plot' then spreadsheet_body_text_data("plot")
    when 'poster' then spreadsheet_body_text_data("poster")
    when 'rating' then spreadsheet_body_numeric_data("rating")
    when 'votes' then spreadsheet_body_numeric_data("votes")
    when 'mpaa_rating' then spreadsheet_body_numeric_data("mpaa_rating")
    when 'tagline' then spreadsheet_body_text_data("tagline")
    when 'year' then spreadsheet_body_numeric_data("year")
    when 'release_date' then spreadsheet_body_numeric_data("release_date")
    when 'worldwide_gross' then spreadsheet_body_numeric_data("worldwide_gross")
    else
    end
  end
end

.create_spreadsheet_fileObject



19
20
21
22
23
24
25
26
# File 'lib/movieDB/data_export.rb', line 19

def create_spreadsheet_file
  directory_name = ('reports')
  create_directory(directory_name)
  Spreadsheet.client_encoding = 'UTF-8'
  @book = Spreadsheet::Workbook.new
  @sheet = @book.create_worksheet name: "Data Analysis: #{$DATA_ANALYSIS_NAME}" # the analysis nameshould be an input

end

.create_spreadsheet_headerObject



37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/movieDB/data_export.rb', line 37

def create_spreadsheet_header
  @sheet.row(0).concat $IMDB_ATTRIBUTES_HEADERS

  title_format = Spreadsheet::Format.new :color => :blue,
                                   :weight => :bold,
                                   :size => 13

  float_format = Spreadsheet::Format.new :number_format => "0.00"

  @sheet.row(0).default_format = title_format
  @sheet.column(1).default_format = float_format
  @sheet.column(16).default_format = float_format
  @sheet.column(22).default_format = float_format
end

.create_spreadsheet_reportObject



32
33
34
35
# File 'lib/movieDB/data_export.rb', line 32

def create_spreadsheet_report
  create_spreadsheet_header
  create_spreadsheet_body
end

.export_movie_dataObject

TODO: Check the data analysis(DA) name. Write a define_method and include the DA.



13
14
15
16
17
# File 'lib/movieDB/data_export.rb', line 13

def export_movie_data
 create_spreadsheet_file
 create_spreadsheet_report
 write_xls_file
end

.report_nameObject



117
118
119
120
# File 'lib/movieDB/data_export.rb', line 117

def report_name
  name = "imdb_raw_data_".to_s.downcase
  name << "#{Time.now.to_s.gsub(':', '').gsub('-', '').gsub(' ', '').split('')[0..9].join}"
end

.spreadsheet_body_count_data(header_title) ⇒ Object



97
98
99
100
101
102
103
104
105
106
# File 'lib/movieDB/data_export.rb', line 97

def spreadsheet_body_count_data(header_title)
   element_cast = MovieDB::Movie.instance_eval{filter_movie_attr(header_title)}

   0.upto(@e_t.length - 1) do |i|
     element_array = []

    element_array << element_cast[i].length
    @sheet.row(1 + i).concat element_array
   end
end

.spreadsheet_body_numeric_data(header_title) ⇒ Object



108
109
110
111
112
113
114
115
# File 'lib/movieDB/data_export.rb', line 108

def spreadsheet_body_numeric_data(header_title)
  @e_t = element_title = MovieDB::Movie.instance_eval{filter_movie_attr(header_title)}

  element_title.each_with_index do |element2, i|
    element_array = element_title[(i)]
    @sheet.row(1 + i).concat element_array
  end
end

.spreadsheet_body_text_data(header_title) ⇒ Object



88
89
90
91
92
93
94
95
# File 'lib/movieDB/data_export.rb', line 88

def spreadsheet_body_text_data(header_title)
  @e_t = element_title = MovieDB::Movie.instance_eval{filter_movie_attr(header_title)}.flatten

  element_title.each_with_index do |element2, i|
    element_array = element_title[(i)].split('   ',)
    @sheet.row(1 + i).concat element_array 
  end
end

.write_xls_fileObject



122
123
124
125
126
# File 'lib/movieDB/data_export.rb', line 122

def write_xls_file
  filename = ("#{report_name}.xls")
  @book.write File.join('reports', filename)
  return filename
end