video_info 2.1.1 → 2.2.0

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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +40 -14
  4. data/lib/video_info.rb +6 -1
  5. data/lib/video_info/providers/dailymotion.rb +85 -0
  6. data/lib/video_info/providers/youtube.rb +1 -1
  7. data/lib/video_info/providers/youtubeplaylist.rb +55 -0
  8. data/lib/video_info/version.rb +1 -1
  9. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_This_video_does_not_exist_or_has_been_deleted_/available_/.yml +63 -0
  10. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_valid_video/available_/.yml +60 -0
  11. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_video_is_unavailable_video/available_/.yml +46 -0
  12. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_video_no_longer_available_due_to_a_copyright_claim_video/available_/.yml +46 -0
  13. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/date/.yml +63 -0
  14. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/description/.yml +63 -0
  15. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/duration/.yml +63 -0
  16. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/keywords/.yml +63 -0
  17. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/thumbnail_large/.yml +63 -0
  18. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/thumbnail_medium/.yml +63 -0
  19. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/thumbnail_small/.yml +63 -0
  20. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/title/.yml +63 -0
  21. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/view_count/.yml +63 -0
  22. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_108370515/description/.yml +305 -305
  23. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_108370515/duration/.yml +1015 -1015
  24. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_108370515/embed_code/.yml +305 -305
  25. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_108370515/embed_url/.yml +305 -305
  26. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_108370515/height/.yml +1015 -1015
  27. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_108370515/keywords/.yml +1015 -1015
  28. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_108370515/view_count/.yml +1015 -1015
  29. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_108370515/width/.yml +1015 -1015
  30. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_invalid_playlist/available_/.yml +46 -0
  31. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_valid_playlist/available_/.yml +56 -0
  32. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/.yml +98 -0
  33. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/date/.yml +98 -0
  34. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/description/.yml +98 -0
  35. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/duration/.yml +98 -0
  36. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/keywords/.yml +98 -0
  37. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/thumbnail_large/.yml +96 -0
  38. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/thumbnail_medium/.yml +96 -0
  39. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/thumbnail_small/.yml +98 -0
  40. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/title/.yml +98 -0
  41. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/videos/.yml +96 -0
  42. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/view_count/.yml +98 -0
  43. data/spec/lib/video_info/providers/dailymotion_spec.rb +78 -0
  44. data/spec/lib/video_info/providers/youtube_playlist_spec.rb +66 -0
  45. data/spec/lib/video_info/providers/youtube_spec.rb +5 -0
  46. data/spec/lib/video_info_spec.rb +20 -0
  47. data/video_info.gemspec +4 -4
  48. metadata +64 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 376d921bd7baa14f2f172af3ffe91984d5168aaa
4
- data.tar.gz: d8346b58fb30f413309f4a55c2d6a7742f797fb5
3
+ metadata.gz: 58cc86ef25f00b1ffc554c0765a0a44cdfd1431a
4
+ data.tar.gz: cd5cf65c26ce4431441ba20260104ea207500d31
5
5
  SHA512:
6
- metadata.gz: 45ceedd2ebe3dd1942b19dd1ccd39081ed4c5acc13c52cb9446c1e742943397c0d4634782f1435da7e567d08fdb128cc212232c58fb85800a0af0199ce708b4c
7
- data.tar.gz: 3974ff201a0bece40c27b2cffdb1da95ff190be94b21da79b58d395e1d2edcb68e90bf7084a4b9e27515dd8f2d68979493f15207a97cf2a46d9a237417304452
6
+ metadata.gz: cf64eb48e870c0d60099de9d8a7df0005fa442b6b93e1581a3fdd2aa9c603bdeeecf4b3cb41e37804d6b8064d3b081f32d6c5db32f3de471afd0b6f0f656423e
7
+ data.tar.gz: ecb8bbdd71b372c12cbd0749a47eb7b4a63a1a65d60a5365c113c8ca25a429015a5ff0ac5996d0e09a39ee08e0d8753791996dfc3ba1f880fafbe0f4372bb415
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013 Thibaud Guillaume-Gentil
1
+ Copyright (c) 2014 Thibaud Guillaume-Gentil
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/video_info.png)](http://badge.fury.io/rb/video_info) [![Build Status](https://travis-ci.org/thibaudgg/video_info.png?branch=master)](https://travis-ci.org/thibaudgg/video_info) [![Dependency Status](https://gemnasium.com/thibaudgg/video_info.png)](https://gemnasium.com/thibaudgg/video_info) [![Code Climate](https://codeclimate.com/github/thibaudgg/video_info.png)](https://codeclimate.com/github/thibaudgg/video_info) [![Coverage Status](https://coveralls.io/repos/thibaudgg/video_info/badge.png?branch=master)](https://coveralls.io/r/thibaudgg/video_info)
4
4
 
5
- Simple Ruby Gem to get video info from YouTube, Vimeo and VK url.
5
+ Simple Ruby Gem to get video info from Dailymotion, Vimeo, VK and YouTube (with playlist support).
6
6
 
7
- Tested against Ruby 1.9.3, 2.0.0 and the latest versions of JRuby & Rubinius.
7
+ Tested against Ruby 1.9.3, 2.0.0, 2.1.0 and the latest versions of JRuby & Rubinius.
8
8
 
9
9
  Install
10
10
  --------
@@ -17,19 +17,19 @@ Usage
17
17
  -----
18
18
 
19
19
  ``` ruby
20
- video = VideoInfo.new("http://www.youtube.com/watch?v=mZqGqE0D0n4")
20
+ video = VideoInfo.new("http://www.dailymotion.com/video/x7lni3")
21
21
  # video.available? => true
22
- # video.video_id => "mZqGqE0D0n4"
23
- # video.provider => "YouTube"
24
- # video.title => "Cherry Bloom - King Of The Knife"
25
- # video.description => "The first video from the upcoming album Secret Sounds, to download in-stores April 14. Checkout http://www.cherrybloom.net"
26
- # video.duration => 175 (in seconds)
27
- # video.date => Sat Apr 12 22:25:35 UTC 2008
28
- # video.thumbnail_small => "http://i.ytimg.com/vi/mZqGqE0D0n4/default.jpg"
29
- # video.thumbnail_medium => "http://i.ytimg.com/vi/mZqGqE0D0n4/mqdefault.jpg"
30
- # video.thumbnail_large => "http://i.ytimg.com/vi/mZqGqE0D0n4/hqdefault.jpg"
31
- # video.embed_url => "http://www.youtube.com/embed/mZqGqE0D0n4"
32
- # video.embed_code => "'<iframe src="http://www.youtube.com/embed/mZqGqE0D0n4" frameborder="0" allowfullscreen="allowfullscreen"></iframe>'"
22
+ # video.video_id => "x7lni3"
23
+ # video.provider => "Dailymotion"
24
+ # video.title => "Mario Kart (Rémi Gaillard)"
25
+ # video.description => "Super Rémi Kart est un jeu vidéo de course développé et édité par N'Importe Quoi TV."
26
+ # video.duration => 136 (in seconds)
27
+ # video.date => Mon Mar 03 16:29:31 UTC 2008
28
+ # video.thumbnail_small => "http://s2.dmcdn.net/BgWxI/x60-kbf.jpg"
29
+ # video.thumbnail_medium => "http://s2.dmcdn.net/BgWxI/x240-b83.jpg"
30
+ # video.thumbnail_large => "http://s2.dmcdn.net/BgWxI/x720-YcV.jpg"
31
+ # video.embed_url => "http://www.dailymotion.com/embed/video/x7lni3"
32
+ # video.embed_code => "'<iframe src="http://www.dailymotion.com/embed/video/x7lni3" frameborder="0" allowfullscreen="allowfullscreen"></iframe>'"
33
33
 
34
34
  video = VideoInfo.new("http://vimeo.com/898029")
35
35
  # video.available? => true
@@ -47,6 +47,32 @@ video = VideoInfo.new("http://vimeo.com/898029")
47
47
  # video.thumbnail_large => "http://b.vimeocdn.com/ts/343/731/34373130_640.jpg"
48
48
  # video.embed_url => "http://player.vimeo.com/video/898029"
49
49
  # video.embed_code => "'<iframe src="http://player.vimeo.com/video/898029?title=0&amp;byline=0&amp;portrait=0&amp;autoplay=0" frameborder="0"></iframe>'"
50
+
51
+ video = VideoInfo.new("http://www.youtube.com/watch?v=mZqGqE0D0n4")
52
+ # video.available? => true
53
+ # video.video_id => "mZqGqE0D0n4"
54
+ # video.provider => "YouTube"
55
+ # video.title => "Cherry Bloom - King Of The Knife"
56
+ # video.description => "The first video from the upcoming album Secret Sounds, to download in-stores April 14. Checkout http://www.cherrybloom.net"
57
+ # video.duration => 175 (in seconds)
58
+ # video.date => Sat Apr 12 22:25:35 UTC 2008
59
+ # video.thumbnail_small => "http://i.ytimg.com/vi/mZqGqE0D0n4/default.jpg"
60
+ # video.thumbnail_medium => "http://i.ytimg.com/vi/mZqGqE0D0n4/mqdefault.jpg"
61
+ # video.thumbnail_large => "http://i.ytimg.com/vi/mZqGqE0D0n4/hqdefault.jpg"
62
+ # video.embed_url => "http://www.youtube.com/embed/mZqGqE0D0n4"
63
+ # video.embed_code => "'<iframe src="http://www.youtube.com/embed/mZqGqE0D0n4" frameborder="0" allowfullscreen="allowfullscreen"></iframe>'"
64
+
65
+ playlist = VideoInfo.new("http://www.youtube.com/playlist?p=PL9hW1uS6HUftLdHI6RIsaf-iXTm09qnEr")
66
+ # playlist.available? => true
67
+ # playlist.playlist_id => "PL9hW1uS6HUftLdHI6RIsaf"
68
+ # playlist.provider => "YouTube"
69
+ # playlist.title => "YouTube Policy and Copyright"
70
+ # playlist.thumbnail_small => "http://i.ytimg.com/vi/8b0aEoxqqC0/default.jpg"
71
+ # playlist.thumbnail_medium => "http://i.ytimg.com/vi/8b0aEoxqqC0/mqdefault.jpg"
72
+ # playlist.thumbnail_large => "http://i.ytimg.com/vi/8b0aEoxqqC0/hqdefault.jpg"
73
+ # playlist.embed_url => "http://www.youtube.com/embed/videoseries?list=PL9hW1uS6HUftLdHI6RIsaf-iXTm09qnEr"
74
+ # playlist.embed_code => "'<iframe src="http://www.youtube.com/embed/videoseries?list=PL9hW1uS6HUftLdHI6RIsaf-iXTm09qnEr" frameborder="0" allowfullscreen="allowfullscreen"></iframe>'"
75
+ # playlist.videos => [VideoInfo.new('http://www.youtube.com/watch?v=_Bt3-WsHfB0'), VideoInfo.new('http://www.youtube.com/watch?v=9g2U12SsRns'), VideoInfo.new('http://www.youtube.com/watch?v=8b0aEoxqqC0'), VideoInfo.new('http://www.youtube.com/watch?v=6c3mHikRz0I'), VideoInfo.new('http://www.youtube.com/watch?v=OQVHWsTHcoc')]
50
76
  ```
51
77
 
52
78
  Options
data/lib/video_info.rb CHANGED
@@ -7,7 +7,7 @@ class VideoInfo
7
7
  class UrlError < StandardError; end
8
8
  extend Forwardable
9
9
 
10
- PROVIDERS = %w[Vimeo Vkontakte Youtube]
10
+ PROVIDERS = %w[Vimeo Vkontakte Youtube YoutubePlaylist Dailymotion]
11
11
  PROVIDERS.each { |p| require "video_info/providers/#{p.downcase}" }
12
12
 
13
13
  def_delegators :@provider, :provider, :video_id, :video_owner, :url, :data
@@ -16,6 +16,7 @@ class VideoInfo
16
16
  def_delegators :@provider, :thumbnail_small, :thumbnail_medium, :thumbnail_large
17
17
  def_delegators :@provider, :embed_code, :embed_url
18
18
  def_delegators :@provider, :available?
19
+ def_delegators :@provider, :playlist_id, :videos
19
20
 
20
21
  def initialize(url, options = {})
21
22
  @provider = _select_provider(url, options)
@@ -32,6 +33,10 @@ class VideoInfo
32
33
  false
33
34
  end
34
35
 
36
+ def ==(other)
37
+ url == other.url && video_id == other.video_id
38
+ end
39
+
35
40
  private
36
41
 
37
42
  def _select_provider(url, options)
@@ -0,0 +1,85 @@
1
+ class VideoInfo
2
+ module Providers
3
+ class Dailymotion < Provider
4
+
5
+ def self.usable?(url)
6
+ url =~ /(dai(?:\.ly|lymotion\.com))/
7
+ end
8
+
9
+ def provider
10
+ 'Dailymotion'
11
+ end
12
+
13
+ %w[title description duration].each do |method|
14
+ define_method(method) { data[method] }
15
+ end
16
+
17
+ %w[width height].each do |method|
18
+ define_method(method) { nil }
19
+ end
20
+
21
+ def keywords
22
+ data['tags']
23
+ end
24
+
25
+ def embed_url
26
+ "www.dailymotion.com/embed/video/#{video_id}"
27
+ end
28
+
29
+ def date
30
+ Time.at(data['created_time']).utc
31
+ end
32
+
33
+ def thumbnail_small
34
+ data['thumbnail_60_url']
35
+ end
36
+
37
+ def thumbnail_medium
38
+ data['thumbnail_240_url']
39
+ end
40
+
41
+ def thumbnail_large
42
+ data['thumbnail_720_url']
43
+ end
44
+
45
+ def view_count
46
+ data['views_total'].to_i
47
+ end
48
+
49
+ private
50
+
51
+ def _response_code
52
+ response = nil
53
+ Net::HTTP.start(_api_base, 443, use_ssl: true) {|http|
54
+ response = http.get(_api_path)
55
+ }
56
+ response.code
57
+ end
58
+
59
+ def _url_regex
60
+ /dai(?:\.ly|lymotion\.com\/(?:embed\/)?video)\/([a-zA-Z0-9]*)/
61
+ end
62
+
63
+ def _api_base
64
+ "api.dailymotion.com"
65
+ end
66
+
67
+ def _api_path
68
+ "/video/#{video_id}"
69
+ end
70
+
71
+ def _api_url
72
+ "https://#{_api_base}#{_api_path}?fields=id,title,description,duration,created_time,url,views_total,tags,thumbnail_url,thumbnail_720_url,thumbnail_240_url,thumbnail_60_url"
73
+ end
74
+
75
+ def _default_iframe_attributes
76
+ {}
77
+ end
78
+
79
+ def _default_url_attributes
80
+ { autoplay: 0 }
81
+ end
82
+
83
+ end
84
+ end
85
+ end
@@ -3,7 +3,7 @@ class VideoInfo
3
3
  class Youtube < Provider
4
4
 
5
5
  def self.usable?(url)
6
- url =~ /(youtube\.com)|(youtu\.be)/
6
+ url =~ /(youtube\.com\/(?!playlist).*)|(youtu\.be)/
7
7
  end
8
8
 
9
9
  def provider
@@ -0,0 +1,55 @@
1
+ class VideoInfo
2
+ module Providers
3
+ class YoutubePlaylist < Youtube
4
+
5
+ alias_method :playlist_id, :video_id
6
+
7
+ def self.usable?(url)
8
+ url =~ /(youtube\.com)\/playlist/
9
+ end
10
+
11
+ def videos
12
+ _playlist_video_ids.map do |entry_id|
13
+ VideoInfo.new("http://www.youtube.com/watch?v=#{entry_id}")
14
+ end
15
+ end
16
+
17
+ def embed_url
18
+ "www.youtube.com/embed/videoseries?list=#{playlist_id}"
19
+ end
20
+
21
+ def description
22
+ _playlist_entry['subtitle']['$t']
23
+ end
24
+
25
+ %w[date keywords duration view_count].each do |method|
26
+ define_method(method) { nil }
27
+ end
28
+
29
+ private
30
+
31
+ def _playlist_entry
32
+ data['feed']
33
+ end
34
+
35
+ def _video_entry
36
+ _playlist_entry
37
+ end
38
+
39
+ def _url_regex
40
+ /youtube.com\/playlist\?p=(\S*)/
41
+ end
42
+
43
+ def _api_path
44
+ "/feeds/api/playlists/#{playlist_id}?v=2&alt=json"
45
+ end
46
+
47
+ def _playlist_video_ids
48
+ _playlist_entry['entry'].map do |entry|
49
+ entry['media$group']['yt$videoid']['$t']
50
+ end
51
+ end
52
+
53
+ end
54
+ end
55
+ end
@@ -1,3 +1,3 @@
1
1
  class VideoInfo
2
- VERSION = '2.1.1'
2
+ VERSION = '2.2.0'
3
3
  end
@@ -0,0 +1,63 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.dailymotion.com/video/inValIdiD
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - '*/*'
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 404
19
+ message: Not Found
20
+ headers:
21
+ Server:
22
+ - DMS/1.0.42
23
+ X-Dm-Backnode:
24
+ - web-104.adm.dailymotion.com:80
25
+ Vary:
26
+ - Authorization,Accept-Encoding
27
+ Cache-Control:
28
+ - private, max-age=900, no-transform, no-cache="set-cookie"
29
+ Content-Type:
30
+ - application/json
31
+ X-Api-Error:
32
+ - code="404", message="This video does not exist or has been deleted."
33
+ P3p:
34
+ - policyref="http://www.dailymotion.com/w3c/p3p.xml", CP="IDC DSP CURa ADMa
35
+ DEVa TAIa OUR BUS IND UNI COM NAV INT"
36
+ Date:
37
+ - Sat, 22 Feb 2014 12:37:47 GMT
38
+ Keep-Alive:
39
+ - timeout=60, max=4984
40
+ X-Dm-Lb:
41
+ - 195.8.215.129
42
+ Access-Control-Allow-Origin:
43
+ - '*'
44
+ Etag:
45
+ - W/"CcU5dNT05vkow2VzLcDLDA"
46
+ Connection:
47
+ - Keep-Alive
48
+ Set-Cookie:
49
+ - ts=332925; expires=Thu, 22-Feb-2024 12:37:47 GMT; Max-Age=315532800; path=/;
50
+ domain=.dailymotion.com
51
+ Last-Modified:
52
+ - Wed, 29 Jan 2014 19:37:41 GMT
53
+ X-Dm-Page:
54
+ - fr.rest.rest_api
55
+ Content-Length:
56
+ - '110'
57
+ body:
58
+ encoding: UTF-8
59
+ string: '{"error":{"code":404,"message":"This video does not exist or has been
60
+ deleted.","type":"not_found"}}'
61
+ http_version:
62
+ recorded_at: Sat, 22 Feb 2014 12:37:47 GMT
63
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,60 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.dailymotion.com/video/x7lni3
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - '*/*'
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Server:
22
+ - DMS/1.0.42
23
+ X-Dm-Backnode:
24
+ - web-029.adm.dailymotion.com:80
25
+ Vary:
26
+ - Authorization,Accept-Encoding
27
+ Cache-Control:
28
+ - private, max-age=900, no-transform, no-cache="set-cookie"
29
+ Content-Type:
30
+ - application/json
31
+ P3p:
32
+ - policyref="http://www.dailymotion.com/w3c/p3p.xml", CP="IDC DSP CURa ADMa
33
+ DEVa TAIa OUR BUS IND UNI COM NAV INT"
34
+ Date:
35
+ - Sat, 22 Feb 2014 12:37:46 GMT
36
+ Keep-Alive:
37
+ - timeout=60, max=4966
38
+ X-Dm-Lb:
39
+ - 195.8.215.129
40
+ Access-Control-Allow-Origin:
41
+ - '*'
42
+ Etag:
43
+ - W/"O1DJzTYSf9K1Wvn1OkaB4Q"
44
+ Connection:
45
+ - Keep-Alive
46
+ Set-Cookie:
47
+ - ts=227877; expires=Thu, 22-Feb-2024 12:37:46 GMT; Max-Age=315532800; path=/;
48
+ domain=.dailymotion.com
49
+ Last-Modified:
50
+ - Sat, 06 Jul 2013 19:32:30 GMT
51
+ X-Dm-Page:
52
+ - fr.rest.rest_api
53
+ Content-Length:
54
+ - '103'
55
+ body:
56
+ encoding: UTF-8
57
+ string: '{"id":"x7lni3","title":"Mario Kart (R\u00e9mi Gaillard)","channel":"fun","owner":"x4r137"}'
58
+ http_version:
59
+ recorded_at: Sat, 22 Feb 2014 12:37:47 GMT
60
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,46 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: head
5
+ uri: http://gdata.youtube.com/feeds/api/videos/SUkXvWn1m7Q?alt=json&v=2
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 404
17
+ message: Not Found
18
+ headers:
19
+ X-Gdata-User-Country:
20
+ - FR
21
+ Content-Type:
22
+ - application/vnd.google.gdata.error+xml
23
+ Content-Length:
24
+ - '181'
25
+ Date:
26
+ - Fri, 21 Feb 2014 15:53:18 GMT
27
+ Expires:
28
+ - Fri, 21 Feb 2014 15:53:18 GMT
29
+ Cache-Control:
30
+ - private, max-age=0
31
+ X-Content-Type-Options:
32
+ - nosniff
33
+ X-Frame-Options:
34
+ - SAMEORIGIN
35
+ X-Xss-Protection:
36
+ - 1; mode=block
37
+ Server:
38
+ - GSE
39
+ Alternate-Protocol:
40
+ - 80:quic
41
+ body:
42
+ encoding: UTF-8
43
+ string: ''
44
+ http_version:
45
+ recorded_at: Fri, 21 Feb 2014 15:53:17 GMT
46
+ recorded_with: VCR 2.8.0