ruby-oembed 0.8.1 → 0.8.3
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/.yardopts +4 -0
- data/CHANGELOG.rdoc +13 -1
- data/Gemfile +9 -4
- data/Gemfile.lock +15 -22
- data/README.rdoc +20 -4
- data/Rakefile +1 -4
- data/lib/oembed/formatter.rb +18 -13
- data/lib/oembed/formatter/base.rb +108 -0
- data/lib/oembed/formatter/json.rb +14 -37
- data/lib/oembed/formatter/json/backends/activesupportjson.rb +8 -8
- data/lib/oembed/formatter/json/backends/jsongem.rb +8 -8
- data/lib/oembed/formatter/json/backends/yaml.rb +11 -11
- data/lib/oembed/formatter/xml.rb +20 -44
- data/lib/oembed/formatter/xml/backends/rexml.rb +10 -10
- data/lib/oembed/formatter/xml/backends/xmlsimple.rb +10 -10
- data/lib/oembed/providers.rb +36 -4
- data/lib/oembed/providers/embedly_urls.yml +58 -10
- data/lib/oembed/version.rb +1 -1
- data/ruby-oembed.gemspec +58 -62
- data/spec/formatter/ducktype_backend_spec.rb +94 -0
- data/spec/formatter/json/.DS_Store +0 -0
- data/spec/formatter/json/jsongem_backend_spec.rb +24 -0
- data/spec/formatter/json/yaml_backend_spec.rb +24 -0
- data/spec/formatter/xml/rexml_backend_spec.rb +24 -0
- data/spec/formatter/xml/xmlsimple_backend_spec.rb +24 -0
- data/spec/spec_helper.rb +28 -0
- metadata +68 -25
- data/.gitignore +0 -5
@@ -7,7 +7,6 @@ module OEmbed
|
|
7
7
|
module Backends
|
8
8
|
# Use the YAML library, part of the standard library, to parse JSON values that has been converted to YAML.
|
9
9
|
module Yaml
|
10
|
-
ParseError = ::StandardError
|
11
10
|
extend self
|
12
11
|
|
13
12
|
# Parses a JSON string or IO and converts it into an object.
|
@@ -17,7 +16,15 @@ module OEmbed
|
|
17
16
|
end
|
18
17
|
YAML.load(convert_json_to_yaml(json))
|
19
18
|
rescue ArgumentError
|
20
|
-
raise
|
19
|
+
raise parse_error, "Invalid JSON string"
|
20
|
+
end
|
21
|
+
|
22
|
+
def decode_fail_msg
|
23
|
+
"The version of the YAML library you have installed isn't parsing JSON like ruby-oembed expected."
|
24
|
+
end
|
25
|
+
|
26
|
+
def parse_error
|
27
|
+
::StandardError
|
21
28
|
end
|
22
29
|
|
23
30
|
protected
|
@@ -41,10 +48,10 @@ module OEmbed
|
|
41
48
|
scanner.skip(/\\/)
|
42
49
|
end
|
43
50
|
end
|
44
|
-
raise
|
51
|
+
raise parse_error unless scanner.scan_until(/\}/)
|
45
52
|
|
46
53
|
if marks.empty?
|
47
|
-
raise
|
54
|
+
raise parse_error
|
48
55
|
else
|
49
56
|
left_pos = [-1].push(*marks)
|
50
57
|
right_pos = marks << scanner.pos + scanner.rest_size
|
@@ -76,10 +83,3 @@ module OEmbed
|
|
76
83
|
end
|
77
84
|
end
|
78
85
|
end
|
79
|
-
|
80
|
-
# Only allow this backend if it parses JSON strings the way we expect it to
|
81
|
-
begin
|
82
|
-
raise unless OEmbed::Formatter.test_backend(OEmbed::Formatter::JSON::Backends::Yaml)
|
83
|
-
rescue
|
84
|
-
raise LoadError, "The version of the YAML library you have installed isn't parsing JSON like ruby-oembed expected."
|
85
|
-
end
|
data/lib/oembed/formatter/xml.rb
CHANGED
@@ -6,16 +6,7 @@ module OEmbed
|
|
6
6
|
DECODERS = %w(XmlSimple REXML)
|
7
7
|
|
8
8
|
class << self
|
9
|
-
|
10
|
-
# Returns true if there is a valid XML backend. Otherwise, raises OEmbed::FormatNotSupported
|
11
|
-
def supported?
|
12
|
-
!!backend
|
13
|
-
end
|
14
|
-
|
15
|
-
# Parses an XML string or IO and convert it into an object
|
16
|
-
def decode(xml)
|
17
|
-
backend.decode(xml)
|
18
|
-
end
|
9
|
+
include ::OEmbed::Formatter::Base
|
19
10
|
|
20
11
|
# Returns the current XML backend.
|
21
12
|
def backend
|
@@ -24,39 +15,6 @@ module OEmbed
|
|
24
15
|
@backend
|
25
16
|
end
|
26
17
|
|
27
|
-
# Sets the current XML backend. Raises a LoadError if the given
|
28
|
-
# backend cannot be loaded
|
29
|
-
# OEmbed::Formatter::XML.backend = 'REXML'
|
30
|
-
def backend=(name)
|
31
|
-
if name.is_a?(Module)
|
32
|
-
@backend = name
|
33
|
-
else
|
34
|
-
already_required = false
|
35
|
-
begin
|
36
|
-
already_required = OEmbed::Formatter::XML::Backends.const_defined?(name, false)
|
37
|
-
rescue ArgumentError # we're dealing with ruby < 1.9 where const_defined? only takes 1 argument, but behaves the way we want it to.
|
38
|
-
already_required = OEmbed::Formatter::XML::Backends.const_defined?(name)
|
39
|
-
rescue NameError # no backends have been loaded yet
|
40
|
-
already_required = false
|
41
|
-
end
|
42
|
-
|
43
|
-
require "oembed/formatter/xml/backends/#{name.to_s.downcase}" unless already_required
|
44
|
-
@backend = OEmbed::Formatter::XML::Backends.const_get(name)
|
45
|
-
end
|
46
|
-
@parse_error = @backend::ParseError
|
47
|
-
end
|
48
|
-
|
49
|
-
# Perform a set of operations using a backend other than the current one.
|
50
|
-
# OEmbed::Formatter::XML.with_backend('XmlSimple') do
|
51
|
-
# OEmbed::Formatter::XML.decode(xml_value)
|
52
|
-
# end
|
53
|
-
def with_backend(name)
|
54
|
-
old_backend, self.backend = backend, name
|
55
|
-
yield
|
56
|
-
ensure
|
57
|
-
self.backend = old_backend
|
58
|
-
end
|
59
|
-
|
60
18
|
def set_default_backend
|
61
19
|
DECODERS.find do |name|
|
62
20
|
begin
|
@@ -69,7 +27,25 @@ module OEmbed
|
|
69
27
|
end
|
70
28
|
end
|
71
29
|
|
72
|
-
|
30
|
+
private
|
31
|
+
|
32
|
+
def backend_path
|
33
|
+
'xml/backends'
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_value
|
37
|
+
<<-XML
|
38
|
+
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
39
|
+
<oembed>
|
40
|
+
<version>1.0</version>
|
41
|
+
<string>test</string>
|
42
|
+
<int>42</int>
|
43
|
+
<html><i>Cool's</i>\n the "word"!</html>
|
44
|
+
</oembed>
|
45
|
+
XML
|
46
|
+
end
|
47
|
+
|
48
|
+
end # self
|
73
49
|
|
74
50
|
end # XML
|
75
51
|
end
|
@@ -7,7 +7,6 @@ module OEmbed
|
|
7
7
|
module Backends
|
8
8
|
# Use the REXML library, part of the standard library, to parse XML values.
|
9
9
|
module REXML
|
10
|
-
ParseError = ::REXML::ParseException
|
11
10
|
extend self
|
12
11
|
|
13
12
|
# Parses an XML string or IO and convert it into an object
|
@@ -23,22 +22,23 @@ module OEmbed
|
|
23
22
|
obj
|
24
23
|
rescue
|
25
24
|
case $!
|
26
|
-
when
|
25
|
+
when parse_error
|
27
26
|
raise $!
|
28
27
|
else
|
29
|
-
raise
|
28
|
+
raise parse_error, "Couldn't parse the given document."
|
30
29
|
end
|
31
30
|
end
|
31
|
+
|
32
|
+
def decode_fail_msg
|
33
|
+
"The version of the REXML library you have installed isn't parsing XML like ruby-oembed expected."
|
34
|
+
end
|
35
|
+
|
36
|
+
def parse_error
|
37
|
+
::REXML::ParseException
|
38
|
+
end
|
32
39
|
|
33
40
|
end
|
34
41
|
end
|
35
42
|
end
|
36
43
|
end
|
37
44
|
end
|
38
|
-
|
39
|
-
# Only allow this backend if it parses XML strings the way we expect it to
|
40
|
-
begin
|
41
|
-
raise unless OEmbed::Formatter.test_backend(OEmbed::Formatter::XML::Backends::REXML)
|
42
|
-
rescue
|
43
|
-
raise LoadError, "The version of the REXML library you have installed isn't parsing XML like ruby-oembed expected."
|
44
|
-
end
|
@@ -7,7 +7,6 @@ module OEmbed
|
|
7
7
|
module Backends
|
8
8
|
# Use the xml-simple gem to parse XML values.
|
9
9
|
module XmlSimple
|
10
|
-
ParseError = ::ArgumentError
|
11
10
|
extend self
|
12
11
|
|
13
12
|
# Parses an XML string or IO and convert it into an object.
|
@@ -18,22 +17,23 @@ module OEmbed
|
|
18
17
|
::XmlSimple.xml_in(xml, 'ForceArray'=>false)
|
19
18
|
rescue
|
20
19
|
case $!
|
21
|
-
when
|
20
|
+
when parse_error
|
22
21
|
raise $!
|
23
22
|
else
|
24
|
-
raise
|
23
|
+
raise parse_error, "Couldn't parse the given document."
|
25
24
|
end
|
26
25
|
end
|
26
|
+
|
27
|
+
def decode_fail_msg
|
28
|
+
"The version of the xml-simple library you have installed isn't parsing XML like ruby-oembed expected."
|
29
|
+
end
|
30
|
+
|
31
|
+
def parse_error
|
32
|
+
::ArgumentError
|
33
|
+
end
|
27
34
|
|
28
35
|
end
|
29
36
|
end
|
30
37
|
end
|
31
38
|
end
|
32
39
|
end
|
33
|
-
|
34
|
-
# Only allow this backend if it parses XML strings the way we expect it to
|
35
|
-
begin
|
36
|
-
raise unless OEmbed::Formatter.test_backend(OEmbed::Formatter::XML::Backends::XmlSimple)
|
37
|
-
rescue
|
38
|
-
raise ::LoadError, "The version of the xml-simple library you have installed isn't parsing XML like ruby-oembed expected."
|
39
|
-
end
|
data/lib/oembed/providers.rb
CHANGED
@@ -113,19 +113,25 @@ module OEmbed
|
|
113
113
|
# Custom providers:
|
114
114
|
|
115
115
|
# Provider for youtube.com
|
116
|
+
# http://apiblog.youtube.com/2009/10/oembed-support.html
|
117
|
+
# To get the iframe embed code, instead of flash-based, pass
|
118
|
+
# :flash=>1 as a query in your get request.
|
116
119
|
Youtube = OEmbed::Provider.new("http://www.youtube.com/oembed")
|
117
120
|
Youtube << "http://*.youtube.com/*"
|
118
121
|
Youtube << "http://*.youtu.be/*"
|
119
122
|
|
120
123
|
# Provider for flickr.com
|
124
|
+
# http://developer.yahoo.com/blogs/ydn/posts/2008/05/oembed_embeddin/
|
121
125
|
Flickr = OEmbed::Provider.new("http://www.flickr.com/services/oembed/")
|
122
126
|
Flickr << "http://*.flickr.com/*"
|
123
127
|
|
124
128
|
# Provider for viddler.com
|
129
|
+
# http://developers.viddler.com/documentation/services/oembed/
|
125
130
|
Viddler = OEmbed::Provider.new("http://lab.viddler.com/services/oembed/")
|
126
131
|
Viddler << "http://*.viddler.com/*"
|
127
132
|
|
128
133
|
# Provider for qik.com
|
134
|
+
# http://qik.com/blog/qik-embraces-oembed-for-embedding-videos/
|
129
135
|
Qik = OEmbed::Provider.new("http://qik.com/api/oembed.{format}")
|
130
136
|
Qik << "http://qik.com/*"
|
131
137
|
Qik << "http://qik.com/video/*"
|
@@ -139,16 +145,38 @@ module OEmbed
|
|
139
145
|
Hulu << "http://www.hulu.com/watch/*"
|
140
146
|
|
141
147
|
# Provider for vimeo.com
|
148
|
+
# http://vimeo.com/api/docs/oEmbed
|
142
149
|
Vimeo = OEmbed::Provider.new("http://www.vimeo.com/api/oembed.{format}")
|
143
150
|
Vimeo << "http://*.vimeo.com/*"
|
144
151
|
Vimeo << "http://*.vimeo.com/groups/*/videos/*"
|
152
|
+
|
153
|
+
# Provider for instagram.com
|
154
|
+
# http://instagr.am/developer/embedding/
|
155
|
+
Instagram = OEmbed::Provider.new("http://api.instagram.com/oembed", :json)
|
156
|
+
Instagram << "http://instagr.am/p/*"
|
157
|
+
Instagram << "http://instagram.com/p/*"
|
158
|
+
|
159
|
+
# Provider for slideshare.net
|
160
|
+
# http://www.slideshare.net/developers/oembed
|
161
|
+
Slideshare = OEmbed::Provider.new("http://www.slideshare.net/api/oembed/2")
|
162
|
+
Slideshare << "http://www.slideshare.net/*/*"
|
163
|
+
Slideshare << "http://www.slideshare.net/mobile/*/*"
|
164
|
+
|
165
|
+
# Provider for yfrog
|
166
|
+
# http://code.google.com/p/imageshackapi/wiki/OEMBEDSupport
|
167
|
+
Yfrog = OEmbed::Provider.new("http://www.yfrog.com/api/oembed", :json)
|
168
|
+
Yfrog << "http://yfrog.com/*"
|
169
|
+
|
145
170
|
|
146
171
|
# pownce.com closed in 2008
|
147
172
|
#Pownce = OEmbed::Provider.new("http://api.pownce.com/2.1/oembed.{format}")
|
148
173
|
#Pownce << "http://*.pownce.com/*"
|
149
174
|
|
150
175
|
# Provider for oohembed.com, which is a provider agregator. See
|
151
|
-
# OEmbed::
|
176
|
+
# OEmbed::Providers::OohEmbed.urls for a full list of supported url schemas.
|
177
|
+
# Embed.ly has taken over the oohembed.com domain and as of July 20 all oohEmbed
|
178
|
+
# request will require you use an API key. For details on the transition see
|
179
|
+
# http://blog.embed.ly/oohembed
|
152
180
|
OohEmbed = OEmbed::Provider.new("http://oohembed.com/oohembed/", :json)
|
153
181
|
OohEmbed << "http://*.5min.com/Video/*" # micro-video host
|
154
182
|
OohEmbed << %r{http://(.*?).amazon.(com|co.uk|de|ca|jp)/(.*?)/(gp/product|o/ASIN|obidos/ASIN|dp)/(.*?)} # Online product shopping
|
@@ -184,9 +212,12 @@ module OEmbed
|
|
184
212
|
OohEmbed << %r{http://yfrog.(com|ru|com.tr|it|fr|co.il|co.uk|com.pl|pl|eu|us)/(.*?)} # image & video hosting
|
185
213
|
OohEmbed << "http://*.youtube.com/watch*"
|
186
214
|
|
187
|
-
# Provider for
|
188
|
-
# OEmbed::
|
189
|
-
|
215
|
+
# Provider for Embedly.com, which is a provider agregator. See
|
216
|
+
# OEmbed::Providers::Embedly.urls for a full list of supported url schemas.
|
217
|
+
# http://embed.ly/docs/endpoints/1/oembed
|
218
|
+
# You'll need to add your Embed.ly API key to each request as the "key"
|
219
|
+
# parameter. To get an API key you'll need to sign up here: http://embed.ly/pricing
|
220
|
+
Embedly = OEmbed::Provider.new("http://api.embed.ly/1/oembed")
|
190
221
|
# Add all known URL regexps for Embedly. To update this list run `rake oembed:update_embedly`
|
191
222
|
YAML.load_file(File.join(File.dirname(__FILE__), "/providers/embedly_urls.yml")).each do |url|
|
192
223
|
Embedly << url
|
@@ -199,6 +230,7 @@ module OEmbed
|
|
199
230
|
PollEverywhere << "http://www.polleverywhere.com/free_text_polls/*"
|
200
231
|
|
201
232
|
# Provider for my.opera.com
|
233
|
+
# http://my.opera.com/devblog/blog/2008/12/02/embedding-my-opera-content-oembed
|
202
234
|
MyOpera = OEmbed::Provider.new("http://my.opera.com/service/oembed", :json)
|
203
235
|
MyOpera << "http://my.opera.com/*"
|
204
236
|
|
@@ -2,8 +2,9 @@
|
|
2
2
|
- http://*.bandcamp.com/
|
3
3
|
- http://*.bandcamp.com/album/*
|
4
4
|
- http://*.bandcamp.com/track/*
|
5
|
-
- http://*.blip.tv
|
5
|
+
- http://*.blip.tv/*/*
|
6
6
|
- http://*.craigslist.org/*/*
|
7
|
+
- http://*.crocodoc.com/*
|
7
8
|
- http://*.dailymotion.com/*/video/*
|
8
9
|
- http://*.dailymotion.com/video/*
|
9
10
|
- http://*.deviantart.com
|
@@ -19,7 +20,6 @@
|
|
19
20
|
- http://*.dipdive.com/v/*
|
20
21
|
- http://*.kinomap.com/*
|
21
22
|
- http://*.posterous.com/*
|
22
|
-
- http://*.scribd.com/doc/*
|
23
23
|
- http://*.smugmug.com/*
|
24
24
|
- http://*.smugmug.com/*#*
|
25
25
|
- http://*.status.net/notice/*
|
@@ -29,12 +29,15 @@
|
|
29
29
|
- http://*.twitrpix.com/*
|
30
30
|
- http://*.uservoice.com/*/suggestions/*
|
31
31
|
- http://*.youtube.com/*#*/*
|
32
|
+
- http://*.youtube.com/playlist*
|
32
33
|
- http://*.youtube.com/profile*
|
33
34
|
- http://*.youtube.com/user/*
|
34
35
|
- http://*.youtube.com/v/*
|
36
|
+
- http://*.youtube.com/view_play_list*
|
35
37
|
- http://*amazon.*/*/ASIN/*
|
36
38
|
- http://*amazon.*/*/dp/*
|
37
39
|
- http://*amazon.*/dp/*
|
40
|
+
- http://*amazon.*/gp/aw/d/*
|
38
41
|
- http://*amazon.*/gp/offer-listing/*
|
39
42
|
- http://*amazon.*/gp/product/*
|
40
43
|
- http://*amazon.*/gp/product/images/*
|
@@ -78,7 +81,8 @@
|
|
78
81
|
- http://barelypolitical.com/episode/*
|
79
82
|
- http://bigthink.com/ideas/*
|
80
83
|
- http://bigthink.com/series/*
|
81
|
-
- http://blip.tv
|
84
|
+
- http://blip.tv/*/*
|
85
|
+
- http://bnter.com/convo/*
|
82
86
|
- http://boo.fm/b*
|
83
87
|
- http://boston.com/video*
|
84
88
|
- http://brainbird.net/notice/*
|
@@ -94,7 +98,11 @@
|
|
94
98
|
- http://clipshack.com/Clip.aspx?*
|
95
99
|
- http://cnbc.com/id/*/play/1/video/*
|
96
100
|
- http://cnbc.com/id/*?*video*
|
101
|
+
- http://collegehumor.com/video/*
|
102
|
+
- http://collegehumor.com/video:*
|
103
|
+
- http://color.com/s/*
|
97
104
|
- http://confreaks.net/videos/*
|
105
|
+
- http://crocodoc.com/*
|
98
106
|
- http://crunchbase.com/*/*
|
99
107
|
- http://dailybooth.com/*/*
|
100
108
|
- http://dipdive.com/media/*
|
@@ -129,6 +137,7 @@
|
|
129
137
|
- http://google.com/buzz/*/*/*
|
130
138
|
- http://google.com/profiles/*
|
131
139
|
- http://grindtv.com/*/video/*
|
140
|
+
- http://grooveshark.com/*
|
132
141
|
- http://guardian.co.uk/*/video/*/*/*/*
|
133
142
|
- http://health.discovery.com/videos/*
|
134
143
|
- http://huffduffer.com/*/*
|
@@ -147,10 +156,11 @@
|
|
147
156
|
- http://indymogul.com/*/episode/*
|
148
157
|
- http://indymogul.com/episode/*
|
149
158
|
- http://instagr.am/p/*
|
159
|
+
- http://instagram.com/p/*
|
150
160
|
- http://investigation.discovery.com/videos/*
|
151
161
|
- http://issuu.com/*/docs/*
|
152
|
-
- http://listen.grooveshark.com/s/*
|
153
162
|
- http://liveleak.com/view?*
|
163
|
+
- http://lockerz.com/s/*
|
154
164
|
- http://logotv.com/video/*
|
155
165
|
- http://lonelyplanet.com/Clip.aspx?*
|
156
166
|
- http://m.youtube.com/index*
|
@@ -164,6 +174,7 @@
|
|
164
174
|
- http://meetu.ps/*
|
165
175
|
- http://military.discovery.com/videos/*
|
166
176
|
- http://mixergy.com/*
|
177
|
+
- http://mlkshk.com/p/*
|
167
178
|
- http://mobile.twitter.com/*/status/*
|
168
179
|
- http://mobile.twitter.com/*/statuses/*
|
169
180
|
- http://moby.to/*
|
@@ -177,6 +188,7 @@
|
|
177
188
|
- http://my.opera.com/*/albums/showpic.dml?album=*&picture=*
|
178
189
|
- http://myloc.me/*
|
179
190
|
- http://nzonscreen.com/title/*
|
191
|
+
- http://ow.ly/i/*
|
180
192
|
- http://pastebin.com/*
|
181
193
|
- http://pastie.org/*
|
182
194
|
- http://phodroid.com/*/*/*
|
@@ -185,14 +197,11 @@
|
|
185
197
|
- http://picasaweb.google.com*/*/*
|
186
198
|
- http://picasaweb.google.com*/*/*#*
|
187
199
|
- http://picasaweb.google.com*/lh/photo/*
|
188
|
-
- http://picplz.com
|
200
|
+
- http://picplz.com/*
|
189
201
|
- http://pics.brizzly.com/*.jpg
|
190
202
|
- http://pikchur.com/*
|
191
203
|
- http://ping.fm/p/*
|
192
204
|
- http://planetgreen.discovery.com/videos/*
|
193
|
-
- http://plixi.com/*
|
194
|
-
- http://plixi.com/p/*
|
195
|
-
- http://plixi.com/profile/home/*
|
196
205
|
- http://polldaddy.com/community/poll/*
|
197
206
|
- http://polldaddy.com/poll/*
|
198
207
|
- http://post.ly/*
|
@@ -204,13 +213,20 @@
|
|
204
213
|
- http://questionablecontent.net/comics/*.png
|
205
214
|
- http://questionablecontent.net/view.php*
|
206
215
|
- http://radionomy.com/*/radio/*
|
216
|
+
- http://radioreddit.com/?q=songs*
|
217
|
+
- http://radioreddit.com/songs*
|
207
218
|
- http://redux.com/f/*/*
|
208
219
|
- http://redux.com/stream/item/*/*
|
209
220
|
- http://s*.photobucket.com/albums/*
|
221
|
+
- http://say.ly/*
|
210
222
|
- http://science.discovery.com/videos/*
|
223
|
+
- http://sciencestage.com/a/*.html
|
224
|
+
- http://sciencestage.com/v/*.html
|
211
225
|
- http://screencast.com/*/media/*
|
212
226
|
- http://screencast.com/t/*
|
213
227
|
- http://screenr.com/*
|
228
|
+
- http://scribd.com/doc/*
|
229
|
+
- http://scribd.com/mobile/documents/*
|
214
230
|
- http://sendables.jibjab.com/originals/*
|
215
231
|
- http://sendables.jibjab.com/view/*
|
216
232
|
- http://share.ovi.com/media/*/*
|
@@ -220,6 +236,7 @@
|
|
220
236
|
- http://slidesha.re/*
|
221
237
|
- http://snd.sc/*
|
222
238
|
- http://snotr.com/video/*
|
239
|
+
- http://socialcam.com/v/*
|
223
240
|
- http://some.ly/*
|
224
241
|
- http://someecards.com/*/*
|
225
242
|
- http://soundcloud.com/*
|
@@ -253,7 +270,6 @@
|
|
253
270
|
- http://tv.digg.com/diggdialogg/*
|
254
271
|
- http://tv.digg.com/diggnation/*
|
255
272
|
- http://tv.digg.com/diggreel/*
|
256
|
-
- http://tweetphoto.com/*
|
257
273
|
- http://twitgoo.com/*
|
258
274
|
- http://twitlonger.com/show/*
|
259
275
|
- http://twitpic.com/*
|
@@ -266,11 +282,14 @@
|
|
266
282
|
- http://v.youku.com/v_playlist/*.html
|
267
283
|
- http://v.youku.com/v_show/*.html
|
268
284
|
- http://video.allthingsd.com/video/*
|
285
|
+
- http://video.forbes.com/fvn/*
|
269
286
|
- http://video.google.com/videoplay?*
|
287
|
+
- http://video.jardenberg.se/*
|
270
288
|
- http://video.nationalgeographic.com/*/*/*.html
|
271
289
|
- http://video.pbs.org/video/*
|
272
290
|
- http://video.yahoo.com/network/*
|
273
291
|
- http://video.yahoo.com/watch/*/*
|
292
|
+
- http://videos.nymag.com/*
|
274
293
|
- http://vids.myspace.com/index.cfm?fuseaction=vids.individual&videoid*
|
275
294
|
- http://vimeo.com/*
|
276
295
|
- http://vimeo.com/groups/*/videos/*
|
@@ -304,6 +323,7 @@
|
|
304
323
|
- http://www.channelfrederator.com/*/episode/*
|
305
324
|
- http://www.channelfrederator.com/episode/*
|
306
325
|
- http://www.clikthrough.com/theater/video/*
|
326
|
+
- http://www.clipfish.de/*/*/video/*
|
307
327
|
- http://www.clipshack.com/Clip.aspx?*
|
308
328
|
- http://www.cnbc.com/id/*/play/1/video/*
|
309
329
|
- http://www.cnbc.com/id/*?*video*
|
@@ -311,12 +331,12 @@
|
|
311
331
|
- http://www.colbertnation.com/full-episodes/*
|
312
332
|
- http://www.colbertnation.com/the-colbert-report-collections/*
|
313
333
|
- http://www.colbertnation.com/the-colbert-report-videos/*
|
334
|
+
- http://www.collegehumor.com/video/*
|
314
335
|
- http://www.collegehumor.com/video:*
|
315
336
|
- http://www.comedycentral.com/videos/index.jhtml?*
|
316
337
|
- http://www.confreaks.net/videos/*
|
317
338
|
- http://www.crunchbase.com/*/*
|
318
339
|
- http://www.dailymile.com/people/*/entries/*
|
319
|
-
- http://www.entertonement.com/clips/*
|
320
340
|
- http://www.escapistmagazine.com/videos/*
|
321
341
|
- http://www.facebook.com/photo.php*
|
322
342
|
- http://www.facebook.com/v/*
|
@@ -335,11 +355,13 @@
|
|
335
355
|
- http://www.globalpost.com/video/*
|
336
356
|
- http://www.godtube.com/featured/video/*
|
337
357
|
- http://www.godtube.com/watch/*
|
358
|
+
- http://www.gogoyoko.com/song/*
|
338
359
|
- http://www.google.com/buzz/*
|
339
360
|
- http://www.google.com/buzz/*/*/*
|
340
361
|
- http://www.google.com/profiles/*
|
341
362
|
- http://www.grindtv.com/*/video/*
|
342
363
|
- http://www.guardian.co.uk/*/video/*/*/*/*
|
364
|
+
- http://www.hark.com/clips/*
|
343
365
|
- http://www.howcast.com/videos/*
|
344
366
|
- http://www.hulu.com/w/*
|
345
367
|
- http://www.hulu.com/watch*
|
@@ -378,6 +400,7 @@
|
|
378
400
|
- http://www.msnbc.msn.com/id/*/ns/*
|
379
401
|
- http://www.msnbc.msn.com/id/*/vp/*
|
380
402
|
- http://www.myspace.com/index.cfm?fuseaction=*&videoid*
|
403
|
+
- http://www.myvideo.de/watch/*
|
381
404
|
- http://www.npr.org/*/*/*/*/*
|
382
405
|
- http://www.npr.org/*/*/*/*/*/*
|
383
406
|
- http://www.npr.org/*/*/*/*/*/*/*
|
@@ -396,6 +419,8 @@
|
|
396
419
|
- http://www.qwantz.com/index.php?comic=*
|
397
420
|
- http://www.qwiki.com/q/*
|
398
421
|
- http://www.radionomy.com/*/radio/*
|
422
|
+
- http://www.radioreddit.com/?q=songs*
|
423
|
+
- http://www.radioreddit.com/songs*
|
399
424
|
- http://www.rdio.com/#/artist/*/album/*
|
400
425
|
- http://www.rdio.com/artist/*/album/*
|
401
426
|
- http://www.redux.com/f/*/*
|
@@ -409,15 +434,20 @@
|
|
409
434
|
- http://www.schuelervz.net/Groups/Overview/*
|
410
435
|
- http://www.schuelervz.net/Profile/*
|
411
436
|
- http://www.schuelervz.net/l/*
|
437
|
+
- http://www.sciencestage.com/a/*.html
|
438
|
+
- http://www.sciencestage.com/v/*.html
|
412
439
|
- http://www.scrapblog.com/viewer/viewer.aspx*
|
413
440
|
- http://www.screencast.com/*/media/*
|
414
441
|
- http://www.screencast.com/t/*
|
442
|
+
- http://www.scribd.com/doc/*
|
443
|
+
- http://www.scribd.com/mobile/documents/*
|
415
444
|
- http://www.shopstyle.com/action/apiVisitRetailer*
|
416
445
|
- http://www.shopstyle.com/action/viewLook*
|
417
446
|
- http://www.shopstyle.com/browse*
|
418
447
|
- http://www.slideshare.net/*/*
|
419
448
|
- http://www.slideshare.net/mobile/*/*
|
420
449
|
- http://www.snotr.com/video/*
|
450
|
+
- http://www.socialcam.com/v/*
|
421
451
|
- http://www.some.ly/*
|
422
452
|
- http://www.someecards.com/*/*
|
423
453
|
- http://www.spike.com/video/*
|
@@ -471,6 +501,11 @@
|
|
471
501
|
- http://www.washingtonpost.com/wp-dyn/*/video/*/*/*/*
|
472
502
|
- http://www.whitehouse.gov/photos-and-video/video/*
|
473
503
|
- http://www.whitehouse.gov/video/*
|
504
|
+
- http://www.whosay.com/content/*
|
505
|
+
- http://www.whosay.com/photos/*
|
506
|
+
- http://www.whosay.com/videos/*
|
507
|
+
- http://www.wikimedia.org/wiki/File*
|
508
|
+
- http://www.wikipedia.org/wiki/*
|
474
509
|
- http://www.worldstarhiphop.com/videos/video*.php?v=*
|
475
510
|
- http://www.xiami.com/song/*
|
476
511
|
- http://www.xkcd.com/*
|
@@ -482,6 +517,19 @@
|
|
482
517
|
- http://xiami.com/song/*
|
483
518
|
- http://xkcd.com/*
|
484
519
|
- http://youtu.be/*
|
520
|
+
- https://*.crocodoc.com/*
|
521
|
+
- https://*.youtube.com/v/*
|
522
|
+
- https://*youtube.com/watch*
|
485
523
|
- https://app.wistia.com/embed/medias/*
|
524
|
+
- https://crocodoc.com/*
|
486
525
|
- https://img.skitch.com/*
|
526
|
+
- https://mobile.twitter.com/*/status/*
|
527
|
+
- https://mobile.twitter.com/*/statuses/*
|
487
528
|
- https://skitch.com/*/*/*
|
529
|
+
- https://twitter.com/*/status/*
|
530
|
+
- https://twitter.com/*/statuses/*
|
531
|
+
- https://www.facebook.com/photo.php*
|
532
|
+
- https://www.facebook.com/v/*
|
533
|
+
- https://www.facebook.com/video/video.php*
|
534
|
+
- https://www.twitter.com/*/status/*
|
535
|
+
- https://www.twitter.com/*/statuses/*
|