ruby-oembed 0.8.1 → 0.8.3
Sign up to get free protection for your applications and to get access to all the features.
- 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/*
|