[Из песочницы] Импорт данных из YouTube и Vimeo в Google.Docs
Предыстория Совсем недавно у нас случилась ситуация, когда «потерялись» все YouTube и Vimeo ссылки на ролики, количество просмотров которых нам необходимо выводить на сайте. Это нужно, чтобы потенциальные инвесторы и партнеры видели, какие текущие показатели у наших сериальных проектов. Скрипт обновляет данные раз в сутки, хотя я неоднократно просил сделать обновление показателей в реальном времени. Я много лет не программирую, ушел в совершенно иной вид деятельности и в настоящий момент возглавляю анимационную студию. Конечно же, я был обескуражен возникшей ситуацией с потерей данных, устроил разнос и прочее, но это к делу отношения не имеет.Ссылки были восстановлены, но вот счетчик меня смутил. Пока шло восстановление, цифры я большими группами собирал вручную, а теперь после того, как их обошел скрипт и выдал результат, они катастрофически не бились. На мои претензии программистам я получал ответ, что всё ок, хоть упроверяйся. Не желая сильно заморачиваться, я решил пойти по весьма странному пути: сделать обход ссылок при помощи Google.Sheets и посмотреть на результаты, а заодно проверить, действительно ли это столь мучительный процесс: обход нескольких сотен ссылок и получение данных о просмотрах. Потратил на свой эксперимент я несколько часов, выяснил, что дело это не хитрое, собрать данные в реальном времени достаточно просто, а скрипт на нашем сайте, действительно, работает криво и данные собирает неточно, теряя по дороге миллионы просмотров.
ImportXML и Vimeo Помятуя, что как-то делал себе вывод актуального курса доллара и евро, нашел старый документ и подглядел в нем удобную функцию Google.Sheets — это ImportXML (в Google есть 4 функций удобно утягивающих данные из сети: ImportXML, ImportDATA, ImportHTML, ImportFEED). В ячейке таблицы просто пишем »=ImportXML» и Google дает подсказку, как правильно вынимать необходимые данные. Я полез на сайт Vimeo и нашел странницу с API и описанием, где получить XML с данными ролика. Всё банально: http://vimeo.com/api/v2/video/00000000.xmlгде 00000000 — это id ролика (берется из адресной строки на Vimeo)
Открыв XML, я увидел, что всё, что мне нужно. В контейнере третьего порядка
=IMPORTXML («http://vimeo.com/api/v2/video/17589726.xml»,»//videos/video/stats_number_of_plays») В первых кавычках ссылка на XML, во вторых кавычках указываем XPath к нужному контейнеру. Подробнее о синтаксисе XPath можно прочитать здесь.ImportJSON и YouTube Чуть сложнее оказалось с YouTube. Да, они дают данные о ролике, но в контейнерах JSON. Найти сводный файл оказалось не сложнее, чем на Vimeo. Всё также не сложно: http://gdata.youtube.com/feeds/api/videos/00000000? v=1&alt=jsonгде 00000000 — это id ролика (берется из адресной строки на YouTube)
Но вот сам JSON для меня лично — история новая. Я попробовал к нему обращаться и так, и сяк, в результате подумал, что стоит поискать нечто вроде «ImportJSON» и не ошибся. Нашел скрипт, чтобы добавить такую фичу в Google.Sheet, добавил и сразу с JSON сдружился. Сам текст скрипта лежит здесь по ссылке.
Устанавливать скрипт в Google.Sheets надо так:1. Создаете новый Google Spreadsheet.2. Жмете на Tools → Script Editor.3. Жмете на Create script for Spreadsheet.4. Удаляете заготовку нового скрипта и вставляете текст нашего скрипта.5. Переименовываете его в ImportJSON.gs и сохраняете.6. Возвращаетесь в свой документ, где уже работает новая функция »=ImportJSON ()» в полном объеме.
Открыв JSON от YouTube, мы можем найти все необходимые нам данные о ролике. В контейнере
=ImportJSON («http://gdata.youtube.com/feeds/api/videos/GRNZ0wwNOTc? v=2&alt=json»,»/entry/yt$statistics/viewCount», «noHeaders») Вот и всё. Кстати, в итоге получилось, что Google.Sheets считает данные сотен роликов за… меньше, чем за одну минуту. Я был прав. Программисты просто водили меня вокруг пальца. Получить данные из контейнеров XML и JSON при помощи РНР задача еще менее хитрая, чем та, которую я перед собой поставил. Мало того, и YouTube, и Vimeo предлагают готовые РНР решения для разработчиков.Всем удачи! Надеюсь, эта короткая статья будет полезна.