понедельник, 27 июля 2020 г.

Библиотеки приложений google script. Парсим youtube.

Достаточно часто у программиста возникает необходимость (желание) один раз написать идеальный код, так чтобы в последующем можно было пользоваться результатами работы, не внося этот идеальный код в каждый проект снова. 
Даже если вы, пока что, не относите себя к матёрым, возникает стойкое желание собрать свои наработки в один большой, длинный скрипт, а во всех новых проектах обращаться к функциям внутри него. Это упрощает разработку, так как позволяет сэкономить кучу времени.
Даже для таких "запущенных" случаев у google есть ответ.
Очень полезный инструмент для разработчика. Рассмотрим, для примера, код позволяющий получать данные о youtube видео - такие как название, просмотры, лайки, дизлайки:
  
function getInfoParser(url) {
  let content = UrlFetchApp.fetch(url).getContentText()
  let views = +content.match(/<meta itemprop="interactionCount" content="(.*?)"/)[1]
  let name = content.match(/<meta name="title" content="(.*?)"/)[1]
  let likes = content.match(/likeStatus(.*?)\}/)[1].split('/')
  return({views:views,name:name,likes:+likes[0].replace(/\D/g,''),dislikes:+likes[1].replace(/\D/g,'')})
}
Данная функция получает на вход ссылку на видео, загружает страницу, достаёт нужную информацию, возвращает объект с информацией.
И вторая функция:


    
function getInfoApi(url){
  url = url.match(/v=(.*)/)[1]
  let item = YouTube.Videos.list('snippet,statistics', {'id':url}).items[0]
  let stat = item.statistics
  let snippet = item.snippet
  return ({views:stat.viewCount,name:snippet.title,likes:stat.likeCount,dislikes:stat.dislikeCount})
}
Данная функция делает абсолютно тоже самое, но получает информацию с помощью YouTube Data Api - https://developers.google.com/apps-script/advanced/youtube
И в первом случае и втором есть свои недостатки - стоит измениться чему нибудь в структуре страницы в первом случае ответа можно и не дождаться уже, во втором случае - существуют ограничения на использование api.
Вроде бы мало кода, но сколько плюсов в поиске. Но это всего лишь пример - главное сделать из этого библиотеку. Для этого нужно собрать в один скрипт две функции:

После сохранения файла - необходимо сохранить его в виде версии. Меню Файл-Версии...

Затем получить тот самый код, который позволит подключить к новому скрипту нашу библиотеку. Переходим в меню Файл-Свойства проекта, находим и копируем Идентификатор скрипта:


В новом скрипте по этому идентификатору его необходимо подключить в меню Ресурсы-Библиотеки:

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

Идентификатор мы сможем выбрать любой, но по умолчанию он будет совпадать с названием скрипта. Этот идентификатор нужен чтобы обращаться из нового скрипта к библиотеке.

Набрав в новом скрипте идентификатор, в моём случае youtube, можно вызывать функции библиотеки и получать нужную информацию. 


Достаточно важное замечание - если мы захотим поделиться нашей библиотекой - необходимо будет открыть доступ к скрипту хотя бы на чтение.
Делюсь - 1miGOAHkN3yG1lf0HVgA1SJ6UBw3mFV5KQK_7PI1FB4tHDu2n7oUtXiTa - код моей библиотеки.)

Будут вопросы - милости прошу в комментарии.

Комментариев нет:

Отправить комментарий