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.
@@ -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/*