Звернення до стороннього контенту за допомогою oembed і php

Часто використовувані скорочення

Що таке oEmbed

У oEmbed-операції беруть участь дві сторони: постачальник і споживач. Споживач запитує певні елементи контенту, звертаючись із запитами до кінцевої точки API постачальника. Постачальник обслуговує ці запити, повертаючи уявлення необхідних елементів в форматі XML або JSON.

Перший підхід простий, але він призводить до переходу користувача з вашого сайту на сайт YouTube з його численними спокусами. При другому підході відвідувач залишається на вашому сайті, але для цього потрібно знати, як працює вбудований плеєр YouTube.

Лістинг 1. Запит OEmbed

oEmbed-постачальники можуть повертати відповіді в форматі XML або JSON. Всі відповіді мають кодування UTF-8. Формат відповіді можна вказати в запиті у вигляді додаткового параметра "format". Приклад приведений в лістингу 2.

Лістинг 2. Використання API oEmbed YouTube

Вкладення контенту за допомогою oEmbed

Тепер, коли ви знайомі з роботою oEmbed, розглянемо приклад коду. Передбачається, що ви знайомі також з HTML, SQL і XML і що у вас встановлена ​​діюча середовище розробки Apache і PHP. Ще передбачається, що вам відомі основи роботи з класами та об'єктами PHP, так як PHP-компоненти, що використовуються в цій статті, написані відповідно до принципів об'єктно-орієнтованого програмування.

Щоб використовувати oEmbed з PHP-додатком, потрібно вибрати одну з двох бібліотек: PEAR Services_oEmbed або PHP-oembed. У більшості прикладів для цієї статті використовується PEAR Services_oEmbed (хоча я для довідки включив також кілька прикладів застосування php-oembed), так що встановіть її. Це можна зробити вручну, завантаживши бібліотеку з сайту PEAR (див. Посилання в розділі Ресурси), або нехай вона встановиться автоматично за допомогою PEAR-установника, як показано тут.

Після установки спробуйте виконати простий приклад з лістингу 3.

Лістинг 3. Використання API oEmbed YouTube
Малюнок 1. Об'єкт OEmbed, що повертається бібліотекою PEAR Services_oEmbed

Звернення до стороннього контенту за допомогою oembed і php

Звернення до стороннього контенту за допомогою oembed і php

Робота з метаданими контенту

Під вбудований ролик можна додати метадані, як показано в лістингу 4.

Лістинг 4. Використання метаданих oEmbed

Звернення до стороннього контенту за допомогою oembed і php

Відзначимо також, що в запит можна включити додатковий параметр GetObject (). масив, що містить параметри maxheight і maxwidth. які визначають висоту і ширину повертається уявлення.

Використання контенту з кількох джерел

Лістинг 5. Використання API oEmbed Revision3

Звернення до стороннього контенту за допомогою oembed і php

У лістингу 6 наведено ще один приклад, на цей раз, вкладення фрактала з Web-сайту deviantART.

Лістинг 6. Використання API oEmbed deviantART
Малюнок 5. Вбудоване зображення DeviantArt

Звернення до стороннього контенту за допомогою oembed і php

Використання сервісу oohEmbed

Хоча багато Web-додатки вже надають свою власну кінцеву точку API oEmbed, деякі цього поки не роблять. Але і до цих програм можна отримати доступ - через сервіс oohEmbed, який позиціонує себе як "oEmbed-сумісний постачальник вбудованих HTML-кодів для різних Web-сайтів". У число додаткових додатків і служб, до яких можна звертатися через oohEmbed, входять зображення товарів amazon.com, поновлення статусу Twitter, Google Video, Metacafe, Slideshare, TwitPic, Wikipedia, Wordpress і ін. Однак слід зазначити, що oohEmbed підтримує тільки вихід JSON і часто ігнорує параметри MaxWidth і MaxHeight.

У лістингу 7 наведено приклад включення в код Web-сторінки за допомогою oohEmbed контенту з Wikipedia.

Лістинг 7. Використання oohEmbed і Wikipedia

Зверніть увагу, що в лістингу 7 зазначена кінцева точка API відноситься до oohEmbed, а не Wikipedia. oohEmbed працює як проксі-сервер, який приймає запит oEmbed, дивиться на відповідне посилання і повертає oEmbed-сумісний відповідь, що містить необхідні дані.

Малюнок 6. Вбудована сторінка Wikipedia

Звернення до стороннього контенту за допомогою oembed і php

Лістинг 8 являє собою приклад вкладення в Web-сторінку презентації Slideshare (тип rich media) з використанням oohEmbed.

Лістинг 8. Використання oohEmbed і Slideshare
Малюнок 7. Вбудована презентація Slideshare

Звернення до стороннього контенту за допомогою oembed і php

У лістингу 9 oohEmbed використовується для вилучення і вставки зображення товару amazon.com по URL цього товару.

Лістинг 9. Використання oohEmbed і amazon.com
Малюнок 8. Вбудоване зображення товару Amazon

Звернення до стороннього контенту за допомогою oembed і php

Використання альтернативних PHP-бібліотек

Альтернативою бібліотеки PEAR Services_oEmbed служить бібліотека php-oembed, яку також можна використовувати для впровадження контенту в Web-сторінку. Встановити цю бібліотеку легко: завантажте її (див. Посилання в розділі Ресурси) і скопіюйте в яке-небудь місце в каталозі PHP. Налаштування, однак, буде трохи складніше, ніж для Services_oEmbed.

Бібліотека php-oembed підтримує свій власний список постачальників і кінцевих точок API oEmbed в XML-файлі з ім'ям providers.xml, розташованому в каталозі установки. Тому перш ніж приступити до використання того чи іншого постачальника oEmbed, потрібно спочатку додати його в цей файл. Наприклад, якщо потрібно використовувати oEmbed API DeviantArt, спочатку слід відредагувати файл providers.xml, додавши в нього відповідний запис, як показано в лістингу 10.

Лістинг 10. Редагування файлу providers.xml з додаванням в нього нового запису

Коли постачальник доданий, можна приступати до використання php-oembed в сценарії PHP, як показано в лістингу 11.

Лістинг 11. Використання oohEmbed і deviantArt з бібліотекою php-oembed

Лістинг 11 починається з визначення розташування файлу і providers.xml і включення всіх відповідних класів, необхідних для php-oembed. Потім створюється об'єкт сервісу ProviderManager, метод provide () якого використовується для отримання oEmbed-уявлення URL контенту. Це уявлення може бути повернуто в різних форматах: XML, JSON, PHP-об'єкт, PHP-масив або у вигляді послідовної рядки.

Малюнок 9. oEmbed-об'єкт, повернений бібліотекою php-oembed

Звернення до стороннього контенту за допомогою oembed і php

Малюнок 10. Вбудований зображення deviantArt

Звернення до стороннього контенту за допомогою oembed і php

Приклад програми: впровадження контенту в тіло документа

Тепер, коли вам знайомі основи використання PHP з oEmbed, давайте подивимося, як це працює в контексті прикладу програми. Так як oEmbed відноситься до впровадження контенту в Web-сторінки, приклад програми пропонує користувачам форму для введення документа (наприклад, повідомлення в блог) з автоматичним перетворенням гіперпосилань з цього документа під вбудовані подання контенту з використанням oEmbed.

Повний код приведений в лістингу 12.

Лістинг 12. Приклад програми для впровадження контенту в тіло документа

Лістинг 12 розділений на дві частини, відокремлені одна від одної перевіркою умови if-else (). Воно перевіряє наявність команди на передачу форми; якщо вона не виявлена, відображається проста Web-форма, куди користувачеві пропонується ввести заголовок сторінки і текст. Користувач може вводити текст в обидва ці поля, вставляючи в нього в міру необхідності гіперпосилання. Малюнок 11 ілюструє Web-форму, породжену лістингом 12. з деяким прикладом введення. (Текстова версія малюнка 11.)

Малюнок 11. Web-форма з підтримкою впровадження контенту в тіло повідомлення

Звернення до стороннього контенту за допомогою oembed і php

Далі використовуються цикл foreach () і блок try-catch<> для ітерації по масиву URL з передачею кожного елемента методу getObject () об'єкта Services_oEmbed. Цей крок призводить до запиту відповідного віддаленого контенту через API oohEmbed. Якщо контент знаходиться на підтримуваному сервісі, метод getObject () повертає відповідний код HTML-вставки, який зберігається в окремому масиві з ім'ям $ embeds. Якщо ж контент не підтримується, код генерує виняток, яке перехоплюється блоком try-catch<>. Це виняток означає, що вбудовується уявлення URL недоступно, тому URL просто перетвориться в HTML-тег anchor і зберігається в масиві $ embeds.

Останнім кроком буде виконання операції пошуку і заміни за оригінальним тілу документа, введеного користувачем, з заміною кожного URL або відповідним HTML-кодом вставки, або HTML-гіперпосиланням. Потім відредагований документ роздруковується на Web-сторінці.

Малюнок 12 ілюструє кінцевий результат з впровадженим в документ контентом.

Малюнок 12. Web-сторінка з впровадженим в документ контентом

Звернення до стороннього контенту за допомогою oembed і php

висновок

Як видно з цих прикладів, oEmbed - це простий спеціалізований API, призначений для єдиної мети - впровадження контенту, і це завдання він вирішує дуже добре. Це гнучкий інструмент для тих розробників, які хочуть створювати нові, оригінальні програми із застосуванням агрегації і пошуку контенту. Пограйте з ним якийсь час і складіть власну думку.

Отримати продукти і технології