trailers 0.0.1
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/.gitignore +3 -0
- data/Gemfile +4 -0
- data/README.markdown +20 -0
- data/Rakefile +2 -0
- data/lib/trailers.rb +67 -0
- data/lib/trailers/version.rb +3 -0
- data/trailers.gemspec +24 -0
- metadata +86 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.markdown
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
## Trailers - a Ruby gem engineered to find movie trailers for you.
|
2
|
+
Currently it relies on the public API offered by [TrailerAddict](traileraddict.com)
|
3
|
+
|
4
|
+
It's really simple to use:
|
5
|
+
|
6
|
+
require 'rubygems'
|
7
|
+
require 'trailers'
|
8
|
+
|
9
|
+
movie_trailer = Trailers::TrailerAddict.get_embed_code_for("Saw vii")
|
10
|
+
|
11
|
+
- - -
|
12
|
+
*Special thanks to [Aaron Gough](http://github.com/aarongough) for his original idea.*
|
13
|
+
|
14
|
+
- - -
|
15
|
+
TODO:
|
16
|
+
|
17
|
+
* Include more trailers sites
|
18
|
+
* Allow the user to choose between Flash or HTML5 videos
|
19
|
+
|
20
|
+
Enjoy
|
data/Rakefile
ADDED
data/lib/trailers.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
module Trailers
|
2
|
+
class TrailerAddict
|
3
|
+
|
4
|
+
require 'net/http'
|
5
|
+
require 'uri'
|
6
|
+
require 'nokogiri'
|
7
|
+
|
8
|
+
@base_url = "http://www.traileraddict.com/search.php?q="
|
9
|
+
@api_url = "http://api.traileraddict.com/"
|
10
|
+
|
11
|
+
# Return a response object from a given URL
|
12
|
+
def self.get_url(uri_str, limit = 10)
|
13
|
+
return false if limit == 0
|
14
|
+
|
15
|
+
begin
|
16
|
+
response = Net::HTTP.get_response(URI.parse(uri_str))
|
17
|
+
rescue SocketError, Errno::ENETDOWN
|
18
|
+
response = Net::HTTPBadRequest.new( '404', 404, "Not Found" )
|
19
|
+
return response
|
20
|
+
end
|
21
|
+
|
22
|
+
case response
|
23
|
+
when Net::HTTPSuccess then response
|
24
|
+
when Net::HTTPRedirection then self.get_url(response['location'], limit - 1)
|
25
|
+
else
|
26
|
+
Net::HTTPBadRequest.new( '404', 404, "Not Found" )
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.get_tag_for(movie)
|
31
|
+
response = self.get_url(@base_url + URI.escape(movie))
|
32
|
+
return nil if(response.code != '200')
|
33
|
+
|
34
|
+
search_page_object = Nokogiri( response.body )
|
35
|
+
return nil if(search_page_object.search(".leftcolumn .searchthumb:first a")[0].nil? )
|
36
|
+
tag = search_page_object.search(".leftcolumn .searchthumb:first a")[0]['href'].gsub("/tags", '')
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.api_call(movie_tag, options={})
|
40
|
+
raise ArgumentError, "movie_tag must be a string" unless(movie_tag.is_a?(String))
|
41
|
+
|
42
|
+
options = {
|
43
|
+
:count => 1,
|
44
|
+
:trailers => :yes,
|
45
|
+
:film => movie_tag
|
46
|
+
# :width => 480
|
47
|
+
}.merge(options)
|
48
|
+
option_string = "?" + URI.escape(options.to_a.map{|x| x[0].to_s + "=" + x[1].to_s}.join("&"))
|
49
|
+
response = self.get_url(@api_url + option_string)
|
50
|
+
|
51
|
+
if(response.code == '200')
|
52
|
+
return response.body
|
53
|
+
else
|
54
|
+
return ''
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.get_embed_code_for(movie)
|
59
|
+
# movie_tag = self.get_tag_for(movie)
|
60
|
+
api_response = self.api_call(movie)
|
61
|
+
xml = Nokogiri::XML( api_response )
|
62
|
+
embed_code = xml.css('embed').inner_text
|
63
|
+
return nil if ( embed_code.length < 20 )
|
64
|
+
return embed_code
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/trailers.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "trailers/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "trailers"
|
7
|
+
s.version = Trailers::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Fabio Basile"]
|
10
|
+
s.email = ["fabio@cosmicmission.com"]
|
11
|
+
s.homepage = "http://rubygems.org/gems/trailers"
|
12
|
+
s.summary = %q{Trailers - engineered to find movie trailers for you.}
|
13
|
+
s.description = %q{Currently it interfaces with the Traileraddict API, future versions will support HTML5 videos.}
|
14
|
+
|
15
|
+
s.rubyforge_project = "trailers"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
s.add_dependency "nokogiri", ">= 1.4.3.1"
|
23
|
+
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: trailers
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: 0.0.1
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Fabio Basile
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-10-29 00:00:00 +01:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: nokogiri
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 1
|
30
|
+
- 4
|
31
|
+
- 3
|
32
|
+
- 1
|
33
|
+
version: 1.4.3.1
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
description: Currently it interfaces with the Traileraddict API, future versions will support HTML5 videos.
|
37
|
+
email:
|
38
|
+
- fabio@cosmicmission.com
|
39
|
+
executables: []
|
40
|
+
|
41
|
+
extensions: []
|
42
|
+
|
43
|
+
extra_rdoc_files: []
|
44
|
+
|
45
|
+
files:
|
46
|
+
- .gitignore
|
47
|
+
- Gemfile
|
48
|
+
- README.markdown
|
49
|
+
- Rakefile
|
50
|
+
- lib/trailers.rb
|
51
|
+
- lib/trailers/version.rb
|
52
|
+
- trailers.gemspec
|
53
|
+
has_rdoc: true
|
54
|
+
homepage: http://rubygems.org/gems/trailers
|
55
|
+
licenses: []
|
56
|
+
|
57
|
+
post_install_message:
|
58
|
+
rdoc_options: []
|
59
|
+
|
60
|
+
require_paths:
|
61
|
+
- lib
|
62
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
segments:
|
68
|
+
- 0
|
69
|
+
version: "0"
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
version: "0"
|
78
|
+
requirements: []
|
79
|
+
|
80
|
+
rubyforge_project: trailers
|
81
|
+
rubygems_version: 1.3.7
|
82
|
+
signing_key:
|
83
|
+
specification_version: 3
|
84
|
+
summary: Trailers - engineered to find movie trailers for you.
|
85
|
+
test_files: []
|
86
|
+
|