movieDB 0.3.1 → 0.3.3

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 51a99dff4a1714a2f82cc884b17effb622d26475
4
- data.tar.gz: f969ce9fb07fe4378caf8e2febeaf2d3b63fb9b7
3
+ metadata.gz: 68334b883ec9779ff8af09572abf86e198bf961d
4
+ data.tar.gz: e9d628939efba68b613bd5691110e0874687a778
5
5
  SHA512:
6
- metadata.gz: 993bba8490037ab19e8c31e3815b241e8c60ff0a83b54495480a950c143b96081245e3492e0b7419a509249dea819891c236ea1937a858544156af6cca212d4e
7
- data.tar.gz: 14cca2572f8dc38aa67f7f75d45deb181fb3898635cd9c2ac164f7ce2554be01013b106e7a45f8cc85be0e51bad0269854d275c66a212fbc271af18e0b67eecb
6
+ metadata.gz: 91331899578db5d4d806665a4bcd8b241a6c9b28b04bfcc0c0b3f5c26677118bdb2e41c7bfc5eb227fba2f821c8521c006f8e01d0a694e155e4a54dce74ab354
7
+ data.tar.gz: b3bde0df28b95fab130d24e7196c61bf01b7314430a5cb3542f3bc07ba4d16d747ceea412a61876d080a5cbdddda4114c5b54208c8a2f7615812e2ee489b9ce2
data/.gitignore CHANGED
@@ -17,4 +17,5 @@ test/version_tmp
17
17
  tmp
18
18
  reports
19
19
  .coveralls.yml
20
- setup_readme.txt
20
+ readme_first.txt
21
+ test/.DS_Store
@@ -1,30 +1,21 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.2
4
+ env:
5
+ - TEST_SUITE = units
1
6
  before_script:
2
- #- sh -e /etc/init.d/xvfb start
3
- #- export DISPLAY=99:0
7
+ - rm -rf reports/*.8
4
8
  bundler_args: --without development production --quiet
5
- env:
6
- #- GEM DB=sqlite
7
- #- GEM DB=mysql
8
- #- GEM DB=postgres
9
9
  before_install:
10
- - cd $GEM; export BUNDLE_GEMFILE="`pwd`/Gemfile"
11
- script: bundle exec rspec spec
12
-
10
+ - cd $GEM; export BUNDLE_GEMFILE="`pwd`/Gemfile"
11
+ script:
12
+ - bundle exec rake test:$TEST_SUITE
13
13
  matrix:
14
14
  allow_failures:
15
15
  - rvm: 2.2.2
16
- #- rvm: jruby
17
- #- rvm: rbx
18
- #- rvm: ree
19
-
16
+ cache: bundler
20
17
  notifications:
21
18
  email: kotn_ep1@hotmail.com
22
- webhooks:
23
- on_success: always
24
- on_failure: always
25
-
26
- rvm:
27
- - 2.2.2
28
- # - 1.9.7
29
- # - 2.2.2
30
- # - 2.1.0
19
+ webhooks:
20
+ on_success: always
21
+ on_failure: always
@@ -0,0 +1,33 @@
1
+ ## Change Log
2
+
3
+ Below is a complete listing of changes for each revision of movieDB.
4
+
5
+ ### 0.3.3 / Jun 22, 2015
6
+ * Changed test suite from rspec to unit test.
7
+ * Updated the README.md with better instructions.
8
+ * Applied OOP design for base code.
9
+ * More test unit code.
10
+
11
+ ### 0.1.5 - 0.3.2 / Dec 10, 2013 - Jun 20, 2015
12
+ * Fix styling
13
+ * Added Gitter badge
14
+ * Added coverall
15
+
16
+ ### 0.1.4 / Dec 10, 2013
17
+ * more changes to data_analysis
18
+
19
+ ### 0.1.3 / Dec 4, 2013
20
+ * Added range stats
21
+ * added the travis CI
22
+
23
+ ### 0.1.2 / Nov 24, 2013
24
+ * Fixing naming convention
25
+ * Formatted write xls
26
+
27
+ ### 0.1.1 / Nov 23, 2013
28
+ * modified movieDB, person and version files
29
+ * modified readme, added home page url and dependency gems
30
+ # Added imdb and zimdb gem for extracting movie data
31
+
32
+ ### 0.1.0
33
+ * Initial release.
data/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
  ## MovieDB
2
2
 
3
3
  MovieDB is a ruby wrapper for fetching raw Movie or TV Data from IMDb and performing a variety of statistical analysis and computation.
4
- The objective and usage of this tool is to media producers make high level structured decision decisions based off realistic figures.
4
+ The objective and usage of this tool is to help media producers make high level structured decisions based on realistic analysis of actual data.
5
5
 
6
- The fetched data is stored in memory using Redis. An expiration time of 1800 seconds has be set for every load.
6
+ The fetched data is stored in memory using Redis and has an expiration time of 1800 seconds for all cached objects.
7
7
 
8
8
  - [![Join the chat at https://gitter.im/keeperofthenecklace/movieDB](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/keeperofthenecklace/movieDB?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
9
9
  - [![Coverage Status](https://coveralls.io/repos/keeperofthenecklace/movieDB/badge.svg)](https://coveralls.io/r/keeperofthenecklace/movieDB)
@@ -16,9 +16,14 @@
16
16
  * Data Analysis
17
17
  * Exploratory Data Analysis
18
18
  * Confirmatory Data Analysis
19
+ * More to come...
19
20
 
20
21
  ## Installation
21
22
 
23
+ Please make sure you have redis installed.
24
+
25
+ This tutorial doesn't cover redis installation.
26
+
22
27
  Add this line to your application's Gemfile:
23
28
 
24
29
  gem 'movieDB'
@@ -41,7 +46,7 @@ Or install it yourself as:
41
46
 
42
47
  $> imdb_ids = ["0369610", "3079380"]
43
48
 
44
- $> MovieDB::Movie.get_data(imdb_ids)
49
+ $> MovieDB::Movie.find_imdb_id(imdb_ids)
45
50
 
46
51
  /* YOU CAN ADD AS MANY IMDB IDs AS YOU LIKE. BUT DO NOT EXCEED THE MAXIMUM REQUEST RATE. */
47
52
 
@@ -49,17 +54,21 @@ Or install it yourself as:
49
54
 
50
55
  When IMDb data is fetched, two things happen.
51
56
 
52
- First a reports folder is created in the movieDB gem.
57
+ First, a reports folder is created in the movieDB gem folder.
58
+
59
+ Next, the fetched data is written to an xls format and stored in the reports directory.
60
+
61
+ From your terminal you can locate movieDB gem directory like this:
53
62
 
54
- Second, the fetched data is written to an xls format and stored in the reports directory.
63
+ $ gem content movieDB
55
64
 
56
- The file name is 'imdb_' + name title of the films you requested + today's date
65
+ If you use our above IMDb id, you should find the following xls file.
57
66
 
58
- For example, the fetched data used
67
+ Feel free to open it.
59
68
 
60
- $ open /reports/imdb_JurassicWorld_Spy_20150611.xls
69
+ $ open ../reports/imdb_JurassicWorld_Spy_.xls
61
70
 
62
- ## Usage - Analyze Raw Data and Generate Statistical Results (4 Steps)
71
+ ## Usage - Analyzing Data From IMDb.
63
72
 
64
73
  $ irb
65
74
 
@@ -67,13 +76,13 @@ For example, the fetched data used
67
76
 
68
77
  > require 'MovieDB/data_process'
69
78
 
70
- > MovieDB::DataProcess.send(:basic_statistic, 'imdb_JurassicWorld_Spy_20150611.xls')
79
+ > MovieDB::DataProcess.send(:basic_statistic, 'imdb_JurassicWorld_Spy_.xls')
71
80
 
72
- ### Exported - Analyzed Data
81
+ A statistical computation is performed and the results is written to movieDB gem reports folder.
73
82
 
74
- The exported analyzed data is stored in your reports directory.
83
+ Feel free to open it.
75
84
 
76
- $ cd /reports/basic_statistic_20150611.xls
85
+ $ open ../reports/Statistic_imdb_JurassicWorld_Spy.xls
77
86
 
78
87
  ## What's Next
79
88
 
data/Rakefile CHANGED
@@ -1 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.libs << "test"
6
+ t.test_files = FileList['test/unit/test*.rb']
7
+ t.verbose = true
8
+ end
@@ -10,9 +10,10 @@ require "MovieDB/secret"
10
10
  require "MovieDB/data_export"
11
11
  require "redis"
12
12
  require "json"
13
+ require 'highline/import'
13
14
 
14
15
  unless defined? MovieDB::Movie
15
- module MovieDB #:nodoc:
16
+ module MovieDB
16
17
  # Create a new movie record. The values are stored in the key-value data store.
17
18
  #
18
19
  # Default values are supplement during the instantiation of the class.
@@ -93,60 +94,74 @@ unless defined? MovieDB::Movie
93
94
  end
94
95
  end
95
96
 
96
- # This is empty the container
97
- #
98
- # Futire release of this software will be using the boxofficemojoAPI
97
+ # Future release of this software will scrap IMDb data from boxofficemojoAPI.com
99
98
  # https://github.com/skozilla/BoxOfficeMojo/tree/master/boxofficemojoAPI
100
99
  #
101
- # def clear_data_store
102
- # return @movie_DS = []
103
- # end
104
-
105
- # You can Imdb movie data like this:
106
- #
107
- # MovieDB::Movie.send(:get_multiple_imdb_movie_data, "2024544", "1800241")
100
+ # You can fetch IMDb movie data like this:
101
+ # ids = ["2024544", "1800241" ]
108
102
  #
109
- # Example: You can also collect the title attribute:
103
+ # MovieDB::Movie.get_data(ids)
110
104
  #
111
- # MovieDB::Movie.instance_eval { filter_movie_attr("title") }
112
- def self.get_data(*args)
113
- @db_redis ||= Redis.new
114
-
115
- @db_redis.del "revenue"
105
+ # The fetch data is stored in redis for 1800 seconds
106
+ # And then written to a xls file.
107
+ def self.find_imdb_id(*args)
108
+ raise ArgumentError if args.empty?
109
+
110
+ get_imdb_movie_data(args)
111
+ get_tmdb_movie_data(args)
112
+ cache_movie_data_to_redis(args)
113
+ write_imdb_data_to_xls
114
+ end
116
115
 
116
+ def self.get_imdb_movie_data(*args) #:nodoc:
117
117
  @imdb_id = []
118
+ @imdb_movie_data = []
119
+
120
+ args.flatten.each do |value|
121
+ @imdb_id << value
118
122
 
123
+ Movie.new # Instantiate a movie object.
124
+ @imdb_movie_data << Imdb::Movie.new(value)
125
+ end
126
+ @imdb_movie_data
127
+ end
128
+
129
+ def self.get_tmdb_movie_data(*args) #:nodoc:
130
+ @tmdb_movie_data = []
119
131
  Tmdb::Api.key(Movie.key)
120
132
 
121
133
  args.flatten.each do |value|
122
- @imdb_id << value
134
+ @tmdb_movie_data << Tmdb::Movie.detail("tt#{value}")
135
+ end
136
+ @tmdb_movie_data
137
+ end
123
138
 
124
- movie_info = Movie.new
125
- @movie_data = Imdb::Movie.new(value)
139
+ def self.cache_movie_data_to_redis(*args) #:nodoc:
140
+ @db_redis ||= Redis.new
141
+ @db_redis.del "revenue"
126
142
 
127
- movie_detail = Tmdb::Movie.detail("tt#{value}")
143
+ args.flatten.each_with_index do |value, idx|
144
+ imdb_movie_data = @imdb_movie_data[idx]
145
+ tmdb_movie_data = @tmdb_movie_data[idx]
128
146
 
129
147
  $IMDB_ATTRIBUTES_HEADERS.each do |attr_key|
130
- begin @movie_data.send(attr_key)
131
- attr_value = @movie_data.send(attr_key)
132
- rescue => e
133
- attr_value = movie_detail['revenue']
148
+ begin imdb_movie_data.send(attr_key)
149
+ attr_value = imdb_movie_data.send(attr_key)
150
+ rescue
151
+ attr_value = tmdb_movie_data['revenue']
134
152
  end
135
153
 
136
154
  @db_redis.hset "movie:#{value}", "#{attr_key}", "#{attr_value}" # Adding a hash data type.
137
-
138
155
  @db_redis.lpush "#{attr_key}", "#{attr_value}" if attr_value.is_a? Numeric # Adding a list data type.
139
156
 
140
157
  @db_redis.expire "#{attr_key}", 1800
141
-
142
158
  @db_redis.expire "movie:#{value}", 1800
143
159
  end
144
160
  end
145
-
146
- write_imdb_data_to_xls
161
+ @db_redis
147
162
  end
148
163
 
149
- def self.write_imdb_data_to_xls
164
+ def self.write_imdb_data_to_xls #:nodoc:
150
165
  Movie.export_movie_data(@db_redis, @imdb_id)
151
166
  end
152
167
  end
@@ -9,6 +9,7 @@ module MovieDB
9
9
  module Statistic
10
10
  def basic_statistic(directory_name)
11
11
  open_spreadsheet(directory_name)
12
+ @directory_name = directory_name
12
13
 
13
14
  if check_imdb_count == true
14
15
  puts "*"*41
@@ -128,7 +129,7 @@ module MovieDB
128
129
  module_nesting = Module.nesting[0].to_s.gsub('::', ' ').split()
129
130
  count = module_nesting.size
130
131
  @data_analysis_name = module_nesting[count - 1]
131
- @data_analysis_name << '_' << "#{Time.now.to_s.gsub(':', '').gsub('-', '').gsub(' ', '').split('')[0..9].join}"
132
+ @data_analysis_name << '_' << @directory_name.gsub('_.xls', '')
132
133
  end
133
134
 
134
135
  def insert_data_to_existing_xls_file
@@ -1,3 +1,3 @@
1
1
  module MovieDB
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.3"
3
3
  end
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Albert McKeever"]
10
10
  spec.email = ["kotn_ep1@hotmail.com"]
11
11
  spec.description = %q{Perform Data Analysis on IMDB Movies}
12
- spec.summary = %q{Movie/Film/TV Statistic and Data Analysis}
12
+ spec.summary = %q{Movie/Film/TV Statistic and Data Analysis Tool}
13
13
  spec.homepage = "https://github.com/keeperofthenecklace/movieDB"
14
14
  spec.license = "MIT"
15
15
 
@@ -20,10 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
- spec.add_development_dependency "rspec"
24
- spec.add_development_dependency 'highline'
25
- spec.add_development_dependency 'fakeweb'
26
- spec.add_dependency "activesupport", ">= 4.0.0"
23
+ spec.add_development_dependency "test-unit"
27
24
  spec.add_dependency "spreadsheet"
28
25
  spec.add_dependency "themoviedb"
29
26
  spec.add_dependency "redis"
@@ -0,0 +1,100 @@
1
+ require 'test/unit'
2
+ require "imdb"
3
+ require "redis"
4
+ require 'fileutils'
5
+
6
+ begin
7
+ require 'MovieDB'
8
+ rescue MovieError
9
+ end
10
+
11
+ class TestMovieDB < Test::Unit::TestCase
12
+
13
+ # This unit test writes an excel file to the reports directory
14
+ # in your gem folder.
15
+ #
16
+ # So, this method removes and empty the reports folder of
17
+ # all or andy pre-existing test files.
18
+ def remove_test_files_from_reports_directory
19
+ testxlsfiles = File.join("**", "reports", "*.xls")
20
+ FileUtils.rm Dir.glob(testxlsfiles)
21
+ end
22
+
23
+ def test_movie_new
24
+ m = MovieDB::Movie.new
25
+ assert_instance_of MovieDB::Movie, m
26
+ assert_equal "Method Missing 2: Rails Roars!", m.title
27
+ assert_equal ["David Black", "Paola Perotta", "Obie Fernandez", "David Chelimsky"], m.cast_members
28
+ assert_equal ["David Black => Developer", "Paola Perotta => Police Officer", "Obie Fernandez =>Hunter", "David Chelimsky =>Hostage"], m.cast_members_characters
29
+ assert_equal ["nm3901234", "nm4901244", "nm5901235", "nm3601266"], m.cast_member_ids
30
+ assert_equal "http://imdb.com/video/screenplay/vi581042457/", m.trailer_url
31
+ assert_equal "Yukihiro 'Matz' Matsumoto", m.director
32
+ assert_equal 'David Heinemeier Hansson', m.writers
33
+ assert_equal ["Manhattan, New York, USA"], m.filming_locations
34
+ assert_equal "Open Source Community Film Corporation", m.company
35
+ assert_equal ["Bromantic", "Syfy"], m.genres
36
+ assert_equal ["English", "German", "Italian"], m.languages
37
+ assert_equal ["USA", "Germany", "Italy"], m.countries
38
+ assert_equal 146, m.length
39
+ assert_equal ["David Black, a ruby developer, tries to write his flagship ruby book 'The Well-Grounded Rubyist vol. 186' only to find out that Ruby 9.0.2 and Rails 16.0.3 release dates have been postponed"], m.plot
40
+ assert_equal "http://ia.media-imdb.com/images/M/MV5BMTY@@.jpg", m.poster
41
+ assert_equal 9.9, m.rating
42
+ assert_equal 110636, m.votes
43
+ assert_equal "Rated R for dynamic OOD language usage and private methods access (certificate 33087)", m.mpaa_rating
44
+ assert_equal 'Only One MVC Will Rule Them All.', m.tagline
45
+ assert_equal 2013, m.year
46
+ assert_equal "11 October 2013 (USA)", m.release_date
47
+ assert_equal 456790, m.revenue
48
+ end
49
+
50
+ def test_find_imdb_id
51
+ assert_raise(ArgumentError) { MovieDB::Movie.find_imdb_id() }
52
+ assert_equal("imdb_JurassicWorld_.xls", MovieDB::Movie.find_imdb_id('0369610'))
53
+
54
+ remove_test_files_from_reports_directory
55
+ end
56
+
57
+ def test_get_imdb_movie_data
58
+ imdb_ids = ['0369610', '2395427']
59
+ wrong_ids = ['abcd', 'cdef']
60
+
61
+ assert_equal(2, MovieDB::Movie.get_imdb_movie_data(imdb_ids).length)
62
+ assert_nil(nil, MovieDB::Movie.get_imdb_movie_data(wrong_ids))
63
+
64
+ m = MovieDB::Movie.get_imdb_movie_data(imdb_ids)
65
+ assert_equal("Jurassic World", m[0].title)
66
+ assert_equal("Avengers: Age of Ultron", m[1].title)
67
+ end
68
+
69
+ def test_get_tmdb_movie_data
70
+ imdb_ids = ['0078748', '0120338']
71
+ assert_equal(2, MovieDB::Movie.get_tmdb_movie_data(imdb_ids).length)
72
+
73
+ m = MovieDB::Movie.get_tmdb_movie_data(imdb_ids)
74
+ assert_equal(104931801, m[0]['revenue'])
75
+ assert_equal(1845034188, m[1]['revenue'])
76
+ end
77
+
78
+ def test_store_movie_data_to_redis
79
+ imdb_ids = ["0369610"]
80
+
81
+ MovieDB::Movie.get_imdb_movie_data(imdb_ids)
82
+ MovieDB::Movie.get_tmdb_movie_data(imdb_ids)
83
+
84
+ m = MovieDB::Movie.cache_movie_data_to_redis(imdb_ids)
85
+ assert_equal("Jurassic World", (m.hget "movie:0369610", "title"))
86
+ end
87
+
88
+ def test_write_imdb_data_to_xls
89
+ imdb_ids = ['0369610', '2395427']
90
+
91
+ MovieDB::Movie.get_imdb_movie_data(imdb_ids)
92
+ MovieDB::Movie.get_tmdb_movie_data(imdb_ids)
93
+ m = MovieDB::Movie.cache_movie_data_to_redis(imdb_ids)
94
+
95
+ assert_equal("imdb_JurassicWorld_Avengers:AgeofUltron_.xls", MovieDB::Movie.export_movie_data(m, imdb_ids))
96
+
97
+ remove_test_files_from_reports_directory
98
+ end
99
+ end
100
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: movieDB
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.3
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-16 00:00:00.000000000 Z
11
+ date: 2015-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: test-unit
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -52,48 +52,6 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: highline
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
- - !ruby/object:Gem::Dependency
70
- name: fakeweb
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: activesupport
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: 4.0.0
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: 4.0.0
97
55
  - !ruby/object:Gem::Dependency
98
56
  name: spreadsheet
99
57
  requirement: !ruby/object:Gem::Requirement
@@ -173,6 +131,7 @@ extra_rdoc_files: []
173
131
  files:
174
132
  - ".gitignore"
175
133
  - ".travis.yml"
134
+ - Changelog.md
176
135
  - Gemfile
177
136
  - LICENSE.txt
178
137
  - README.md
@@ -183,19 +142,13 @@ files:
183
142
  - lib/movieDB/data_analysis.rb
184
143
  - lib/movieDB/data_export.rb
185
144
  - lib/movieDB/data_process.rb
186
- - lib/movieDB/genre_parser.rb
187
- - lib/movieDB/genres/en.txt
188
145
  - lib/movieDB/movie_error.rb
189
- - lib/movieDB/person.rb
190
146
  - lib/movieDB/secret.rb
191
147
  - lib/movieDB/status_checker.rb
192
148
  - lib/movieDB/version.rb
193
149
  - movieDB.gemspec
194
- - spec/.DS_Store
195
- - spec/data_export_spec.rb
196
- - spec/data_process_spec.rb
197
- - spec/person_spec.rb
198
- - spec/spec_helper.rb
150
+ - test/.DS_Store
151
+ - test/unit/test_movie_db.rb
199
152
  homepage: https://github.com/keeperofthenecklace/movieDB
200
153
  licenses:
201
154
  - MIT
@@ -219,10 +172,7 @@ rubyforge_project:
219
172
  rubygems_version: 2.4.6
220
173
  signing_key:
221
174
  specification_version: 4
222
- summary: Movie/Film/TV Statistic and Data Analysis
175
+ summary: Movie/Film/TV Statistic and Data Analysis Tool
223
176
  test_files:
224
- - spec/.DS_Store
225
- - spec/data_export_spec.rb
226
- - spec/data_process_spec.rb
227
- - spec/person_spec.rb
228
- - spec/spec_helper.rb
177
+ - test/.DS_Store
178
+ - test/unit/test_movie_db.rb
@@ -1,15 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- module MovieDB
4
- class GenreParser
5
-
6
- def initialize
7
- begin
8
- open_genre_file = File.open("#{File.dirname(__FILE__)}/genres/en.txt").readlines.map(&:chomp)
9
- rescue
10
- Errno::ENONENT
11
- end
12
- end
13
- end
14
- end
15
-
@@ -1,28 +0,0 @@
1
- Action
2
- Adventure
3
- Animation
4
- Biography
5
- Comedy
6
- Crime
7
- Documentary
8
- Drama
9
- Family
10
- Fantasy
11
- Film-Noir
12
- Game-Show
13
- History
14
- Horror
15
- Music
16
- Musical
17
- Mystery
18
- News
19
- Reality-TV
20
- Romance
21
- Sci-Fi
22
- Scifi
23
- Sport
24
- Suspense
25
- Talk-Show
26
- Thriller
27
- War
28
- Western
@@ -1,134 +0,0 @@
1
- require 'rubygems'
2
- require 'time'
3
- # Create an actor instance and return the values for the actor variable.
4
- #
5
- # actor = MovieDB::Actor.instance_eval{create_with_info("Brittany Murphy", "F", "1977-11-10", "2009-12-20")}
6
- # actor = MovieDB::Actor.instance_eval{create_with_info("George Clooney", "M", "1961-05-06", nil)}
7
-
8
- # Example to find the actor name:
9
- #
10
- # actor_name = actor.map(&:name) #=> ["Brittany Murphy"]
11
- #
12
- # Example to see if an actoyre is alive:
13
- # actor_name = actor.map(&:alive?) #=> [false, true]
14
- #
15
- # Example to find an actor's age:
16
- # actor_name = actor.map(&:age) #=> [32, 52]
17
- module MovieDB
18
- class Person
19
- attr_accessor :name, :gender, :birth_date, :death_date, :birthplace
20
-
21
- def initialize(name = nil, gender = nil, birth_date = nil, death_date = nil, birth_place = nil, opt={})
22
- @name = name
23
- @gender = gender
24
- @birth_date = birth_date
25
- @death_date = death_date
26
- @birth_place = birth_place
27
- end
28
-
29
- def age
30
- if alive?
31
- a = Time.now - Time.parse(@birth_date)
32
- else
33
- a = Time.parse(@death_date) - Time.parse(@birth_date)
34
- end
35
-
36
- return (a/60/60/24/365).to_i
37
- end
38
-
39
- def alive?
40
- !@death_date.nil?
41
- end
42
-
43
- class << self
44
- def create_with_info(name, gender, birth_date, death_date)
45
- @person_DS ||= []
46
- person = MovieDB::Person.new
47
- person.name = name
48
- person.gender = gender
49
- person.birth_date = birth_date
50
- person.death_date = death_date
51
-
52
- return @person_DS << person
53
- end
54
-
55
- def filter_person(attr)
56
- attr = attr.to_sym
57
- raise ArgumentError "#{attr} can only be name or age" if !attr == :age && :name
58
-
59
- return @person_DS.select{|s| s.alive?}.map(&attr)
60
- end
61
-
62
- # Returns a random parameter integer between min to max,
63
- # rather than a float between min to max.(Ruby 2.0.0)
64
- def sample_attr(attr)
65
- randgen = Object.new
66
- attr_array = self.instance_eval{filter_person(attr)}
67
- attr_array.sample(random: randgen)
68
- end
69
- end
70
-
71
- private_class_method :create_with_info, :filter_person
72
-
73
- end
74
-
75
- class Actor < Person
76
- attr_accessor :filmography
77
-
78
- def initialize(filmography = [])
79
- super()
80
- @filmography = filmography
81
- end
82
-
83
- def addFilms film
84
- @filmology ||= []
85
- end
86
-
87
- def actor_actress_gender(person)
88
- case
89
- when person.gender == 'F'
90
- return "actress"
91
- when person.gender == "M"
92
- return "actor"
93
- else
94
- "N/A"
95
- end
96
- end
97
-
98
- class << self
99
- def filter_actor_alive(attr)
100
- attr = attr.to_sym
101
- raise ArgumentError "#{attr} can only be name or age" if !attr == :age && :name
102
-
103
- return @person_DS.select{|s| s.alive?}.map(&"#{attr.to_sym}")
104
- end
105
-
106
- def filter_actor_deceased(actor)
107
- return @person_DS.select{ |s| !s.alive?}.map{ |m| "#{m.age}" } if attr == "age"
108
- return @person_DS.select{ |s| !s.alive?}.map{ |m| "#{m.name}" } if attr == "name"
109
- end
110
-
111
- end
112
- end
113
-
114
- class Writer < Person
115
- attr_accessor :published_work
116
- alias :published? :published_work
117
-
118
- def initialize(published_work = [])
119
- super()
120
- @published_work = published_work
121
- end
122
-
123
- end
124
-
125
- class Director < Person
126
- attr_accessor :filmography
127
-
128
- def initialize(filmography = [])
129
- super()
130
- @filmography = filmography
131
- end
132
-
133
- end
134
- end
Binary file
@@ -1,15 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe MovieDB::DataExport do
4
-
5
- describe "#fetch_movie_data_from_imdb" do
6
- MovieDB::Movie.get_data("2024544", "1800241", "0791314")
7
-
8
- let(:file_name) {MovieDB::Movie.write_imdb_data_to_xls}
9
-
10
- it 'writes the fetched data as an xls file to the reports directory' do
11
- expect(File.exist?(File.join('reports', file_name))).to eql(true)
12
- end
13
-
14
- end
15
- end
@@ -1,17 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe MovieDB::DataProcess do
4
-
5
- describe "#AnalysisOfVariance" do
6
- describe "#LeastSquares" do
7
- describe "#Coefficient_Of_Determination" do
8
- let(:basic_stat) {MovieDB::DataProcess}
9
-
10
- it "should return the cof" do
11
- # pending
12
- basic_stat.send(:basic_statistic, 'imdb_12YearsaSlave_AmericanHustle_KeeperoftheNecklace.xls').should == 'Statistic_2015061319.xls'
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,23 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe MovieDB::Person do
4
-
5
- context "#filter_person" do
6
- it "should return attributes" do
7
- MovieDB::Person.instance_eval{ create_with_info("Brittany Murphy", "F", "1977-11-10", "2009-12-20") }
8
- MovieDB::Person.instance_eval{ create_with_info("George Clooney", "M", "1961-05-06", "") }
9
-
10
- expect(MovieDB::Person.instance_eval{ filter_person('name') }).to eq(['Brittany Murphy', 'George Clooney'])
11
- end
12
- end
13
-
14
- context "#filter attribute" do
15
- it "should return a random integer bewteen min to max" do
16
- age = MovieDB::Person.instance_eval{ filter_person('age') }
17
- moviePerson = MovieDB::Person.instance_eval{ sample_attr('age') }
18
-
19
- # moviePerson.should be_in(age)
20
- end
21
- end
22
-
23
- end
@@ -1,16 +0,0 @@
1
- $:.unshift File.expand_path('..', __FILE__)
2
- $:.unshift File.expand_path('../../lib/', __FILE__)
3
-
4
- require 'coveralls'
5
- Coveralls.wear!
6
- require 'movieDB'
7
- require 'MovieDB/base'
8
- require "MovieDB/person"
9
- require 'MovieDB/status_checker'
10
- require 'MovieDB/movie_error'
11
- require "MovieDB/data_process"
12
- require "MovieDB/data_export"
13
-
14
- RSpec.configure do |config|
15
- # config.include SimpleBdd
16
- end