ruby-imdb 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ .bundle
2
+ pkg
3
+ ruby-imdb*.gem
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source :gemcutter
2
+ gem "nokogiri"
3
+ gem "cucumber", :group => "test"
4
+
data/LICENSE ADDED
File without changes
data/README ADDED
File without changes
data/Rakefile ADDED
@@ -0,0 +1,18 @@
1
+ require 'rake'
2
+
3
+ begin
4
+ require "jeweler"
5
+ Jeweler::Tasks.new do |s|
6
+ s.name = "ruby-imdb"
7
+ s.summary = "Ruby IMDB Parsing Library"
8
+ s.description = s.summary
9
+ s.email = "yalcin@webliyacelebi.com"
10
+ s.homepage = "http://github.com/yalcin/ruby-imdb"
11
+ s.authors = ["Yalcin Acikyildiz"]
12
+ s.files = FileList["[A-Za-z]*", "{lib,features}/**/*", ".gitignore"]
13
+ s.add_dependency "bundler"
14
+ s.add_dependency "nokogiri"
15
+ end
16
+ rescue LoadError
17
+ puts "Jeweler not available. Install it with: gem install jeweler"
18
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.3
@@ -0,0 +1,6 @@
1
+ Feature: Search IMDB
2
+
3
+ Scenario: Search a movie in imdb
4
+ Given I have keyword "asdopfajpoejf" for the search
5
+ #When I doing search
6
+ Then the result should be equal or greater than 1
@@ -0,0 +1,18 @@
1
+ begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
2
+ require 'cucumber/formatter/unicode'
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
4
+ require 'imdb'
5
+
6
+ Before do
7
+ end
8
+
9
+ After do
10
+ end
11
+
12
+ Given /I have keyword "(.*)" for the search/ do |n|
13
+ @result = IMDB::Search.movie(n.to_s)
14
+ end
15
+
16
+ Then /the result should be equal or greater than (\d+)/ do |result|
17
+ @result.should >= result.to_i
18
+ end
data/lib/imdb.rb ADDED
@@ -0,0 +1,24 @@
1
+ require "bundler"
2
+ Bundler.require(:default)
3
+
4
+ require "cgi"
5
+ require "open-uri"
6
+
7
+ require "imdb/search"
8
+ require "imdb/movie"
9
+ require "imdb/person"
10
+
11
+ #IMDB::Search.movie("fight club").each do
12
+ # |result|
13
+ # movie = IMDB::Movie.new(result.id)
14
+ # p movie.title
15
+ # movie.cast.each do
16
+ # |cast|
17
+ # p "#{cast.name} as #{cast.char}"
18
+ # end
19
+ # p movie.poster
20
+ #end
21
+
22
+ #movie = IMDB::Movie.new('0133093')
23
+ #p movie.poster
24
+
data/lib/imdb/movie.rb ADDED
@@ -0,0 +1,23 @@
1
+ module IMDB
2
+ class Movie
3
+ attr_accessor :title, :link, :cast, :id, :poster
4
+
5
+ def initialize(id)
6
+ @id = id
7
+ @link = "http://www.imdb.com/title/tt#{id}"
8
+ doc = Nokogiri::HTML(open("#{@link}/fullcredits"))
9
+
10
+ @title = doc.at("//head/meta[@name='title']")["content"].split(/\(\d+\)/)[0].strip!
11
+ @poster = doc.at("a[@name='poster'] img")['src'][/http:.+/] + '.jpg' rescue nil
12
+ @cast = []
13
+ doc.search("table.cast tr").map do |link|
14
+ picture = link.children[0].search("img")[0]["src"] rescue nil
15
+ name = link.children[1].content rescue nil
16
+ char = link.children[3].content rescue nil
17
+ @cast.push(IMDB::Person.new(name, char, picture, picture)) if name and char and picture != nil
18
+ end
19
+
20
+ end
21
+ end # Movie
22
+ end # IMDB
23
+
@@ -0,0 +1,13 @@
1
+ module IMDB
2
+ class Person
3
+ attr_accessor :name, :char, :profile, :picture
4
+
5
+ def initialize(name, char, profile, picture)
6
+ @name = name
7
+ @char = char
8
+ @profile = profile
9
+ @picture = picture
10
+ end
11
+ end # Person
12
+ end
13
+
@@ -0,0 +1,24 @@
1
+ module IMDB
2
+ class Search
3
+ def self.movie(keyword)
4
+ doc = Nokogiri::HTML(open("http://www.imdb.com/find?s=tt&q=#{CGI.escape(keyword)}"))
5
+ ret_val = []
6
+ doc.search('a[@href^="/title/tt"]').reject { |node|
7
+ ret_val.push(IMDB::Result.new(node["href"][/\d+/], node.content, "http://www.imdb.com#{node['href']}"))
8
+ }
9
+ return ret_val
10
+ end
11
+
12
+ end # Search
13
+
14
+ class Result
15
+ attr_accessor :id, :title, :link, :year
16
+
17
+ def initialize(id, title, link)
18
+ @title = title
19
+ @link = link
20
+ @id = id
21
+ end
22
+ end
23
+ end
24
+
data/ruby-imdb.gemspec ADDED
@@ -0,0 +1,56 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{ruby-imdb}
8
+ s.version = "0.0.3"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Yalcin Acikyildiz"]
12
+ s.date = %q{2010-04-26}
13
+ s.description = %q{Ruby IMDB Parsing Library}
14
+ s.email = %q{yalcin@webliyacelebi.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README"
18
+ ]
19
+ s.files = [
20
+ ".gitignore",
21
+ "Gemfile",
22
+ "LICENSE",
23
+ "README",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "features/search.feature",
27
+ "features/step_definitions/imdb_test.rb",
28
+ "lib/imdb.rb",
29
+ "lib/imdb/movie.rb",
30
+ "lib/imdb/person.rb",
31
+ "lib/imdb/search.rb",
32
+ "ruby-imdb.gemspec"
33
+ ]
34
+ s.homepage = %q{http://github.com/yalcin/ruby-imdb}
35
+ s.rdoc_options = ["--charset=UTF-8"]
36
+ s.require_paths = ["lib"]
37
+ s.rubygems_version = %q{1.3.6}
38
+ s.summary = %q{Ruby IMDB Parsing Library}
39
+
40
+ if s.respond_to? :specification_version then
41
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
42
+ s.specification_version = 3
43
+
44
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
45
+ s.add_runtime_dependency(%q<bundler>, [">= 0"])
46
+ s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
47
+ else
48
+ s.add_dependency(%q<bundler>, [">= 0"])
49
+ s.add_dependency(%q<nokogiri>, [">= 0"])
50
+ end
51
+ else
52
+ s.add_dependency(%q<bundler>, [">= 0"])
53
+ s.add_dependency(%q<nokogiri>, [">= 0"])
54
+ end
55
+ end
56
+
metadata ADDED
@@ -0,0 +1,98 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby-imdb
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 3
9
+ version: 0.0.3
10
+ platform: ruby
11
+ authors:
12
+ - Yalcin Acikyildiz
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-04-26 00:00:00 +03:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: bundler
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ type: :runtime
31
+ version_requirements: *id001
32
+ - !ruby/object:Gem::Dependency
33
+ name: nokogiri
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ segments:
40
+ - 0
41
+ version: "0"
42
+ type: :runtime
43
+ version_requirements: *id002
44
+ description: Ruby IMDB Parsing Library
45
+ email: yalcin@webliyacelebi.com
46
+ executables: []
47
+
48
+ extensions: []
49
+
50
+ extra_rdoc_files:
51
+ - LICENSE
52
+ - README
53
+ files:
54
+ - .gitignore
55
+ - Gemfile
56
+ - LICENSE
57
+ - README
58
+ - Rakefile
59
+ - VERSION
60
+ - features/search.feature
61
+ - features/step_definitions/imdb_test.rb
62
+ - lib/imdb.rb
63
+ - lib/imdb/movie.rb
64
+ - lib/imdb/person.rb
65
+ - lib/imdb/search.rb
66
+ - ruby-imdb.gemspec
67
+ has_rdoc: true
68
+ homepage: http://github.com/yalcin/ruby-imdb
69
+ licenses: []
70
+
71
+ post_install_message:
72
+ rdoc_options:
73
+ - --charset=UTF-8
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ segments:
81
+ - 0
82
+ version: "0"
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ segments:
88
+ - 0
89
+ version: "0"
90
+ requirements: []
91
+
92
+ rubyforge_project:
93
+ rubygems_version: 1.3.6
94
+ signing_key:
95
+ specification_version: 3
96
+ summary: Ruby IMDB Parsing Library
97
+ test_files: []
98
+