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.
@@ -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 ParseError, "Invalid JSON string"
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 ParseError unless scanner.scan_until(/\}/)
51
+ raise parse_error unless scanner.scan_until(/\}/)
45
52
 
46
53
  if marks.empty?
47
- raise ParseError
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
@@ -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
- end
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>&lt;i&gt;Cool's&lt;/i&gt;\n the &quot;word&quot;&#x21;</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 ParseError
25
+ when parse_error
27
26
  raise $!
28
27
  else
29
- raise ParseError, "Couldn't parse the given document."
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 ::ArgumentError
20
+ when parse_error
22
21
  raise $!
23
22
  else
24
- raise ::ArgumentError, "Couldn't parse the given document."
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
@@ -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::Provders::OohEmbed.urls for a full list of supported url schemas.
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 embedly.com, which is a provider agregator. See
188
- # OEmbed::Provders::OohEmbed.urls for a full list of supported url schemas.
189
- Embedly = OEmbed::Provider.new("http://api.embed.ly/v1/api/oembed")
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/file/*
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/file/*
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/user/*/pic/*/
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/*