jduff-tmdb_party 0.0.2

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/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 John Duff
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,40 @@
1
+ = tmdb_party
2
+
3
+ Simple ruby wrapper to themoviedb.org (http://api.themoviedb.org/2.0/docs/) using HTTParty
4
+
5
+ = usage:
6
+ sudo gem install jduff-tmdb_party
7
+ require 'tmdb_party'
8
+
9
+ = example:
10
+
11
+ @tmdb = TMDBParty::Base.new('key')
12
+ results = @tmdb.search('transformers')
13
+
14
+ results.length
15
+ # => 5
16
+
17
+ transformers = results.detect{|m| m.title == "Transformers"}
18
+
19
+ transformers.popularity
20
+ # => 31
21
+ transformers.score
22
+ # => 1.0
23
+ transformers.imdb
24
+ # => 'tt0418279'
25
+
26
+ # some attributes don't come back with the search result, they are lazily loaded on demand
27
+ transformers.homepage
28
+ # => "http://www.transformersmovie.com/"
29
+ transformers.trailer.url
30
+ # => "http://www.youtube.com/watch?v=eduwcuq1Exg"
31
+
32
+ transformers.categories.collect{|cat| cat.name}.include?("Adventure Film")
33
+ # => true
34
+
35
+ = what is themoviedb.org?
36
+ It's a movie database, kind of like IMDB except it's more of a community wiki. They also have an api that they're cool with people using. More on the api here: http://api.themoviedb.org/2.0/docs/
37
+
38
+ == Copyright
39
+
40
+ Copyright (c) 2009 John Duff. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,59 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "tmdb_party"
8
+ gem.summary = %Q{TODO}
9
+ gem.email = "duff.john@gmail.com"
10
+ gem.homepage = "http://github.com/jduff/tmdb_party"
11
+ gem.authors = ["John Duff"]
12
+ gem.add_dependency('httparty', '>= 0.4.3')
13
+
14
+ gem.add_development_dependency('fakeweb')
15
+ gem.add_development_dependency('context')
16
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
+ end
18
+ rescue LoadError
19
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
20
+ end
21
+
22
+ require 'rake/testtask'
23
+ Rake::TestTask.new(:test) do |test|
24
+ test.libs << 'lib' << 'test'
25
+ test.pattern = 'test/**/*_test.rb'
26
+ test.verbose = true
27
+ end
28
+
29
+ begin
30
+ require 'rcov/rcovtask'
31
+ Rcov::RcovTask.new do |test|
32
+ test.libs << 'test'
33
+ test.pattern = 'test/**/*_test.rb'
34
+ test.verbose = true
35
+ end
36
+ rescue LoadError
37
+ task :rcov do
38
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
39
+ end
40
+ end
41
+
42
+
43
+ task :default => :test
44
+
45
+ require 'rake/rdoctask'
46
+ Rake::RDocTask.new do |rdoc|
47
+ if File.exist?('VERSION.yml')
48
+ config = YAML.load(File.read('VERSION.yml'))
49
+ version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
50
+ else
51
+ version = ""
52
+ end
53
+
54
+ rdoc.rdoc_dir = 'rdoc'
55
+ rdoc.title = "tmdb_party #{version}"
56
+ rdoc.rdoc_files.include('README*')
57
+ rdoc.rdoc_files.include('lib/**/*.rb')
58
+ end
59
+
data/VERSION.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ :major: 0
3
+ :minor: 0
4
+ :patch: 2
data/lib/tmdb_party.rb ADDED
@@ -0,0 +1,35 @@
1
+ gem 'httparty'
2
+ require 'httparty'
3
+ require 'tmdb_party/core_extensions'
4
+ require 'tmdb_party/attributes'
5
+ require 'tmdb_party/video'
6
+ require 'tmdb_party/category'
7
+ require 'tmdb_party/image'
8
+ require 'tmdb_party/movie'
9
+
10
+ module TMDBParty
11
+ class Base
12
+ include HTTParty
13
+ base_uri 'http://api.themoviedb.org/2.0'
14
+ format :xml
15
+
16
+ def initialize(key)
17
+ self.class.default_params :api_key => key
18
+ end
19
+
20
+ def search(query)
21
+ data = self.class.get('/Movie.search', :query=>{:title=>query})
22
+ data['results']['moviematches']['movie'].collect do |movie|
23
+ Movie.new(movie, self)
24
+ end
25
+ end
26
+
27
+ def imdb_lookup(id)
28
+ end
29
+
30
+ def get_info(id)
31
+ data = self.class.get('/Movie.getInfo', :query=>{:id=>id})
32
+ Movie.new(data['results']['moviematches']['movie'], self)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,52 @@
1
+ module TMDBParty
2
+ module Attributes
3
+ # based on http://github.com/nullstyle/ruby-satisfaction
4
+
5
+ def self.included(base)
6
+ base.class_eval do
7
+ extend ClassMethods
8
+ include InstanceMethods
9
+ attr_reader :attributes
10
+ end
11
+ end
12
+
13
+ module ClassMethods
14
+ def attributes(*names)
15
+ options = names.extract_options!
16
+
17
+ names.each do |name|
18
+ attribute name, options unless name.blank?
19
+ end
20
+ end
21
+
22
+ def attribute(name, options)
23
+ options.replace({:type => 'nil', :lazy=>false}.merge(options))
24
+ raise "Name can't be empty" if name.blank?
25
+
26
+ lazy_load = "self.#{options[:lazy]} unless self.loaded?" if options[:lazy]
27
+ class_eval <<-EOS
28
+ def #{name}
29
+ #{lazy_load}
30
+ @#{name} ||= decode_raw_attribute(@attributes['#{name}'], #{options[:type]}) if @attributes
31
+ end
32
+ EOS
33
+ end
34
+
35
+ end
36
+
37
+ module InstanceMethods
38
+ def attributes=(value)
39
+ @attributes = value
40
+ end
41
+
42
+ def loaded?
43
+ @loaded
44
+ end
45
+
46
+ private
47
+ def decode_raw_attribute(value, type)
48
+ type.respond_to?(:parse) ? type.parse(value) : value
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,21 @@
1
+ module TMDBParty
2
+ class Category
3
+ include Attributes
4
+ attributes :name, :url
5
+
6
+ def initialize(values)
7
+ self.attributes = values
8
+ end
9
+
10
+ def self.parse(data)
11
+ data = data["category"]
12
+ if data.is_a?(Array)
13
+ data.collect do |category|
14
+ Category.new(category)
15
+ end
16
+ else
17
+ Category.new(data)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ class Array
2
+ def extract_options!
3
+ last.is_a?(::Hash) ? pop : {}
4
+ end
5
+
6
+ end
7
+
8
+ class Float
9
+ def self.parse(val)
10
+ Float(val)
11
+ end
12
+ end
13
+
14
+ class Integer
15
+ def self.parse(val)
16
+ Integer(val)
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+ module TMDBParty
2
+ class Image
3
+ attr_reader :url
4
+
5
+ def initialize(url)
6
+ @url = url
7
+ end
8
+
9
+ def self.parse(data)
10
+ if data.is_a?(Array)
11
+ data.collect do |url|
12
+ Image.new(url)
13
+ end
14
+ else
15
+ Image.new(data)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,29 @@
1
+ module TMDBParty
2
+ class Movie
3
+ include Attributes
4
+ attr_reader :tmdb
5
+
6
+ attributes :title, :short_overview, :id, :score, :imdb, :type, :url, :popularity, :alternative_title
7
+ attributes :release, :type=>DateTime
8
+ attributes :id, :type => Integer
9
+ attributes :popularity, :score, :type => Float
10
+ attributes :poster, :backdrop, :type => Image
11
+
12
+ attributes :homepage, :lazy => :get_info!
13
+ attributes :trailer, :lazy => :get_info!, :type=> Video
14
+ attributes :categories, :lazy => :get_info!, :type=> Category
15
+
16
+ def initialize(values, tmdb)
17
+ @tmdb = tmdb
18
+ self.attributes = values
19
+ end
20
+
21
+ def get_info!
22
+ movie = tmdb.get_info(self.id)
23
+ @attributes.merge!(movie.attributes) if movie
24
+ @loaded = true
25
+ end
26
+
27
+ end
28
+
29
+ end
@@ -0,0 +1,19 @@
1
+ module TMDBParty
2
+ class Video
3
+ attr_reader :url
4
+
5
+ def initialize(url)
6
+ @url = url
7
+ end
8
+
9
+ def self.parse(data)
10
+ if data.is_a?(Array)
11
+ data.collect do |url|
12
+ Video.new(url)
13
+ end
14
+ else
15
+ Video.new(data)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,104 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <results for="transformers" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">
3
+ <opensearch:Query searchTerms="transformers"/>
4
+ <opensearch:totalResults>5</opensearch:totalResults>
5
+ <moviematches>
6
+ <movie>
7
+ <score>1.0</score>
8
+ <popularity>31</popularity>
9
+ <title>Transformers</title>
10
+ <alternative_title>The Transformers</alternative_title>
11
+ <type>movie</type>
12
+
13
+ <id>1858</id>
14
+ <imdb>tt0418279</imdb>
15
+ <url>http://www.themoviedb.org/movie/1858</url>
16
+ <short_overview>The Earth is caught in the middle of an intergalactic war between two races of robots, the heroic Autobots and the evil Decepticons, which are able to change into a variety of objects, including cars, trucks, planes and other technological creations.</short_overview>
17
+ <release>2007-07-04</release>
18
+ <poster size="original">http://images.themoviedb.org/posters/937/Transformers_3d7ecdab.jpg</poster>
19
+ <poster size="thumb">http://images.themoviedb.org/posters/937/Transformers_3d7ecdab_thumb.jpg</poster>
20
+ <poster size="mid">http://images.themoviedb.org/posters/937/Transformers_3d7ecdab_mid.jpg</poster>
21
+ <poster size="cover">http://images.themoviedb.org/posters/937/Transformers_3d7ecdab_cover.jpg</poster>
22
+
23
+ <backdrop size="original">http://images.themoviedb.org/backdrops/1394/tt0418279-1.jpg</backdrop>
24
+ <backdrop size="mid">http://images.themoviedb.org/backdrops/1394/tt0418279-1_poster.jpg</backdrop>
25
+ <backdrop size="thumb">http://images.themoviedb.org/backdrops/1394/tt0418279-1_thumb.jpg</backdrop>
26
+ </movie>
27
+ <movie>
28
+ <score>0.120507517597236</score>
29
+ <popularity>5</popularity>
30
+ <title>Transformers: Revenge of the Fallen</title>
31
+ <alternative_title>Transformers 2</alternative_title>
32
+
33
+ <type>movie</type>
34
+ <id>8373</id>
35
+ <imdb>tt1055369</imdb>
36
+ <url>http://www.themoviedb.org/movie/8373</url>
37
+ <short_overview></short_overview>
38
+ <release>2009-06-24</release>
39
+ <poster size="original">http://images.themoviedb.org/posters/11433/Transformers_2_v1.jpg</poster>
40
+ <poster size="mid">http://images.themoviedb.org/posters/11433/Transformers_2_v1_mid.jpg</poster>
41
+ <poster size="thumb">http://images.themoviedb.org/posters/11433/Transformers_2_v1_thumb.jpg</poster>
42
+
43
+ <poster size="cover">http://images.themoviedb.org/posters/11433/Transformers_2_v1_cover.jpg</poster>
44
+ <backdrop size="original">http://images.themoviedb.org/backdrops/19763/Transformers_2_v1_1920x1080.jpg</backdrop>
45
+ <backdrop size="mid">http://images.themoviedb.org/backdrops/19763/Transformers_2_v1_1920x1080_poster.jpg</backdrop>
46
+ <backdrop size="thumb">http://images.themoviedb.org/backdrops/19763/Transformers_2_v1_1920x1080_thumb.jpg</backdrop>
47
+ </movie>
48
+ <movie>
49
+ <score>0.0291530167991967</score>
50
+ <popularity>2</popularity>
51
+ <title>Transformers</title>
52
+ <alternative_title></alternative_title>
53
+
54
+ <type>movie_series</type>
55
+ <id>8650</id>
56
+ <imdb></imdb>
57
+ <url>http://www.themoviedb.org/movie/8650</url>
58
+ <short_overview>The Transformers series follows the continuing battle between the Autobots and the Decepticons and ultimately, the triumph of good over evil.</short_overview>
59
+ <release>2009-06-24</release>
60
+ <poster size="cover">http://images.themoviedb.org/posters//transformers_cover.JPG</poster>
61
+ <poster size="cover">http://images.themoviedb.org/posters/35390/transformers_cover_thumb.JPG</poster>
62
+ <poster size="mid">http://images.themoviedb.org/posters/35390/transformers_cover_mid.JPG</poster>
63
+
64
+ <poster size="cover">http://images.themoviedb.org/posters/35390/transformers_cover_cover.JPG</poster>
65
+ <backdrop size="original">http://images.themoviedb.org/backdrops/37808/transformers_bg.jpg</backdrop>
66
+ <backdrop size="thumb">http://images.themoviedb.org/backdrops/37808/transformers_bg_thumb.jpg</backdrop>
67
+ <backdrop size="mid">http://images.themoviedb.org/backdrops/37808/transformers_bg_poster.jpg</backdrop>
68
+ </movie>
69
+ <movie>
70
+ <score>0.0146628580052701</score>
71
+ <popularity>2</popularity>
72
+ <title>The Transformers (TV series)</title>
73
+ <alternative_title></alternative_title>
74
+
75
+ <type>series</type>
76
+ <id>1856</id>
77
+ <imdb></imdb>
78
+ <url>http://www.themoviedb.org/movie/1856</url>
79
+ <short_overview>Transformers is the popular animated television series staring a cast of giant robots who can transform themselves into different creatures, objects, or other robots. The show was a huge success in the USA and Japan, and produced a popular Transformer toy line.</short_overview>
80
+ <release></release>
81
+ </movie>
82
+ <movie>
83
+ <score>0.0146628580052701</score>
84
+ <popularity>2</popularity>
85
+ <title>The Transformers: The Movie</title>
86
+
87
+ <alternative_title></alternative_title>
88
+ <type>movie</type>
89
+ <id>1857</id>
90
+ <imdb>tt0092106</imdb>
91
+ <url>http://www.themoviedb.org/movie/1857</url>
92
+ <short_overview>The Transformers: The Movie is the animated film from 1986 based on the popular television series of the same name. The television series and the film were both directed by Nelson Shin.</short_overview>
93
+ <release>1986-08-08</release>
94
+ <poster size="original">http://images.themoviedb.org/posters/16658/TF_TM.jpg</poster>
95
+ <poster size="mid">http://images.themoviedb.org/posters/16658/TF_TM_mid.jpg</poster>
96
+
97
+ <poster size="thumb">http://images.themoviedb.org/posters/16658/TF_TM_thumb.jpg</poster>
98
+ <poster size="cover">http://images.themoviedb.org/posters/16658/TF_TM_cover.jpg</poster>
99
+ <backdrop size="original">http://images.themoviedb.org/backdrops/584/tt0092106.jpg</backdrop>
100
+ <backdrop size="mid">http://images.themoviedb.org/backdrops/584/tt0092106_poster.jpg</backdrop>
101
+ <backdrop size="thumb">http://images.themoviedb.org/backdrops/584/tt0092106_thumb.jpg</backdrop>
102
+ </movie>
103
+ </moviematches>
104
+ </results>
@@ -0,0 +1,353 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <results for="1858" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">
3
+ <opensearch:Query searchTerms="1858"/>
4
+ <opensearch:totalResults>1</opensearch:totalResults>
5
+ <moviematches>
6
+ <movie>
7
+ <score>1.0</score>
8
+ <popularity>32</popularity>
9
+ <title>Transformers</title>
10
+ <alternative_title>The Transformers</alternative_title>
11
+ <type>movie</type>
12
+
13
+ <id>1858</id>
14
+ <imdb>tt0418279</imdb>
15
+ <url>http://www.themoviedb.org/movie/1858</url>
16
+ <short_overview>The Earth is caught in the middle of an intergalactic war between two races of robots, the heroic Autobots and the evil Decepticons, which are able to change into a variety of objects, including cars, trucks, planes and other technological creations.</short_overview>
17
+ <rating>7.56522</rating>
18
+ <release>2007-07-04</release>
19
+ <runtime>132</runtime>
20
+ <budget>150000000</budget>
21
+ <revenue>708226810</revenue>
22
+
23
+ <homepage>http://www.transformersmovie.com/</homepage>
24
+ <production_countries>
25
+ <country>
26
+ <name>United States of America</name>
27
+ <short_name>US</short_name>
28
+ <url>http://www.themoviedb.org/encyclopedia/country/223</url>
29
+ </country>
30
+ </production_countries>
31
+ <trailer source="youtube">http://www.youtube.com/watch?v=eduwcuq1Exg</trailer>
32
+ <poster size="original">http://images.themoviedb.org/posters/937/Transformers_3d7ecdab.jpg</poster>
33
+ <poster size="thumb">http://images.themoviedb.org/posters/937/Transformers_3d7ecdab_thumb.jpg</poster>
34
+
35
+ <poster size="mid">http://images.themoviedb.org/posters/937/Transformers_3d7ecdab_mid.jpg</poster>
36
+ <poster size="cover">http://images.themoviedb.org/posters/937/Transformers_3d7ecdab_cover.jpg</poster>
37
+ <poster size="original">http://images.themoviedb.org/posters/941/Transformers_7f0d814e.jpg</poster>
38
+ <poster size="thumb">http://images.themoviedb.org/posters/941/Transformers_7f0d814e_thumb.jpg</poster>
39
+ <poster size="mid">http://images.themoviedb.org/posters/941/Transformers_7f0d814e_mid.jpg</poster>
40
+ <poster size="cover">http://images.themoviedb.org/posters/941/Transformers_7f0d814e_cover.jpg</poster>
41
+ <poster size="original">http://images.themoviedb.org/posters/945/Transformers_7394f415.jpg</poster>
42
+ <poster size="thumb">http://images.themoviedb.org/posters/945/Transformers_7394f415_thumb.jpg</poster>
43
+ <poster size="mid">http://images.themoviedb.org/posters/945/Transformers_7394f415_mid.jpg</poster>
44
+
45
+ <poster size="cover">http://images.themoviedb.org/posters/945/Transformers_7394f415_cover.jpg</poster>
46
+ <poster size="original">http://images.themoviedb.org/posters/949/Transformers_cd48d8bb.jpg</poster>
47
+ <poster size="thumb">http://images.themoviedb.org/posters/949/Transformers_cd48d8bb_thumb.jpg</poster>
48
+ <poster size="mid">http://images.themoviedb.org/posters/949/Transformers_cd48d8bb_mid.jpg</poster>
49
+ <poster size="cover">http://images.themoviedb.org/posters/949/Transformers_cd48d8bb_cover.jpg</poster>
50
+ <poster size="original">http://images.themoviedb.org/posters/7937/Transformers.jpg</poster>
51
+ <poster size="mid">http://images.themoviedb.org/posters/7937/Transformers_mid.jpg</poster>
52
+ <poster size="cover">http://images.themoviedb.org/posters/7937/Transformers_cover.jpg</poster>
53
+
54
+ <poster size="thumb">http://images.themoviedb.org/posters/7937/Transformers_thumb.jpg</poster>
55
+ <poster size="original">http://images.themoviedb.org/posters/30022/Transformers_v1.jpg</poster>
56
+ <poster size="cover">http://images.themoviedb.org/posters/30022/Transformers_v1_cover.jpg</poster>
57
+ <poster size="mid">http://images.themoviedb.org/posters/30022/Transformers_v1_mid.jpg</poster>
58
+ <poster size="thumb">http://images.themoviedb.org/posters/30022/Transformers_v1_thumb.jpg</poster>
59
+ <poster size="original">http://images.themoviedb.org/posters/30026/Transformers_v2.jpg</poster>
60
+ <poster size="cover">http://images.themoviedb.org/posters/30026/Transformers_v2_cover.jpg</poster>
61
+ <poster size="mid">http://images.themoviedb.org/posters/30026/Transformers_v2_mid.jpg</poster>
62
+ <poster size="thumb">http://images.themoviedb.org/posters/30026/Transformers_v2_thumb.jpg</poster>
63
+
64
+ <poster size="original">http://images.themoviedb.org/posters/30030/Transformers_v3.jpg</poster>
65
+ <poster size="cover">http://images.themoviedb.org/posters/30030/Transformers_v3_cover.jpg</poster>
66
+ <poster size="mid">http://images.themoviedb.org/posters/30030/Transformers_v3_mid.jpg</poster>
67
+ <poster size="thumb">http://images.themoviedb.org/posters/30030/Transformers_v3_thumb.jpg</poster>
68
+ <poster size="original">http://images.themoviedb.org/posters/30034/Transformers_v1.jpg</poster>
69
+ <poster size="cover">http://images.themoviedb.org/posters/30034/Transformers_v1_cover.jpg</poster>
70
+ <poster size="mid">http://images.themoviedb.org/posters/30034/Transformers_v1_mid.jpg</poster>
71
+ <poster size="thumb">http://images.themoviedb.org/posters/30034/Transformers_v1_thumb.jpg</poster>
72
+
73
+ <poster size="original">http://images.themoviedb.org/posters/30038/Transformers_v2.jpg</poster>
74
+ <poster size="cover">http://images.themoviedb.org/posters/30038/Transformers_v2_cover.jpg</poster>
75
+ <poster size="mid">http://images.themoviedb.org/posters/30038/Transformers_v2_mid.jpg</poster>
76
+ <poster size="thumb">http://images.themoviedb.org/posters/30038/Transformers_v2_thumb.jpg</poster>
77
+ <backdrop size="original">http://images.themoviedb.org/backdrops/1394/tt0418279-1.jpg</backdrop>
78
+ <backdrop size="mid">http://images.themoviedb.org/backdrops/1394/tt0418279-1_poster.jpg</backdrop>
79
+ <backdrop size="thumb">http://images.themoviedb.org/backdrops/1394/tt0418279-1_thumb.jpg</backdrop>
80
+ <backdrop size="original">http://images.themoviedb.org/backdrops/2279/tt0418279.jpg</backdrop>
81
+ <backdrop size="mid">http://images.themoviedb.org/backdrops/2279/tt0418279_poster.jpg</backdrop>
82
+
83
+ <backdrop size="thumb">http://images.themoviedb.org/backdrops/2279/tt0418279_thumb.jpg</backdrop>
84
+ <backdrop size="original">http://images.themoviedb.org/backdrops/8546/Transformers_2007_1920x1080.jpg</backdrop>
85
+ <backdrop size="thumb">http://images.themoviedb.org/backdrops/8546/Transformers_2007_1920x1080_thumb.jpg</backdrop>
86
+ <backdrop size="mid">http://images.themoviedb.org/backdrops/8546/Transformers_2007_1920x1080_poster.jpg</backdrop>
87
+ <backdrop size="original">http://images.themoviedb.org/backdrops/15635/Transformers-fanart.jpg</backdrop>
88
+ <backdrop size="thumb">http://images.themoviedb.org/backdrops/15635/Transformers-fanart_thumb.jpg</backdrop>
89
+ <backdrop size="mid">http://images.themoviedb.org/backdrops/15635/Transformers-fanart_poster.jpg</backdrop>
90
+ <backdrop size="original">http://images.themoviedb.org/backdrops/27158/Fox_Megan001a.jpg</backdrop>
91
+
92
+ <backdrop size="mid">http://images.themoviedb.org/backdrops/27158/Fox_Megan001a_poster.jpg</backdrop>
93
+ <backdrop size="thumb">http://images.themoviedb.org/backdrops/27158/Fox_Megan001a_thumb.jpg</backdrop>
94
+ <backdrop size="original">http://images.themoviedb.org/backdrops/27161/Mikaela-Banes-transformers-71359_1920_1080.jpg</backdrop>
95
+ <backdrop size="mid">http://images.themoviedb.org/backdrops/27161/Mikaela-Banes-transformers-71359_1920_1080_poster.jpg</backdrop>
96
+ <backdrop size="thumb">http://images.themoviedb.org/backdrops/27161/Mikaela-Banes-transformers-71359_1920_1080_thumb.jpg</backdrop>
97
+ <backdrop size="original">http://images.themoviedb.org/backdrops/34127/fanart.jpg</backdrop>
98
+ <backdrop size="mid">http://images.themoviedb.org/backdrops/34127/fanart_poster.jpg</backdrop>
99
+ <backdrop size="thumb">http://images.themoviedb.org/backdrops/34127/fanart_thumb.jpg</backdrop>
100
+ <backdrop size="original">http://images.themoviedb.org/backdrops/34130/fanart2.jpg</backdrop>
101
+
102
+ <backdrop size="thumb">http://images.themoviedb.org/backdrops/34130/fanart2_thumb.jpg</backdrop>
103
+ <backdrop size="mid">http://images.themoviedb.org/backdrops/34130/fanart2_poster.jpg</backdrop>
104
+ <backdrop size="original">http://images.themoviedb.org/backdrops/35204/Transformers_1.jpg</backdrop>
105
+ <backdrop size="thumb">http://images.themoviedb.org/backdrops/35204/Transformers_1_thumb.jpg</backdrop>
106
+ <backdrop size="mid">http://images.themoviedb.org/backdrops/35204/Transformers_1_poster.jpg</backdrop>
107
+ <backdrop size="original">http://images.themoviedb.org/backdrops/35207/Transformers_2.jpg</backdrop>
108
+ <backdrop size="thumb">http://images.themoviedb.org/backdrops/35207/Transformers_2_thumb.jpg</backdrop>
109
+ <backdrop size="mid">http://images.themoviedb.org/backdrops/35207/Transformers_2_poster.jpg</backdrop>
110
+ <backdrop size="original">http://images.themoviedb.org/backdrops/35219/Transformers_3.jpg</backdrop>
111
+
112
+ <backdrop size="thumb">http://images.themoviedb.org/backdrops/35219/Transformers_3_thumb.jpg</backdrop>
113
+ <backdrop size="mid">http://images.themoviedb.org/backdrops/35219/Transformers_3_poster.jpg</backdrop>
114
+ <backdrop size="original">http://images.themoviedb.org/backdrops/35222/Transformers_4.jpg</backdrop>
115
+ <backdrop size="thumb">http://images.themoviedb.org/backdrops/35222/Transformers_4_thumb.jpg</backdrop>
116
+ <backdrop size="mid">http://images.themoviedb.org/backdrops/35222/Transformers_4_poster.jpg</backdrop>
117
+ <people>
118
+ <person job="director">
119
+ <name>Michael Bay</name>
120
+ <role></role>
121
+ <url>http://www.themoviedb.org/person/865</url>
122
+
123
+ </person>
124
+ <person job="executive_producer">
125
+ <name>Steven Spielberg</name>
126
+ <role></role>
127
+ <url>http://www.themoviedb.org/person/488</url>
128
+ </person>
129
+ <person job="producer">
130
+ <name>Tom DeSanto</name>
131
+ <role></role>
132
+ <url>http://www.themoviedb.org/person/10994</url>
133
+ </person>
134
+ <person job="producer">
135
+ <name>Don Murphy</name>
136
+
137
+ <role></role>
138
+ <url>http://www.themoviedb.org/person/3183</url>
139
+ </person>
140
+ <person job="producer">
141
+ <name>Lorenzo di Bonaventura</name>
142
+ <role></role>
143
+ <url>http://www.themoviedb.org/person/10952</url>
144
+ </person>
145
+ <person job="screenplay">
146
+ <name>Roberto Orci </name>
147
+ <role></role>
148
+ <url>http://www.themoviedb.org/person/15346</url>
149
+
150
+ </person>
151
+ <person job="screenplay">
152
+ <name>Alex Kurtzman</name>
153
+ <role></role>
154
+ <url>http://www.themoviedb.org/person/15345</url>
155
+ </person>
156
+ <person job="screenplay">
157
+ <name>John Rogers</name>
158
+ <role></role>
159
+ <url>http://www.themoviedb.org/person/19535</url>
160
+ </person>
161
+ <person job="actor">
162
+ <name>Shia LaBeouf</name>
163
+
164
+ <role>Sam &apos;Spike&apos; Witwicky</role>
165
+ <url>http://www.themoviedb.org/person/10959</url>
166
+ </person>
167
+ <person job="actor">
168
+ <name>Josh Duhamel</name>
169
+ <role>Captain Lennox</role>
170
+ <url>http://www.themoviedb.org/person/19536</url>
171
+ </person>
172
+
173
+ <person job="actor">
174
+ <name>Megan Fox</name>
175
+ <role>Mikaela Banes</role>
176
+ <url>http://www.themoviedb.org/person/19537</url>
177
+ </person>
178
+ <person job="actor">
179
+ <name>Rachael Taylor</name>
180
+ <role>Maggie Madsen</role>
181
+ <url>http://www.themoviedb.org/person/19538</url>
182
+ </person>
183
+ <person job="actor">
184
+
185
+ <name>Tyrese Gibson</name>
186
+ <role>USAF Master Sgt. Epps</role>
187
+ <url>http://www.themoviedb.org/person/8169</url>
188
+ </person>
189
+ <person job="actor">
190
+ <name>Jon Voight</name>
191
+ <role>John Keller</role>
192
+ <url>http://www.themoviedb.org/person/10127</url>
193
+ </person>
194
+ <person job="actor">
195
+ <name>John Turturro</name>
196
+
197
+ <role>Agent Simmons</role>
198
+ <url>http://www.themoviedb.org/person/1241</url>
199
+ </person>
200
+ <person job="actor">
201
+ <name>Anthony Anderson</name>
202
+ <role>Glen Whitman</role>
203
+ <url>http://www.themoviedb.org/person/18471</url>
204
+ </person>
205
+ <person job="actor">
206
+ <name>Michael O&apos;Neill</name>
207
+
208
+ <role>Banachek</role>
209
+ <url>http://www.themoviedb.org/person/19539</url>
210
+ </person>
211
+ <person job="actor">
212
+ <name>Peter Cullen</name>
213
+ <role>Optimus Prime (voice)</role>
214
+ <url>http://www.themoviedb.org/person/19540</url>
215
+ </person>
216
+ <person job="actor">
217
+ <name>Mark Ryan</name>
218
+ <role>Transformers (voice)</role>
219
+
220
+ <url>http://www.themoviedb.org/person/19541</url>
221
+ </person>
222
+ <person job="actor">
223
+ <name>Hugo Weaving</name>
224
+ <role>Megatron (voice)</role>
225
+ <url>http://www.themoviedb.org/person/1331</url>
226
+ </person>
227
+ <person job="actor">
228
+ <name>Keith David</name>
229
+ <role>Barricade (voice)</role>
230
+ <url>http://www.themoviedb.org/person/65827</url>
231
+
232
+ </person>
233
+ <person job="actor">
234
+ <name>Kevin Dunn </name>
235
+ <role>Ron Witwicky</role>
236
+ <url>http://www.themoviedb.org/person/14721</url>
237
+ </person>
238
+ <person job="actor">
239
+ <name>Michael O`Neill</name>
240
+ <role>Tom Banacheck</role>
241
+ <url>http://www.themoviedb.org/person/21710</url>
242
+ </person>
243
+
244
+ <person job="actor">
245
+ <name>Julie White</name>
246
+ <role>Judy Witwicky</role>
247
+ <url>http://www.themoviedb.org/person/24305</url>
248
+ </person>
249
+ <person job="actor">
250
+ <name>Amaury Nolasco</name>
251
+ <role>ACWO Jorge &quot;Fig&quot; Figueroa</role>
252
+ <url>http://www.themoviedb.org/person/17341</url>
253
+
254
+ </person>
255
+ <person job="producer">
256
+ <name>Ian Bryce</name>
257
+ <role></role>
258
+ <url>http://www.themoviedb.org/person/9987</url>
259
+ </person>
260
+ <person job="executive_producer">
261
+ <name>Brian%2520Goldner</name>
262
+ <role></role>
263
+ <url>http://www.themoviedb.org/person/24308</url>
264
+ </person>
265
+ <person job="executive_producer">
266
+ <name>Mark%2520Vahradian</name>
267
+
268
+ <role></role>
269
+ <url>http://www.themoviedb.org/person/24309</url>
270
+ </person>
271
+ <person job="director_of_photography">
272
+ <name>Mitchell Amundsen</name>
273
+ <role></role>
274
+ <url>http://www.themoviedb.org/person/24310</url>
275
+ </person>
276
+ <person job="production_design">
277
+ <name>Jeff Mann</name>
278
+ <role></role>
279
+ <url>http://www.themoviedb.org/person/7233</url>
280
+
281
+ </person>
282
+ <person job="editor">
283
+ <name>Paul Rubell</name>
284
+ <role></role>
285
+ <url>http://www.themoviedb.org/person/10816</url>
286
+ </person>
287
+ <person job="editor">
288
+ <name>Glen Scantlebury</name>
289
+ <role></role>
290
+ <url>http://www.themoviedb.org/person/899</url>
291
+ </person>
292
+ <person job="editor">
293
+ <name>Thomas A. Muldoon</name>
294
+
295
+ <role></role>
296
+ <url>http://www.themoviedb.org/person/24311</url>
297
+ </person>
298
+ <person job="costume_design">
299
+ <name>Deborah L. Scott</name>
300
+ <role></role>
301
+ <url>http://www.themoviedb.org/person/24189</url>
302
+ </person>
303
+ <person job="special_effects">
304
+ <name>John Frazier </name>
305
+ <role></role>
306
+ <url>http://www.themoviedb.org/person/10631</url>
307
+
308
+ </person>
309
+ </people>
310
+ <categories>
311
+ <category>
312
+ <name>Hollywood Film</name>
313
+ <url>http://www.themoviedb.org/encyclopedia/category/50</url>
314
+ </category>
315
+ <category>
316
+ <name>Teen Film</name>
317
+ <url>http://www.themoviedb.org/encyclopedia/category/866</url>
318
+ </category>
319
+ <category>
320
+ <name>Guy Movie</name>
321
+
322
+ <url>http://www.themoviedb.org/encyclopedia/category/864</url>
323
+ </category>
324
+ <category>
325
+ <name>Blockbuster</name>
326
+ <url>http://www.themoviedb.org/encyclopedia/category/104</url>
327
+ </category>
328
+ <category>
329
+ <name>Popcorn Movie</name>
330
+ <url>http://www.themoviedb.org/encyclopedia/category/1108</url>
331
+ </category>
332
+ <category>
333
+ <name>Mainstream</name>
334
+
335
+ <url>http://www.themoviedb.org/encyclopedia/category/1109</url>
336
+ </category>
337
+ <category>
338
+ <name>Action Film</name>
339
+ <url>http://www.themoviedb.org/encyclopedia/category/28</url>
340
+ </category>
341
+ <category>
342
+ <name>Science Fiction Film</name>
343
+ <url>http://www.themoviedb.org/encyclopedia/category/878</url>
344
+ </category>
345
+ <category>
346
+ <name>Adventure Film</name>
347
+
348
+ <url>http://www.themoviedb.org/encyclopedia/category/12</url>
349
+ </category>
350
+ </categories>
351
+ </movie>
352
+ </moviematches>
353
+ </results>
@@ -0,0 +1,32 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'context'
4
+ require 'fakeweb'
5
+
6
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
7
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
8
+ require 'tmdb_party'
9
+
10
+ class Test::Unit::TestCase
11
+ end
12
+
13
+ def fixture_file(filename)
14
+ return '' if filename == ''
15
+ file_path = File.expand_path(File.dirname(__FILE__) + '/fixtures/' + filename)
16
+ File.read(file_path)
17
+ end
18
+
19
+ def tmdb_url(url)
20
+ url =~ /^http/ ? url : "http://api.themoviedb.org/2.0#{url}"
21
+ end
22
+
23
+ def stub_get(url, filename, status=nil)
24
+ options = {:string => fixture_file(filename)}
25
+ options.merge!({:status => status}) unless status.nil?
26
+
27
+ FakeWeb.register_uri(:get, tmdb_url(url), options)
28
+ end
29
+
30
+ def stub_post(url, filename)
31
+ FakeWeb.register_uri(:post, tmdb_url(url), :string => fixture_file(filename))
32
+ end
@@ -0,0 +1,41 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class TestTmdbParty < Test::Unit::TestCase
4
+
5
+ before do
6
+ @tmdb = TMDBParty::Base.new('key')
7
+ end
8
+
9
+ after do
10
+ FakeWeb.clean_registry
11
+ end
12
+
13
+ test "searching for transformers" do
14
+ stub_get('/Movie.search?api_key=key&title=transformers', 'search.xml')
15
+ stub_get('/Movie.getInfo?api_key=key&id=1858', 'transformers.xml')
16
+
17
+ results = @tmdb.search('transformers')
18
+
19
+ assert_equal 5, results.length
20
+
21
+ transformers = results.detect{|m| m.title == "Transformers"}
22
+
23
+ # check that the attributes are populated
24
+ assert_equal 31, transformers.popularity
25
+ assert_equal 1.0, transformers.score
26
+ assert_equal 1858, transformers.id
27
+ assert_equal 'tt0418279', transformers.imdb
28
+ assert_equal Date.new(2007, 7, 4), transformers.release
29
+ assert transformers.poster.first.is_a?(TMDBParty::Image)
30
+ assert transformers.backdrop.first.is_a?(TMDBParty::Image)
31
+
32
+ # how about some that are loaded lazily
33
+ assert_equal "http://www.transformersmovie.com/", transformers.homepage
34
+ assert_equal "http://www.youtube.com/watch?v=eduwcuq1Exg", transformers.trailer.url
35
+
36
+ assert_equal 9, transformers.categories.length
37
+
38
+ category = transformers.categories.detect{|cat| cat.name == "Adventure Film"}
39
+ assert_equal "http://www.themoviedb.org/encyclopedia/category/12", category.url
40
+ end
41
+ end
metadata ADDED
@@ -0,0 +1,98 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jduff-tmdb_party
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - John Duff
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-05-24 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: httparty
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.4.3
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: fakeweb
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: context
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ description:
46
+ email: duff.john@gmail.com
47
+ executables: []
48
+
49
+ extensions: []
50
+
51
+ extra_rdoc_files:
52
+ - LICENSE
53
+ - README.rdoc
54
+ files:
55
+ - LICENSE
56
+ - README.rdoc
57
+ - Rakefile
58
+ - VERSION.yml
59
+ - lib/tmdb_party.rb
60
+ - lib/tmdb_party/attributes.rb
61
+ - lib/tmdb_party/category.rb
62
+ - lib/tmdb_party/core_extensions.rb
63
+ - lib/tmdb_party/image.rb
64
+ - lib/tmdb_party/movie.rb
65
+ - lib/tmdb_party/video.rb
66
+ - test/fixtures/search.xml
67
+ - test/fixtures/transformers.xml
68
+ - test/test_helper.rb
69
+ - test/tmdb_party/test_tmdb_party.rb
70
+ has_rdoc: true
71
+ homepage: http://github.com/jduff/tmdb_party
72
+ post_install_message:
73
+ rdoc_options:
74
+ - --charset=UTF-8
75
+ require_paths:
76
+ - lib
77
+ required_ruby_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: "0"
82
+ version:
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: "0"
88
+ version:
89
+ requirements: []
90
+
91
+ rubyforge_project:
92
+ rubygems_version: 1.2.0
93
+ signing_key:
94
+ specification_version: 2
95
+ summary: TODO
96
+ test_files:
97
+ - test/test_helper.rb
98
+ - test/tmdb_party/test_tmdb_party.rb