myimdb 0.4.3 → 0.4.5

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.3
1
+ 0.4.2
data/lib/myimdb.rb CHANGED
@@ -6,15 +6,9 @@ require 'open-uri'
6
6
  require 'myimdb/search'
7
7
  require 'myimdb/scraper'
8
8
 
9
- ['Imdb', 'RottenTomatoes', 'Metacritic', 'Freebase'].each do |site|
10
- klass = Object.const_set("#{site}Movie", Class.new)
11
- klass.class_eval do
12
- class << self
13
- define_method :search do |movie_name|
14
- site = self.to_s.gsub('Movie', '')
15
- search_result = Myimdb::Search::Base.search(movie_name, :restrict_to=> "#{site.downcase}.com")[0]
16
- eval("Myimdb::Scraper::#{site}").new(search_result[:url]) if search_result
17
- end
18
- end
9
+ class ImdbMovie
10
+ def self.search(movie_name)
11
+ search_result = Myimdb::Search::Base.search(movie_name, :restrict_to=> 'imdb.com')[0]
12
+ Myimdb::Scraper::Imdb.new(search_result[:url]) if search_result
19
13
  end
20
14
  end
@@ -47,6 +47,7 @@ module Myimdb
47
47
  end
48
48
 
49
49
  def image
50
+ document['thumbnail']
50
51
  end
51
52
 
52
53
  private
@@ -6,55 +6,51 @@ module Myimdb
6
6
  end
7
7
 
8
8
  def directors
9
- document.css('.info h5:contains("Director") + .info-content a:not(.tn15more)').collect{ |a| a.text }
9
+ document.css('#overview-top .txt-block h4:contains("Director") ~ a:not(:contains(" more "))').collect{ |a| a.text }
10
10
  end
11
11
 
12
12
  def directors_with_url
13
- document.css('.info h5:contains("Director") + .info-content a:not(.tn15more)').collect{ |a| {:name=> a.text, :url=> "http://www.imdb.com#{a['href']}" } }
13
+ document.css('#overview-top .txt-block h4:contains("Director") ~ a:not(:contains(" more "))').collect{ |a| {:name=> a.text, :url=> "http://www.imdb.com#{a['href']}" } }
14
14
  end
15
15
 
16
16
  def writers
17
- document.css('.info h5:contains("Writer") + .info-content a:not(.tn15more)').collect{ |a| a.text }
17
+ document.css('#overview-top .txt-block h4:contains("Writer") ~ a:not(:contains(" more "))').collect{ |a| a.text }
18
18
  end
19
19
 
20
20
  def writers_with_url
21
- document.css('.info h5:contains("Writer") + .info-content a:not(.tn15more)').collect{ |a| {:name=> a.text, :url=> "http://www.imdb.com#{a['href']}" } }
21
+ document.css('#overview-top .txt-block h4:contains("Writer") ~ a:not(:contains(" more "))').collect{ |a| {:name=> a.text, :url=> "http://www.imdb.com#{a['href']}" } }
22
22
  end
23
23
 
24
24
  def rating
25
- document.css(".starbar-meta b").inner_text.strip.split('/').first.to_f
25
+ document.css(".star-box .rating-rating").inner_text.strip.split('/').first.to_f
26
26
  end
27
27
 
28
28
  def votes
29
- document.css(".starbar-meta a").inner_text.strip.split(' ').first.sub(',', '').to_i
29
+ document.css(".star-box a[href='ratings']").inner_text.strip.split(' ').first.sub(',', '').to_i
30
30
  end
31
31
 
32
32
  def genres
33
- document.css('.info h5:contains("Genre:") + .info-content a:not(.tn15more)').collect{ |a| a.text }
33
+ document.css('.see-more.inline.canwrap h4:contains("Genres:") ~ a:not(:contains(" more "))').collect{ |a| a.text }
34
34
  end
35
35
 
36
36
  def tagline
37
- document.css('.info h5:contains("Tagline:") + .info-content').children[0].text.strip rescue nil
37
+ strip_useless_chars(document.css('.txt-block h4:contains("Taglines:")').first.parent.inner_text).gsub(/Taglines |See more/, '') rescue nil
38
38
  end
39
39
 
40
40
  def plot
41
- document.css('.info h5:contains("Plot:") + .info-content').children[0].text.strip
41
+ strip_useless_chars(document.css('.article h2:contains("Storyline") ~ p').inner_text).gsub(/Written by.*/, '')
42
42
  end
43
43
 
44
44
  def year
45
- document.css("div#tn15title a:first")[0].text.to_i
45
+ release_date.year
46
46
  end
47
47
 
48
48
  def release_date
49
- Date.parse(document.css('.info h5:contains("Release Date:") + .info-content').inner_text)
49
+ Date.parse(document.css("a[title='See all release dates']").inner_text)
50
50
  end
51
51
 
52
52
  def image
53
- image_url = document.css(".photo:first a").first['href']
54
- unless image_url.nil? or image_url =~ /addposter/
55
- image_document = Nokogiri::HTML(open("http://www.imdb.com#{image_url}"))
56
- image_document.css('#principal img:first').first['src']
57
- end
53
+ document.css('#img_primary img').first['src']
58
54
  end
59
55
 
60
56
  private
@@ -6,21 +6,23 @@ module Myimdb
6
6
  end
7
7
 
8
8
  def rating
9
- document.css("#metascore").inner_text.strip.to_f/10
9
+ document.css(".score_value").first.inner_text.strip.to_f/10
10
10
  end
11
11
 
12
12
  def votes
13
- document.at("a[@href='#critics']").inner_text.strip.to_i
13
+ document.css(".summary .count a:contains('Critics')").inner_text.strip.to_i
14
14
  end
15
15
 
16
16
  def genres
17
- document.css("#productinfo p:first").text.gsub(/^\S+:/, '').split("|").collect do |genre|
18
- strip_useless_chars(genre)
19
- end
17
+ document.css(".summary_detail.product_genre span.data").inner_text.gsub(/\s/, '').split(',')
20
18
  end
21
19
 
22
20
  def plot
23
- document.css("#productsummary .summarytext").inner_text.strip
21
+ document.css(".summary_detail.product_summary .inline_expand_collapse.inline_collapsed span.blurb").inner_text.strip
22
+ end
23
+
24
+ def image
25
+ document.css("img.product_image.large_image").first['src']
24
26
  end
25
27
 
26
28
  private
@@ -6,20 +6,24 @@ module Myimdb
6
6
  end
7
7
 
8
8
  def rating
9
- document.css("#tomatometer_data p:nth-child(4) span").inner_text.strip.to_i
9
+ document.css(".critic_stats span")[0].inner_text.to_f
10
10
  end
11
11
 
12
12
  def votes
13
- document.css("#tomatometer_data p:nth-child(1) span").inner_text.strip.to_i
13
+ document.css(".critic_stats span")[1].text.to_i
14
14
  end
15
15
 
16
16
  def genres
17
- document.css("#movie_stats .fl:first p:last .content a").inner_text.strip.to_a
17
+ document.css("span.label:contains('Genre:') + span.content span").collect{ |a| a.text }
18
18
  end
19
19
 
20
20
  def plot
21
21
  document.css("#movie_synopsis_all").inner_text.strip
22
22
  end
23
+
24
+ def image
25
+ document.css(".movie_poster_area a img").first['src']
26
+ end
23
27
 
24
28
  private
25
29
  def document
@@ -9,7 +9,7 @@ module Myimdb
9
9
  end
10
10
 
11
11
  def strip_useless_chars(string)
12
- string.gsub(/[^a-zA-z0-9\|\-_\(\)@$\/\\]/, '')
12
+ string.gsub(/[^a-zA-z0-9\|\-_\(\)@$\/\\ ,\.]/, '')
13
13
  end
14
14
  end
15
15
  end
data/myimdb.gemspec CHANGED
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{myimdb}
8
- s.version = "0.4.3"
8
+ s.version = "0.4.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Gaurav"]
12
- s.date = %q{2010-03-23}
13
- s.email = %q{gaurav@vinsol.com}
12
+ s.date = %q{2010-12-16}
13
+ s.email = %q{gaurav.qwe@gmail.com}
14
14
  s.executables = ["myimdb", "myimdb-catalogue"]
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: myimdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ hash: 5
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 4
9
+ - 5
10
+ version: 0.4.5
5
11
  platform: ruby
6
12
  authors:
7
13
  - Gaurav
@@ -9,31 +15,43 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-03-23 00:00:00 +05:30
18
+ date: 2010-12-16 00:00:00 -08:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: httparty
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 5
30
+ segments:
31
+ - 0
32
+ - 4
33
+ - 5
23
34
  version: 0.4.5
24
- version:
35
+ type: :runtime
36
+ version_requirements: *id001
25
37
  - !ruby/object:Gem::Dependency
26
38
  name: nokogiri
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
30
42
  requirements:
31
43
  - - ">="
32
44
  - !ruby/object:Gem::Version
45
+ hash: 29
46
+ segments:
47
+ - 1
48
+ - 3
49
+ - 3
33
50
  version: 1.3.3
34
- version:
51
+ type: :runtime
52
+ version_requirements: *id002
35
53
  description:
36
- email: gaurav@vinsol.com
54
+ email: gaurav.qwe@gmail.com
37
55
  executables:
38
56
  - myimdb
39
57
  - myimdb-catalogue
@@ -74,21 +92,27 @@ rdoc_options:
74
92
  require_paths:
75
93
  - lib
76
94
  required_ruby_version: !ruby/object:Gem::Requirement
95
+ none: false
77
96
  requirements:
78
97
  - - ">="
79
98
  - !ruby/object:Gem::Version
99
+ hash: 3
100
+ segments:
101
+ - 0
80
102
  version: "0"
81
- version:
82
103
  required_rubygems_version: !ruby/object:Gem::Requirement
104
+ none: false
83
105
  requirements:
84
106
  - - ">="
85
107
  - !ruby/object:Gem::Version
108
+ hash: 3
109
+ segments:
110
+ - 0
86
111
  version: "0"
87
- version:
88
112
  requirements: []
89
113
 
90
114
  rubyforge_project: myimdb
91
- rubygems_version: 1.3.5
115
+ rubygems_version: 1.3.7
92
116
  signing_key:
93
117
  specification_version: 3
94
118
  summary: Utility gem for fetching movie details.