myimdb 0.4.3 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
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.