video_info 1.3.2 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -3
- data/lib/video_info/provider.rb +30 -10
- data/lib/video_info/providers/vimeo.rb +12 -1
- data/lib/video_info/providers/youtube.rb +8 -1
- data/lib/video_info/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7056b4b9244e1aa2f8978a96b5887ef218f0383
|
4
|
+
data.tar.gz: ed2c2485d1f4ebb86384f174dc25fd939a672db2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f08606831ea05ba23c64e01d82a6baf73c2bf214d7c684dd132a28bfdb31ff10848bfed8b76806a3a4aa36f86c99f84d58d6749bf09cc79e6b39fcce6388bfdf
|
7
|
+
data.tar.gz: 7ad2a13d1f48702155894e9ef1c9e21991ccbb730a74f3096ba4788c40f7cc37120d7a881ed0298b98c4b26518d56b4174477467e5634ee6c8e7718148dba56e
|
data/README.md
CHANGED
@@ -66,13 +66,18 @@ User-Agent when empty defaults to "VideoInfo/VERSION" - where version is current
|
|
66
66
|
|
67
67
|
It supports all openURI header fields (options), for more information see: [openURI DOCS](http://www.ruby-doc.org/stdlib-1.9.3/libdoc/open-uri/rdoc/OpenURI.html)
|
68
68
|
|
69
|
-
You can also include an `iframe_attributes` hash to include arbitrary attributes in the iframe embed code:
|
69
|
+
You can also include an `iframe_attributes` or `url_attributes` hash to the `embed_code` method to include arbitrary attributes in the iframe embed code or as additional URL params:
|
70
70
|
|
71
71
|
``` ruby
|
72
|
-
VideoInfo.get("http://www.youtube.com/watch?v=mZqGqE0D0n4"
|
73
|
-
=> '<iframe src="http://www.youtube.com/embed/mZqGqE0D0n4" frameborder="0" allowfullscreen="allowfullscreen" width="800" height="600" data-key="value"></iframe>
|
72
|
+
VideoInfo.get("http://www.youtube.com/watch?v=mZqGqE0D0n4").embed_code(:iframe_attributes => { :width => 800, :height => 600, "data-key" => "value" })
|
73
|
+
=> '<iframe src="http://www.youtube.com/embed/mZqGqE0D0n4" frameborder="0" allowfullscreen="allowfullscreen" width="800" height="600" data-key="value"></iframe>
|
74
|
+
|
75
|
+
'VideoInfo.get("http://www.youtube.com/watch?v=mZqGqE0D0n4").embed_code(:url_attributes => { :autoplay => 1 })
|
76
|
+
=> '<iframe src="http://www.youtube.com/embed/mZqGqE0D0n4?autoplay=1" frameborder="0" allowfullscreen="allowfullscreen"></iframe>'
|
74
77
|
```
|
75
78
|
|
79
|
+
|
80
|
+
|
76
81
|
Author
|
77
82
|
------
|
78
83
|
|
data/lib/video_info/provider.rb
CHANGED
@@ -1,14 +1,15 @@
|
|
1
|
+
require "addressable/uri"
|
2
|
+
|
1
3
|
module VideoInfo
|
2
4
|
class Provider
|
3
5
|
|
4
6
|
attr_accessor :url, :options, :iframe_attributes, :video_id
|
5
|
-
attr_accessor :embed_url, :
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
attr_accessor :embed_url, :provider, :title, :description, :keywords,
|
8
|
+
:duration, :date, :width, :height,
|
9
|
+
:thumbnail_small, :thumbnail_medium, :thumbnail_large,
|
10
|
+
:view_count
|
9
11
|
|
10
|
-
def initialize(url, options = {}
|
11
|
-
@iframe_attributes = _hash_to_attributes(options.delete(:iframe_attributes))
|
12
|
+
def initialize(url, options = {})
|
12
13
|
@options = _clean_options(options)
|
13
14
|
@url = url
|
14
15
|
_set_video_id_from_url
|
@@ -19,6 +20,21 @@ module VideoInfo
|
|
19
20
|
raise NotImplementedError.new('Provider class must implement .usable? public method')
|
20
21
|
end
|
21
22
|
|
23
|
+
def embed_code(options = {})
|
24
|
+
url_attributes = options.fetch(:url_attributes, {})
|
25
|
+
url_attrs = default_url_attributes.merge(url_attributes)
|
26
|
+
|
27
|
+
url = embed_url
|
28
|
+
url += "?#{_hash_to_params(url_attrs)}" unless url_attrs.empty?
|
29
|
+
|
30
|
+
iframe_attrs = ["src=\"#{url}\"", "frameborder=\"0\""]
|
31
|
+
|
32
|
+
iframe_attributes = options.fetch(:iframe_attributes, {})
|
33
|
+
iframe_attrs << _hash_to_attributes(default_iframe_attributes.merge(iframe_attributes))
|
34
|
+
|
35
|
+
"<iframe #{iframe_attrs.reject(&:empty?).join(" ")}></iframe>"
|
36
|
+
end
|
37
|
+
|
22
38
|
private
|
23
39
|
|
24
40
|
def _set_video_id_from_url
|
@@ -49,10 +65,14 @@ module VideoInfo
|
|
49
65
|
end
|
50
66
|
|
51
67
|
def _hash_to_attributes(hash)
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
68
|
+
return unless hash.is_a?(Hash)
|
69
|
+
hash.map{|k,v| "#{k}=\"#{v}\""}.join(' ')
|
70
|
+
end
|
71
|
+
|
72
|
+
def _hash_to_params(hash)
|
73
|
+
uri = Addressable::URI.new
|
74
|
+
uri.query_values = hash
|
75
|
+
uri.query
|
56
76
|
end
|
57
77
|
end
|
58
78
|
end
|
@@ -9,6 +9,17 @@ module VideoInfo
|
|
9
9
|
url =~ /vimeo\.com/
|
10
10
|
end
|
11
11
|
|
12
|
+
def default_iframe_attributes
|
13
|
+
{}
|
14
|
+
end
|
15
|
+
|
16
|
+
def default_url_attributes
|
17
|
+
{ :title => 0,
|
18
|
+
:byline => 0,
|
19
|
+
:portrait => 0,
|
20
|
+
:autoplay => 0 }
|
21
|
+
end
|
22
|
+
|
12
23
|
private
|
13
24
|
|
14
25
|
def _url_regex
|
@@ -18,10 +29,10 @@ module VideoInfo
|
|
18
29
|
def _set_info_from_api
|
19
30
|
uri = open("http://vimeo.com/api/v2/video/#{video_id}.json", options)
|
20
31
|
video = MultiJson.load(uri.read).first
|
32
|
+
|
21
33
|
@provider = "Vimeo"
|
22
34
|
@url = video['url']
|
23
35
|
@embed_url = "http://player.vimeo.com/video/#{video_id}"
|
24
|
-
@embed_code = "<iframe src=\"#{embed_url}?title=0&byline=0&portrait=0&autoplay=0\" frameborder=\"0\"#{iframe_attributes}></iframe>"
|
25
36
|
@title = video['title']
|
26
37
|
@description = video['description']
|
27
38
|
@keywords = video['tags']
|
@@ -9,6 +9,14 @@ module VideoInfo
|
|
9
9
|
url =~ /(youtube\.com)|(youtu\.be)/
|
10
10
|
end
|
11
11
|
|
12
|
+
def default_iframe_attributes
|
13
|
+
{ :allowfullscreen => "allowfullscreen" }
|
14
|
+
end
|
15
|
+
|
16
|
+
def default_url_attributes
|
17
|
+
{}
|
18
|
+
end
|
19
|
+
|
12
20
|
private
|
13
21
|
|
14
22
|
def _url_regex
|
@@ -21,7 +29,6 @@ module VideoInfo
|
|
21
29
|
@provider = "YouTube"
|
22
30
|
@url = url
|
23
31
|
@embed_url = "http://www.youtube.com/embed/#{video_id}"
|
24
|
-
@embed_code = "<iframe src=\"#{embed_url}\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"#{iframe_attributes}></iframe>"
|
25
32
|
video['entry'].tap do |entry|
|
26
33
|
@title = entry['title']['$t']
|
27
34
|
@description = entry['media$group']['media$description']['$t']
|
data/lib/video_info/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: video_info
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thibaud Guillaume-Gentil
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: addressable
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: multi_json
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|