Хочу предложить твоему вниманию, %хабраюзер%, очередную вариацию на тему oEmbed+ (почему «плюс» см. ниже).

Для занятых и нетерпеливых сразу ссылка на сервис.

А тех, кому важны детали, прошу под кат.

oEmbed, Open Graph, Twitter Cards и все-все-все


Как-то понадобилось для одного сайта сделать так, чтоб по введенному URL можно было отобразить красивую картинку или вставить плеер, если это ссылка на видео. А еще лучше — даже для видео показать сначала статическую картинку, а уже по клику вставить вместо нее плеер. И, конечно же, в первую очередь приходит в голову использовать для этого oEmbed.

Что такое oEmbed, надеюсь, объяснять не нужно? Ну, если кто подзабыл, то oEmbed – это открытый формат для представления URL на стороннем сайте (как, например, делает это Фейсбук, когда в статусе указывается какой-то сайт). Для более подробной информации лучше почитать официальный сайт об этом формате: oembed.com

И немало сервис-провайдеров сегодня поддерживают этот формат: YouTube, Flickr, SlideShare и многие другие.

Но кроме oEmbed есть еще форматы микроразметки Open Graph и Twitter Cards, которые, фактически, служат ровно для тех же целей, что и oEmbed. И ресурсов, которые используют микроразметку для описания своих страниц многократно больше тех, что реализуют oEmbed.

А еще существует множество сайтов, которые вообще не заморачиваются ни oEmbed, ни микроразметкой, а живут, как умеют. Но по ним тоже хотелось бы получать возможную информацию.

Слишком много информации об URL не бывает


В общем, само собой напрашивается некий сервис, которому ты отдаешь URL и получаешь обратно информацию, которую используешь для оформления виджета, карточки или какого-то иного блока на странице своего сайта. Короче, делаешь красиво.

И такие сервисы, разумеется, существуют. Но в каждом из них мне чего-то не хватало для полного счастья. И вот так, как это нередко случается, родился новый сервис: oEmbed.info. Делал сначала сугубо для себя, но слегка увлекся и получился публичный сервис.

Этот сервис старается из полученного URL вытащить максимум информации, насколько это возможно – и через oEmbed, и через разметку, наконец, просто парсит HTML – и отдает ее аккуратным json'ом. В итоге, с одной стороны, получаем информацию в формате oEmbed, даже если ресурс не поддерживает этот формат. А с другой – объем получаемой информации, как правило, гораздо больше, чем это предусмотрено стандартом (кстати, именно поэтому в самом начале я говорю про "oEmbed+", а не просто oEmbed).

Что отдает oembed-сервис Youtube и что oEmbed.info - сравнение
Возвращаемые данные от oembed-сервиса Youtube:

{
  "type": "video",
  "thumbnail_url": "https://i.ytimg.com/vi/YR5ApYxkU-U/hqdefault.jpg",
  "thumbnail_width": 480,
  "html": "<iframe width=\"459\" height=\"344\" src=\"https://www.youtube.com/embed/YR5ApYxkU-U?feature=oembed\" frameborder=\"0\" allowfullscreen></iframe>",
  "version": "1.0",
  "width": 459,
  "author_url": "https://www.youtube.com/user/mongchilde",
  "provider_name": "YouTube",
  "thumbnail_height": 360,
  "height": 344,
  "author_name": "mongchilde",
  "provider_url": "https://www.youtube.com/",
  "title": "Pink Floyd - Another Brick In The Wall (HQ)"
}

Возвращаемые данные от oEmbed.Info:

{
  "version":"1.0",
  "url":"http://www.youtube.com/watch?v=YR5ApYxkU-U",
  "type":"video",
  "title":"Pink Floyd - Another Brick In The Wall (HQ)",
  "description":"HIT SUBSCRIBE FOR MORE CLASSIC VIDEOS Pink Floyd - Another Brick In The Wall Lifted from \"Pink Floyd The Wall\" film, this video is actually comprised of two ...",
  "cache_age":"",
  "tags":["Pink","Floyd","The","Wall","Another","Brick","In","Alan","Parker","Roger","Waters","David","Gilmour","Richard","Wright","Nick","Mason","Syd","Barrett","Cambridge","Kids","Children","Choir","Dark","Side","Of","Moon","We","Don't","Need","No","Education","Mask","Happiest","Days","Our","Lives","Alex","McAvoy","Childre..."],
  "width":459,
  "height":344,
  "author_name":"mongchilde",
  "author_url":"https://www.youtube.com/user/mongchilde",
  "html":"<iframe width=\"459\" height=\"344\" src=\"https://www.youtube.com/embed/YR5ApYxkU-U?feature=oembed\" frameborder=\"0\" allowfullscreen></iframe>",
  "player":"<iframe src=\"//www.youtube-nocookie.com/embed/YR5ApYxkU-U\" frameborder=\"0\" allowFullScreen width=\"459\" height=\"344\">",
  "aspect_ratio":74.946,
  "thumbnail_url":"https://i.ytimg.com/vi/YR5ApYxkU-U/hqdefault.jpg",
  "thumbnail_width":480,
  "thumbnail_height":360,
  "cover":"https://i.ytimg.com/vi/YR5ApYxkU-U/hqdefault.jpg",
  "cover_width":480,
  "cover_height":360,
  "provider_name":"YouTube",
  "provider_url":"https://www.youtube.com/",
  "provider_icons":[{"url":"https://www.youtube.com/favicon.ico","width":16,"height":16,"size":256,"mime":"image/x-icon","source":["adapter"]},{"url":"https://s.ytimg.com/yts/img/favicon-vflz7uhzw.ico","width":16,"height":16,"size":256,"mime":"image/png","source":["html"]},{"url":"https://s.ytimg.com/yts/img/favicon_32-vfl8NGn4k.png","width":32,"height":32,"size":1024,"mime":"image/png","source":["html"]},{"url":"https://s.ytimg.com/yts/img/favicon_48-vfl1s0rGh.png","width":48,"height":48,"size":2304,"mime":"image/png","source":["html"]},{"url":"https://s.ytimg.com/yts/img/favicon_96-vfldSA3ca.png","width":96,"height":96,"size":9216,"mime":"image/png","source":["html"]},{"url":"https://s.ytimg.com/yts/img/favicon_144-vflWmzoXw.png","width":144,"height":144,"size":20736,"mime":"image/png","source":["html"]}],
  "published_time":"",
  "images":[{"url":"https://i.ytimg.com/vi/YR5ApYxkU-U/hqdefault.jpg","width":480,"height":360,"size":172800,"mime":"image/jpeg","source":["oembed","opengraph","twittercards"]}],
  "maxres":{"url":"https://i.ytimg.com/vi/YR5ApYxkU-U/hqdefault.jpg","width":480,"height":360,"size":172800,"mime":"image/jpeg","source":["oembed","opengraph","twittercards"]}
}



Информацию по URL можно получить вручную, а можно через API. Чтоб работать через API нужно получить API KEY, это совершенно бесплатно.

Как монетизировать сервис, я не придумал, но т.к. ресурсов он потребляет совсем немного, то пусть живет так. Хотя, если у кого-то будут мысли, типа «если б была такая фича, то я бы за нее заплатил», то буду благодарен, если их озвучите. Впрочем, буду благодарен за любые предложения по улучшению сервиса.

Комментарии (0)