oEmbed is nice. Unfortunately, not everything supports oEmbed. Worse, the sites that do support it don't provide a consistent interface. Noembed provides a single url to get embeddable content from a large list of sites, even sites without oEmbed support!
Additionally, Noembed guarantees that all responses will have
html, title, url, and
provider_name fields. This means fewer special
cases spent building up your own HTML.
A simple demo is available here.
Treat Noembed like a regular oEmbed provider, but use any of the supported sites
for the url parameter. Noembed also supports a callback
parameter for JSONP.
An example request might look like this:
http://noembed.com/embed?url=http%3A//www.youtube.com/watch%3Fv%3DbDOYN-6gdRE&callback=my_embed_function
And the response will look like:
my_embed_function(
{
"width" : 425,
"author_name" : "schmoyoho",
"author_url" : "http://www.youtube.com/user/schmoyoho",
"version" : "1.0",
"provider_url" : "http://www.youtube.com/",
"provider_name" : "YouTube",
"thumbnail_width" : 480,
"thumbnail_url" : "http://i3.ytimg.com/vi/bDOYN-6gdRE/hqdefault.jpg",
"height" : 344,
"thumbnail_height" : 360,
"html" : "<iframe type='text/html' width='425' height='344' src='http://www.youtube.com/embed/bDOYN-6gdRE' frameborder=0></iframe>",
"url" : "http://www.youtube.com/watch?v=bDOYN-6gdRE",
"type" : "rich",
"title" : "Auto-Tune the News #8: dragons. geese. Michael Vick. (ft. T-Pain)"
}
)
Note: Chrome now blocks insecure scripts from loading on secure sites.
So, when using Noembed with JSONP on an https site be sure to use https://noembed.com/embed.
<img> tag.<iframe> so HTML5 video works. Preserves jump timecode (e.g. #t=5m30s).
<iframe> width to 640 instead of
native video width, which can get huge./providers endpointNoembed provides an endpoint that returns the current list of supported sites. The response is a JSON list with the site name and URL patterns. This can be used to automate testing if a URL is supported by Noembed without making an HTTP request.
All the source code for Noembed is
on github. Patches are accepted to add new services. To
write a new provider, inherit from the Noembed::Source
and define provider_name, patterns,
and serialize methods. Take a
look at an existing
source for an example.
Oohembed is a very similar service. It even
acts as a gateway to non-oEmbed enabled sites. The main limitation that I encountered
was its lack of a guaranteed html field. Also, it is popular so it
regularly goes over its usage limits.
embed.ly. I have not tried this service, but it lists support for hundreds of sites. Unfortunately, you can not add your own providers, so you are limited to what they support.