Содержание

Урок 6. Как выполнить запрос к API. API Яндекс.Директа. Версия 5

В этом уроке вы узнаете:

  1. Что нужно для выполнения запроса
  2. Какие есть форматы взаимодействия с API Директа
  3. Куда отправлять запросы
  4. Какие HTTP-заголовки используются
  5. Чем выполнять запросы
  6. Выполняем первый запрос
  7. Что дальше
  8. Полезные ссылки
  9. Вопросы

В этом уроке мы расскажем о форматах взаимодействия с API Директа и покажем, как выполнить первый запрос.

Пройдя предыдущие уроки, вы уже выполнили все условия, необходимые для успешного выполнения запросов:

  1. У вас есть аккаунт в Директе, и вы приняли пользовательское соглашение в разделе API веб-интерфейса Директа.

  2. Вы зарегистрировали приложение на Яндекс.OAuth.

  3. Вы подали заявку на доступ к API и получили одобрение заявки.

  4. Вы получили OAuth-токен.

  5. Вы включили Песочницу.

    Внимание. Поскольку вы подавали заявку на тестовый доступ, то работать сможете только с Песочницей и тестовыми данными.

Приложение обращается к серверу API Директа по сетевому протоколу HTTPS, выполняя POST-запросы. Каждый POST-запрос должен быть сформирован в определенном формате. В этом же формате сервер API вернет ответ.

API Директа поддерживает два формата:

Адрес для отправки запросов в Песочницу зависит от выбранного формата:

  • Для JSON-запросов — https://api-sandbox.direct.yandex.com/json/v5/{сервис}

  • Для SOAP-запросов — https://api-sandbox.direct.yandex.com/v5/{сервис}

  • WSDL-описание находится по адресу https://api-sandbox.direct.yandex.com/v5/{сервис}?wsdl

Здесь {сервис} — имя сервиса, с которым вы хотите работать. Каждый сервис предназначен для работы с определенным классом объектов. Например, для управления рекламными кампаниями используется сервис Campaigns, и запросы к этому сервису нужно отправлять на следующие адреса:

Адрес для запросов является регистрозависимым — необходимо указывать все символы в нижнем регистре, в том числе и название сервиса, иначе возникнет ошибка.

Внимание. Адреса для работы с реальными рекламными материалами отличаются от адресов Песочницы: они начинаются с https://api.direct.yandex.com.

Для выполнения запросов к API вы можете разработать свое приложение на любом языке программирования. Пока вы учитесь, запросы можно выполнять любой программой для отправки POST-запросов — например, с помощью плагина для браузера или из командной строки с помощью утилиты cURL.

Приведенные здесь и далее примеры пригодны для использования с помощью утилиты cURL. Вы можете скорректировать предложенный код под ваше приложение на любом языке программирования.

Формат примеров для ОС Windows отличается: JSON-код заключен в двойные кавычки, а в самом коде экранированы все двойные кавычки. Например:

-d "{\"method\":\"get\",\"params\"...

Внимание. Не забудьте изменить токен и идентификаторы объектов в примерах на ваши данные.

Посмотрим, какие тестовые кампании создались в Песочнице. Обратите внимание на ключевые параметры запроса:

cURL
curl -k -H "Authorization: Bearer ТОКЕН" -d '{"method":"get","params":{"SelectionCriteria":{},"FieldNames":["Id","Name"]}}' https://api-sandbox.direct.yandex.com/json/v5/campaigns
cURL для Windows
curl -k -H "Authorization: Bearer ТОКЕН" -d "{\"method\":\"get\",\"params\":{\"SelectionCriteria\":{},\"FieldNames\":[\"Id\",\"Name\"]}}" https://api-sandbox.direct.yandex.com/json/v5/campaigns
Запрос
POST /json/v5/campaigns/ HTTP/1.1
Host: api-sandbox.direct.yandex.com
Authorization: Bearer ТОКЕН
Accept-Language: ru 
Client-Login: ЛОГИН_КЛИЕНТА
Content-Type: application/json; charset=utf-8

{
  "method": "get",
  "params": {
    "SelectionCriteria": {},
    "FieldNames": ["Id", "Name"]
  }
}
Ответ
HTTP/1. 1 200 OK
Connection:close
Content-Type:application/json
Date:Fri, 28 Jun 2016 17:07:02 GMT
RequestId: 1111111111111111112
Units: 10/20828/64000
Server:nginx
Transfer-Encoding:chunked

{
  "result": {
    "Campaigns": [{
      "Name": "Test API Sandbox campaign 1",
      "Id": 1234567
    }, {
      "Name": "Test API Sandbox campaign 2",
      "Id": 1234578
    }, {
      "Name": "Test API Sandbox campaign 3",
      "Id": 1234589
    }]
  }
}

Итак, вы выполнили первый запрос к API Директа. В следующих уроках мы подробно расскажем о принципах работы с данными в API и рассмотрим более сложные примеры.

Документация:
  1. Как приложение может взаимодействовать с API Директа?
  2. Какой HTTP-заголовок обязательно должен быть указан в запросе к серверу API Директа?
  3. Как сервер API Директа отличает запросы к тестовым данным от запросов к реальным данным?

как зарегистрировать приложение на Яндекс.

OAuth. API Яндекс.Директа. Версия 5

В этом уроке вы узнаете:

  1. Что такое OAuth-авторизация и OAuth-токен
  2. Как зарегистрировать приложение на Яндекс.OAuth
  3. Что дальше
  4. Полезные ссылки
  5. Вопросы

В этом уроке мы расскажем о первом шаге получения доступа к API Директа для приложения — о регистрации приложения на Яндекс.OAuth. О втором шаге — подаче заявки на доступ — вы узнаете в следующем уроке.

В предыдущем уроке вы создали аккаунт в Директе, который будете использовать как разработчик приложений. Теперь необходимо зарегистрировать приложение на Яндекс.OAuth — вы можете сделать это, даже если само приложение еще не создано.

OAuth-авторизация — это механизм, который позволяет приложению работать с данными пользователя от его имени без необходимости использовать пароль от аккаунта.

В процессе авторизации используются OAuth-токены, которые представляют собой строку с зашифрованными данными:

  • идентификатор пользователя;

  • идентификатор приложения, которому разрешен доступ к данным пользователя на сервисе;

  • набор прав — действий, доступных приложению.

Ваше приложение для работы с API Директа должно быть зарегистрировано на сервисе Яндекс.OAuth. Тогда пользователь сможет разрешить приложению доступ к своим рекламным материалам, а приложение — получить OAuth-токен. Токен необходимо указывать в каждом запросе к API — так Директ узнает, с каким аккаунтом сейчас будет работать приложение, и проверит наличие прав на выполняемые действия.



Внимание.
  • Каждый токен уникален, поскольку выдается для связки «приложение + пользователь». Невозможно получить два одинаковых токена или получить более одного токена для одной и той же связки.

  • Если приложение не передало токен в запросе к API, то сервер не позволит получить или изменить какие-либо данные.

Войдите на Яндекс под своим логином разработчика. На сервисе Яндекс.OAuth откройте страницу Создание приложения и заполните основные поля. Все поля в дальнейшем будут доступны для редактирования.

  • Название приложения — название, которое будут видеть все пользователи приложения.

  • Платформы — установите флажок Веб-сервисы и нажмите ссылку Подставить URL для разработки, чтобы вручную получать токены на этапе разработки и отладки приложения. В одном из следующих уроков мы расскажем, как получать токены.



  • Доступы — в разделе Яндекс.Директ (direct) установите флажок Использование API Яндекс.Директа (direct:api), чтобы получить доступ к управлению рекламными материалами. Набор доступов приложения также виден всем его потенциальным пользователям.

Примечание. Если вы хотите, чтобы приложение могло работать с данными пользователей и в других сервисах Яндекса — например, в Яндекс.Метрике, то вы можете отметить соответствующие права. В этом курсе мы рассматриваем работу только с Директом.



После заполнения полей нажмите кнопку Создать приложение. На странице вы увидите идентификатор и пароль, присвоенные приложению. Идентификатор приложения потребуется при заполнении заявки на доступ к API, а также для получения токена. Идентификатор и другие параметры доступны в веб-интерфейсе Яндекс.OAuth в любой момент.

Внимание. Регистрировать приложение на Яндекс.OAuth должен только разработчик. Пользователям вашего приложения не нужно проходить эту процедуру, даже если каждый пользователь работает со своим экземпляром (копией) приложения.

Итак, вы сделали первый шаг для получения доступа к API Директа — зарегистрировали приложение на Яндекс.OAuth. В следующем уроке мы расскажем, как подать заявку на доступ к API, а далее — как получить OAuth-токен.

  1. Как Директ узнает, с каким аккаунтом пользователя работает приложение через API?
  2. Для чего нужна регистрация на сервисе Яндекс.OAuth?
  3. Как отреагирует сервер API Директа, если в запросе не указан OAuth-токен?

Урок 9. Как перейти к реальной работе. API Яндекс.Директа. Версия 5

В этом уроке вы узнаете:

  1. Как получить полный доступ к API Директа
  2. Что делать, если заявка одобрена, но доступ не появился
  3. Адреса для запросов​
  4. OAuth-токены для пользователей приложения
  5. Задание
  6. Что дальше
  7. Полезные ссылки
  8. Вопросы

Вы узнали, как работать с API Директа, имеете опыт управления кампаниями в Песочнице и после многих часов программирования, наконец, разработали первое приложение. Что нужно, чтобы ваше приложение могло работать не только на тестовой площадке, но и с реальными данными пользователей Директа?

Так как вы уже зарегистрировали приложение на Яндекс.OAuth, вам осталось только подать заявку на полный доступ к API.

  1. Войдите на Яндекс под своим логином разработчика.

  2. В веб-интерфейсе Директа перейдите в раздел API на вкладку Мои заявки.

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



При заполнении заявки обратите внимание на раздел Технические данные о приложении. Укажите в нем достоверные сведения. В разделе Опишите схему взаимодействия вашего приложения с Директом приведите сценарий работы с API. Не требуется прикладывать код приложения или полное ТЗ с алгоритмами работы, которые являются коммерческой тайной вашей компании. Достаточно описать, какие сервисы и методы API Директа используются в приложении, в какой последовательности приложение вызывает методы, как часто вызывается каждый метод (раз в минуту, раз в час и т. д.) и для каких целей выбрана именно эта частота. Расскажите, как приложение учитывает ограничения API Директа, как обрабатывает ошибки. Эта информация позволит нам понять корректность работы приложения с API, а также оповещать вас об изменениях в API, затрагивающих именно ваше приложение.

Если в ответ на запрос к API вы получаете ошибку, проверьте, на какой адрес приложение отправляет запрос: возможно, указана не та версия API или не тот сервис. Убедитесь, что токен был получен для именно для того пользователя Директа, к чьим данным обращается приложение.

Адреса для работы с реальными рекламными материалами отличаются от адресов Песочницы. Не забудьте поменять адреса в приложении:

  • Для JSON-запросов — https://api.direct.yandex.com/json/v5/{сервис}

  • Для SOAP-запросов — https://api.direct.yandex.com/v5/{сервис}

  • WSDL-описание находится по адресу https://api.direct.yandex.com/v5/{сервис}?wsdl

Здесь {сервис} — имя сервиса, с которым вы хотите работать.

В настоящее время доступны некоторые методы предыдущих версий API Директа. Адреса предыдущих версий отличаются от адресов версии 5.



В предыдущих уроках вы использовали в запросах к API отладочный токен, полученный вручную. Теперь необходимо реализовать удобный для реальных пользователей механизм получения токена. С точки зрения пользователя процедура получения токена должна выглядеть так:

  1. Приложение открывает для пользователя специальную страницу сервиса Яндекс.OAuth — страницу запроса доступа.

  2. Пользователю необходимо войти на Яндекс под своим логином в Директе (если он еще не сделал этого).

  3. На странице запроса доступа пользователь нажимает кнопку Разрешить.

  4. В зависимости от настроек приложения, Яндекс.OAuth перенаправляет пользователя на адрес, указанный в параметре Callback URL, или возвращает пользователя в приложение.

Яндекс.OAuth генерирует токен и передает его приложению в автоматическом режиме. В Яндекс.OAuth предусмотрено несколько способов передачи токена, которые подходят для разных типов приложений: веб-сервис, настольное приложение (программа для компьютера), мобильное приложение и др. Все способы подробно описаны в документации Яндекс.OAuth.

  1. Оформите заявку на полный доступ к API Директа.

  2. Зарегистрируйте тестового пользователя Директа. Для нового пользователя создайте в веб-интерфейсе рекламную кампанию и примите пользовательское соглашение в разделе API.

  3. Получите OAuth-токен для тестового пользователя.

  4. Получите реальные кампании тестового пользователя — выполните запрос к API от его имени.

Теперь вы знаете, как управлять реальными рекламными материалами, используя API Директа. В следующем уроке мы расскажем о системе ограничений, применяемой в API, и приведем рекомендуемый сценарий работы приложения.

  1. Ваше приложение готово к работе с реальными данными. Как теперь приложение должно получать токены для пользователей?
  2. Что нужно сделать, чтобы получить полный доступ вместо тестового для своего приложения к API Директа?
  3. На какой адрес приложение должно отправлять запросы для работы с реальными данными?

Работа с Яндекс.

Картами на C#, через Яндекс.API / Habr

Здравствуйте. Дня три назад, на работе, мы преступили к проекту, в котом требовалось использование карт. Немного проведя анализ, выбор стал очевидным – это будут Яндекс.Карты. Один из главных критериев, который повлиял на выбор – хорошее покрытие города и более полная нумерация объектов. Наверное карты Google и преобладают перед Яндексом, но только не в нашем городе. В Алмате (РК) большинство людей, из тех, кого я знаю используют Яндекс.Карты либо карты от Nokia. Но так как у карт еще есть хорошие API, то выбор был очевидным.



С чего начать?

Это был первый вопрос, который возник у меня в голове. Я не стал сразу бросаться и писать кучу ненужного кода, а решил посмотреть, как это реализовали люди. Так как у Яндекса API реализованы на JavaScripte, то искать для C# у них в документации было бесполезно. Да и поиск по другим сайтам мне много информации не принес. Пришлось собирать все по крупицам. Несколько статей прочел здесь на Habrahabre, часть пришлось переписывать с JavaScriptа, либо додумывать самому.

Что получилось

В итоге всех стараний получилась библиотека, написанная полностью на C# и умеющая:


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

Вот пример того, с какими полигонами она может работать:


* На рисунке один полигон.

Идей еще очень много и это все будет постепенно реализовываться.

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

Заключение

Все исходные коды лежат в свободном доступе на GitHub (

github.com/kidinfo/YandexAPI

)

Так же в проекте есть примеры по всем функциям библиотеки.

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

Спасибо за уделенное мне внимание.

Условия использования сервиса «API Яндекс.Карт»

Настоящие Условия использования сервиса «API Яндекс.Карт» (далее — Соглашение) представляет собой предложение ООО «ЯНДЕКС» (далее — Яндекс) пользователю сети Интернет (далее — Пользователь) использовать сервис «API Яндекс.Карт» (далее — «Сервис») на изложенных ниже условиях:

1.1. Использование Пользователем Сервиса регулируется настоящим Соглашением, а также

  • Пользовательским соглашением сервисов Яндекса, размещенным по адресу: https://yandex.ru/legal/rules,
  • Лицензией на использование поисковой системы Яндекса, размещенной по адресу: https://yandex.ru/legal/termsofuse,
  • Политикой конфиденциальности, размещенной по адресу: https://yandex.ru/legal/confidential,
  • Условиями использования сервиса Яндекс. Карты, размещенным по адресу: https://yandex.ru/legal/maps_termsofuse,
  • Условиями использования сервиса Яндекс.Народная карта, размещенным по адресу: https://yandex.ru/legal/pmap_termsofuse, и
  • Условиями использования сервиса «API Поиска по организациям», размещенным по адресу: https://yandex.ru/legal/geosearch_api.

(далее вместе именуются – «Регулирующие документы»).

Пользователь обязуется ознакомиться со всеми Регулирующими документами и самостоятельно несет риск такого неознакомления.

1.2. К настоящему Соглашению и отношениям между Яндексом и Пользователем, возникающим в связи с использованием Сервиса, подлежит применению законодательство Российской Федерации.

1.3. Пользователь самостоятельно несет ответственность за соблюдение им Законодательства при использовании Сервиса. Везде по тексту настоящего Соглашения, если явно не указано иное, под термином «Законодательство» понимается как законодательство РФ, так и законодательство места пребывания Пользователя или места совершения им юридически значимых действий в соответствии с настоящим Соглашением. Если использование Пользователем какой-либо возможности, предоставляемой Сервисом, нарушает законодательство места пребывания Пользователя, Пользователь обязуется воздержаться от использования Сервиса.

1.4. Используя Сервис, получив API-ключ, разместив код Сервиса на сайте Пользователя или в приложении Пользователя (при условии передачи HTTP заголовка Referer, позволяющего однозначно идентифицировать сайт или приложение Пользователя, для мобильных приложений Referer должен передаваться в виде http://идентификатор_приложения_в_сторе.ymapapp), воспользовавшись любой иной функциональной возможностью Сервиса, Пользователь выражает свое полное и безоговорочное согласие со всеми условиями Регулирующих документов и обязуется их соблюдать. Использование Сервиса на иных условиях, нежели указано в настоящем Соглашении, возможно только по письменному согласованию с Яндексом. В случае несогласия с условиями Регулирующих документов Пользователь не имеет права использовать Сервис.

2.1. Сервис представляет собой набор инструментов и интерфейсов программирования, которые дают возможность взаимодействия с сервисом «Яндекс.Карты» и сервисом «Яндекс.Народная карта», в том числе с Данными этих сервисов, и возможность использования функциональности указанных сервисов на сайте (-ах) или приложениях Пользователя.

2.2. Термины и определения.

«Данные» — сведения, поступающие от Сервиса, предназначенные для показа Пользователям, включая, но не ограничиваясь, картографические произведения, спутниковые снимки, иные фотоснимки и пользовательские данные.

«Правообладатели» — лица, которым на законном основании принадлежат права на Данные.

«Геокодирование» — функция Сервиса, осуществляющая преобразования адресов объектов в их координаты на карте или спутниковом снимке и, наоборот, осуществляющая предобразование координат на карте или спутниковом снимке в адреса объектов.

«Построение маршрута» — функция Сервиса, предоставляющая возможность автоматического прокладывания маршрутов на Сервисе.

«Показ Панорам» — функция Сервиса, предоставляющая возможность поиска и показа фотографической панорамы местности.

«API-Ключ» — уникальный идентификатор, выдаваемый Пользователю, позволяющий получить доступ к функциям Сервиса со своего сайта или мобильного приложения.

«Static API Яндекс.Карты» — серверный API предоставляющая возможность получения Данных в виде статического изображения.

«Конструктор карт» — инструмент Сервиса, предоставляющий возможность создавать карты c объектами Пользователя.

«Рейтинг и Отзывы организации» — функция Сервиса, предоставляющая возможность размещения на странице интернет-ресурса Пользователя информационного блока (виджета), содержащего сведения о рейтинге организации и отзывах, отображаемых в карточке организации пользователя сервиса Яндекс.Бизнес.

«JavaScript API Яндекс.Карт включая Плеер Панорам» — программная библиотека Сервиса, предоставляющая возможность работы с Сервисом в браузере, которая включает в себя функции Геокодирования, Построения маршрута и Показа Панорам.

«Мобильный SDK MapKit» — набор средств разработки, предоставляющий возможность работы с Сервисом в мобильных приложениях для iOS и Android.

«Геокодер» — серверный API, предоставляющий возможность для доступа к функции Геокодирования Сервиса.

2.3. Использование Сервиса разрешается только при соблюдении следующих условий:

2.3.1. Для использования JavaScript API Яндекс.Карт включая Плеер панорам, Геокодера, Мобильного SDK MapKit, Static API Яндекс.Карты, Конструктора карт Пользователь обязан зарегистрироваться на сайте Яндекса «Кабинет разработчика», доступном по адресу: https://developer.tech.yandex.ru, по установленной форме и получить API-Ключ.

2.3.2. После получения API-Ключа Пользователю необходимо разместить код вызова Сервиса на сайте или в приложении с указанием API-Ключа. Яндекс вправе по своему усмотрению отказать в доступе к Сервису без объяснения причин.

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

2.3.4. Пользователь может использовать Данные, функции и инструменты, полученные при помощи Сервиса, только в рамках функциональности, предоставляемой Сервисом.

2.3.5. Яндекс вправе по своему усмотрению отказать в доступе к Сервису без объяснения причин. Пользователь не имеет права использовать любые программы, устройства или иные средства, позволяющие получить API-Ключ автоматическим путем или иным образом с нарушением процедуры, установленной Яндексом.

Яндекс оставляет за собой право устанавливать любые лимиты и ограничения, включая далее перечисленное, но не ограничиваясь этим: на размеры, объем, цветовое оформление и число изображений карты, схемы или спутниковых снимков, предоставляемых посредством Сервиса, и может менять их по собственному усмотрению, без предварительного уведомления Пользователей.

2.3.6. Пользователь передает Яндексу право использования информации и объектов (схемы проезда, объекты на карте и прочее), которые Пользователь самостоятельно разместил при помощи API Конструктора карт, любыми способами в полном объеме. Размещенные Пользователем с использованием Сервиса информация и объекты могут быть использованы на иных сервисах и ресурсах Яндекса, а также с согласия Яндекса на ресурсах третьих лиц. В случае если Пользователь не вправе предоставить Яндексу право использования какой-либо информации или объектов подобным способом, он не вправе размещать их при использовании Сервиса. Права на базу данных, являющуюся совокупностью информации и объектов, созданную с использованием Сервиса, принадлежат Яндексу.

2.3.7. Пользователь настоящим уведомлен и согласен с тем, что при использовании Пользователем Сервиса Яндексом в автоматическом режиме будет собираться, передаваться и храниться на серверах Яндекса включая, но не ограничиваясь, следующая информация: IP-адрес и ID-адрес устройства посетителей сайтов или приложений Пользователя, геолокационная информация о посетителях сайтов или приложений Пользователя. Пользователь гарантирует, что им были получены соответствующие согласия от посетителей сайтов или приложений Пользователя на сбор, передачу и хранение указанной информации на серверах Яндекса.

2.3.8. Пользователь обязуется ссылаться на Яндекс, как на правообладателя Сервиса:

2.3.8.1. Пользователь обязуется не двигать, не скрывать, не видоизменять и не перекрывать другими элементами ссылку на Условия использования сервиса Яндекс.Карты: https://yandex.ru/legal/maps_termsofuse, копирайты и логотип Яндекса на карте.

2.3.8.2. Пользователь обязуется разместить в своем мобильном приложении в разделе «О программе» или ином подобном разделе мобильного приложения, гиперссылку на Условия использования сервиса Яндекс.Карты, размещенные по адресу: https://yandex.ru/legal/maps_termsofuse, следующего вида — «Условия использования сервиса Яндекс.Карты».

2.3.9. Геокодирование, Построение маршрута и Показ Панорам:

2.3.9.1. Геокодирование может быть использовано только для сайтов или приложений, использующих Сервис. Пользователь имеет право обрабатывать полученные координаты исключительно для отображения их посредством Сервиса. При этом количество обращений к Геокодеру не должно превышать 1 000 запросов в сутки.

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

2.3.9.3. Показ Панорам может быть использован только для сайтов или приложений, использующих Сервис.

2.3.9.4. Количество обращений к Геокодированию, Построению маршрута и Показу Панорам не должно превышать 25 000 запросов для одного сайта/ приложения в сутки. Одно обращение к Геокодированию или Построению маршрута приравнивается к одному запросу, одно обращение к Показу Панорам – к пяти запросам соответственно.

2.3.10. «Рейтинг и Отзывы организации»:

2.3.10.1. Функция «Рейтинг и Отзывы организации» предоставляет Пользователю возможность отображать сведения о рейтинге организации и поступающие от сервиса Яндекс.Карты отзывы об организациях, опубликованные пользователями сервиса Яндекс. Карты в соответствии с Условиями использования сервиса Яндекс.Карты (https://yandex.ru/legal/maps_termsofuse).

2.3.10.2. Функция «Рейтинг и Отзывы организации» содержит информацию, размещенную в сервисе Яндекс.Бизнес в соответствии с пунктом 2.4 Условий использования сервиса Яндекс.Бизнес (https://yandex.ru/legal/clients_termsofuse).

2.3.10.3. Яндекс не несет ответственности за содержание информации, предоставленной сервисом Яндекс.Бизнес, ее соответствие законодательству, полноту, корректность и достоверность. Яндекс не несет ответственности за размещение Пользователем (в том числе, в недобросовестных целях) информации, несоответствующей действительности, неактуальной, нарушающей права и законные интересы третьих лиц, а также не подтверждает и не опровергает соответствие законодательству, корректность и достоверность предоставленной сервисом Яндекс.Бизнес информации.

2.3.11. ОГРАНИЧЕНИЯ. Используя Сервис, Пользователь не имеет права:

2.3.11.1. Изменять, декомпилировать и/или каким-либо образом модифицировать программный код, полученный посредством Сервиса.

2.3.11.2. Удалять, изменять порядок или сортировку, скрывать или модифицировать Данные, а также любую содержащиеся в Сервисе или Данных информацию, включая, но не ограничиваясь, рекламно-информационные материалы, товарные знаки, логотипы, ссылки или иные указания на Правообладателей, равно как и любые другие уведомления и/или информацию, передаваемые Сервисом вместе с Данными.

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

2.3.11.4. Сохранять, обрабатывать и видоизменять полученные через Сервис Данные (включая результаты ответа на запросы Геокодирования и Построения маршрута), за исключением случаев временного хранения (кэширования) результатов ответа на запросы Геокодирования и Построения маршрута исключительно для целей улучшения функциональности и работоспособности Сервиса и только для использования в рамках возможностей, предоставляемых Сервисом, на срок не более 30 дней.

2.3.11.5. Использовать Сервис для создания сайтов/ приложений, нарушающих законодательство РФ или иное применимое законодательство, права и законные интересы третьих лиц, а также противоречащих требованиям п. 4 Пользовательского соглашения Яндекса.

2.3.11.6. В случае, если сайт или приложение Пользователя имеет суточную аудиторию более 100 000 пользователей, Пользователь перед началом использования Сервиса обязан связаться с Яндексом путем направления электронного письма по адресу [email protected], в котором должен указать название сайта или приложения и суточную аудиторию пользователей. Указанные действия необходимы для обеспечения максимальной производительности подобных сайтов или приложений Пользователя.

2.3.12. Изменения и версии. Яндекс оставляет за собой право изменять/исправлять или обновлять Сервис в любой момент, без предварительного уведомления Пользователей. При выпуске очередной стабильной версии Яндекс сообщает о её выпуске на своем сайте. После выпуска новой версии Яндекс не гарантирует стабильность и продолжительность работы устаревшей версии. Пользователь, не согласный использовать обновленную версию Сервиса, несет возможные риски использования устаревшей версии Сервиса, либо может прекратить использование Сервиса, удалив соответствующий код с сайта (-ов)/ приложения Пользователя.

2.3.13. Реклама. Яндекс оставляет за собой право включить рекламные материалы по своему усмотрению в состав Данных, предоставляемых и отображаемых Сервисом.

2.3.14. При превышении лимитов использования, указанных в п. 2.3.11 Яндекс вправе прекратить доступ Пользователя к Сервису путем блокировки API-ключа, выданного Пользователю, и/или IP-адреса и/или HTTP referer.

Использование Данных для целей, указанных в пункте: 2.3.11.3., а также с превышением лимита запросов допускается с использованием Платного API Карт на условиях, расположенных по адресу: https://tech.yandex.ru/maps/commercial.

3.1. Исключительное право на Сервис принадлежит Яндексу. Исключительные права на Данные (включая картографические данные, снимки, рекламные материалы, любые товарные знаки, логотипы или фирменные наименования) принадлежат Яндексу или Правообладателям. Настоящее Соглашение не дает Пользователю каких-либо прав на использование Сервиса или Данных помимо тех возможностей, которые предоставляются непосредственно в интерфейсе Сервиса в соответствии с настоящим Соглашением.

3.2. Используя Сервис, Пользователь предоставляет Яндексу право использовать логотип, товарный знак и/или фирменное наименование Пользователя и/или сайта/ приложения Пользователя в информационных, рекламных и маркетинговых целях, связанных с сервисами «Яндекс.Карты», «Яндекс.Народная карта» и/или «API Яндекс.Карт», в частности, без необходимости получения дополнительного согласия Пользователя и без выплаты ему какого-либо вознаграждения за такое использование.

4.1. Сервис (включая Данные и иную информацию, предоставленную с его помощью) предоставляется Яндексом «как есть». Яндекс не гарантирует соответствие Сервиса и Данных целям и ожиданиям Пользователей, бесперебойную и безошибочную работу Сервиса в целом и отдельных его компонентов и/или функций, а также не гарантирует достоверность, точность, полноту и своевременность Данных, получаемых с помощью Сервиса. Яндекс не несет ответственности и не возмещает никакие убытки, в том числе никакой ущерб, прямой или косвенный, причиненный Пользователю Сервиса или третьим лицам в результате использования или невозможности использования Сервиса, отдельных его компонентов и/или функций, а также в результате использования или невозможности использования Данных, получаемых с помощью Сервиса.

4.2. Пользователь самостоятельно и в полном объёме несёт ответственность за использование и сохранность своего API-Ключа. Пользователь не имеет права получать API-Ключ для третьих лиц, передавать или предоставлять его третьим лицам. Яндекс не несёт ответственности за несанкционированное использование API-Ключа третьими лицами. Все действия, совершенные на Сервисе с использованием принадлежащего Пользователю API-Ключа, считаются совершенными Пользователем.

4.3. Пользователь должен самостоятельно оценивать достоверность, надежность, полноту или полезность Данных и самостоятельно несёт все риски, связанные с использованием (невозможностью использования) Сервиса и Данных, а также ответственность перед третьими лицами за свои действия при использовании Сервиса и Данных, в том числе за то, что действия соответствуют требованиям Законодательства и не нарушают права и законные интересы третьих лиц. Пользователь самостоятельно и за свой счет обязуется урегулировать все претензии и/или иски третьих лиц, связанные с действиями Пользователя при использовании Сервиса.

4.4. Пользователь понимает и соглашается с тем, что использование, указание или размещение в Сервисе любых сведений о каких-либо организациях, предприятиях, лицах, товарах, услугах, в том числе обозначений и/или ссылок в составе Данных и Сервиса, носит исключительно информационный характер и не является выражением их особой поддержки, одобрения или рекомендаций со стороны Яндекса.

5.1. Яндекс имеет право без уведомления по собственному усмотрению прекратить или приостановить доступ Пользователя к Сервису или его отдельным функциям с использованием его учетной записи и/или API-ключа без объяснения причин, в частности, в случае нарушения Пользователем требований настоящего Соглашения.

5.2. Все вопросы и претензии, связанные с использованием/невозможностью использования Сервиса, должны направляться через форму обратной связи по адресу https://tech. yandex.ru/maps/doc/geocoder/desc/feedback/troubleshooting-docpage.

5.3. Яндекс вправе в любое время без уведомления Пользователя изменять текст настоящего Соглашения, Регулирующих документов и/или любые иные условия использования Сервиса. Действующая редакция настоящего Соглашения размещается по адресу: https://yandex.ru/legal/maps_api. Риск неознакомления с новой редакцией Соглашения или Регулирующих документов несет Пользователь, продолжение использования Сервиса после изменения условий Соглашения и/или Регулирующих документов считается согласием с их новой редакцией.

6.1. Актуальная информация о правообладателях и обладателях информации доступна по адресу: https://yandex.ru/legal/right_holders.

6.2. В состав MapKit в качестве отдельных его компонентов входит стороннее программное обеспечение. Актуальная информация о таком стороннем программном обеспечении в составе MapKit доступна по адресу: https://yandex.ru/legal/maps_api/components.

Государственная граница между Российской Федерацией и республикой Абхазия, Грузией, республикой Южная Осетия, Эстонской республикой подлежит международно-правовому оформлению.

Что такое язык программирования R и как работать с API Google AdWords и Яндекс.Директ с его помощью

Если вы ведете несколько небольших рекламных кампаний в одном рекламном аккаунте, то для анализа их эффективности вам достаточно посмотреть нужные данные в Google AdWords / Яндекс.Директ и Google Analytics / Яндекс.Метрике. Но чтобы даже бегло оценить эффективность пары десятков рекламных кампаний в нескольких аккаунтах таким способом, вы потратите в лучшем случае несколько часов. А на детальный анализ могут уйти дни и недели, в течение которых рекламный бюджет будет тратиться и, возможно, далеко не самым эффективным образом.

В этой статье я расскажу, как автоматизировать работу с данными из Google AdWords и Яндекс.Директ с помощью двух пакетов, расширяющих базовые возможности языка R.

Я постарался изложить материал так, чтобы его мог использовать любой пользователь — даже тот, кто пока не написал ни одной строчки кода. Для этого вполне достаточно понимания, что такое функция, хотя бы в плоскости электронных таблиц Microsoft Excel или Google Spreadsheets. Возможно, для вас этот материал станет своеобразным толчком к изучению R.

Содержание статьи:

Что такое язык R

R — это язык программирования для статистической обработки данных и работы с графикой, а также свободная программная среда вычислений с открытым исходным кодом. Именно такое определение вы можете найти на страницах Википедии.

R был создан двумя сотрудниками статистического факультета Оклендского Университета Робертом Джентелменом и Россом Айхэкой. Свое название язык получил по первой букве имен его создателей.

Как я открыл для себя R или от 1С до R за 10 лет

В начале статьи позволю себе небольшое отступление о том, как я вообще пришел к обработке данных в R.  Многие сейчас говорят о Big Data, но на самом деле не так много компаний, которым недостаточно простых табличных агрегаторов вроде Excel. Уверен, что мой путь поможет вам разобраться, на каком вы сейчас этапе.

С 2007 по 2009 год основной частью моей работы была разработка технических заданий для программистов 1С на внедрение каких-либо новых отчетов. Поскольку в то время была 1С версии 7.7., говорить о каком-либо интегрированном конструкторе отчетов не приходилось. Чтобы получить данные в каком-то новом срезе, приходилось писать ТЗ и ждать его обработки от программистов.

За пару лет я довольно неплохо разобрался с Microsoft Excel и поставил одно из своих последних ТЗ программистам 1С. Эта была одна большая выгрузка сырых данных по чекам, содержащая все возможные поля. Таким образом я  переехал из 1С в Excel, и табличный агрегатор от Microsoft был моим верным оруженосцем ближайшие несколько лет.

Возможно, я и сейчас бы использовал Excel, если бы он не был так прожорлив даже на выборке среднего объема. Если вам надо обработать пару десятков тысяч строк то, Excel с этим справится быстро и эффективно. Но наиболее внимательные пользователи офиса Microsoft заметили, что количество строк на рабочем листе последний раз поднималось в версии 2007 года и до сих пор даже в самых новых версиях составляет 1 048 576 строк и 16 384 столбца. И дело не в том, что Microsoft жалко добавить большее количество строк. Просто Excel слишком прожорлив на таких объемах данных, и обработка даже нескольких сотен тысяч строк займет всю вашу оперативную память. А в современном мире таблицей в миллион строк вряд ли кого-то удивишь.

Именно поэтому примерно в 2012 году я начал учить SQL. На обработку миллиона строк, даже при сложных запросах с использованием JOIN, в любой из популярных систем управления базами данных (СУБД) при нормально проиндексированных таблицах у вас уйдет не более минуты. Таким образом вопрос хранения и обработки данных я закрывал с помощью SQL, а для визуализации по прежнему использовал Excel.

В 2015 году Microsoft выпустил платформу Power BI — одно из лидирующих BI решений на данный момент. По сути, Power BI появилась как сбор надстроек над Excel, Power View (для создания интерактивных дашбордов), Power Query (для загрузки данных из различных источников) и PowerPivot (для создания модели данных и связи между таблицами). Это очень удобный инструмент для загрузки данных из множества различных источников, их очистки, построения модели данных и визуализации. Мы в Netpeak очень активно используем данную платформу для аналитики рекламных кампаний и эффективности отдела контекстной рекламы и  нашего корпоративного блога.

Т.к. задачу хранения данных закрывают СУБД (мы используем MySQL и Google BigQuery), а вопрос визуализации на 80% закрывает Power BI, оставалась проблема автоматизации трансфера данных. Следовательно, нужен был инструмент, в котором можно автоматизировать трансфер и прочие рутинные операции, выполняемые вручную.

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

Глоссарий — немного терминологии

В статье неоднократно будут упоминаться некоторые термины. Чтобы не было неоднозначности в понятиях, в этом блоке я дам несколько определений.

Функция — сгруппированный набор команд, возвращающий какое-либо значение, функции в R. Как я уже писал выше, функции в R аналогичны функциям в MS Excel.

Аргументы — практически любая функция запрашивает на вход какие-то значения, на основе которых потом производит какие-то действия и вычисления. Все эти значения вы присваиваете аргументам функции. Например, вспомним функцию ВПР в Excel, ее синтаксис выглядит следующим образом:

=ВПР(искомое значение; диапазон для поиска значения; номер столбца в диапазоне с возвращаемым значением; [точное или приблизительное совпадение — указывается как 0/ЛОЖЬ или 1/ИСТИНА])

Все значения, которые вы указываете внутри скобок после имени функции — это и есть аргументы функции. Функция ВПР имеет 3 обязательных аргумента: искомое значение, диапазон для поиска значения, номер столбца в диапазоне с возвращаемым значением; и один необязательный аргумент — точное или приблизительное совпадение.

Оператор присваивания — чтобы присвоить какому-либо объекту какое-то значение, в языке R существует оператор присваивания «<-». Например, чтобы создать переменную X, которая будет содержать значение 10, необходимо выполнить следующую команду.

X

Вектор — в языке R представляет собой именованный одномерный массив, содержащий набор однотипных элементов (числовые, логические, либо текстовые значения — никакие сочетания не допускаются). Для создания векторов небольшой длины используется т.н. функция конкатенации c() (от «concatenate» — объединять, связывать). В качестве аргументов этой функции через запятую перечисляют объединяемые в вектор значения.

Например, вектор camp_name, содержащий названия рекламных кампаний, можно создать следующим образом:

camp_name

DataFrame — класс объектов в R, соответствующий привычным для нас таблицам. На самом деле это набор векторов одной длины, но именно так мы и представляем все таблицы, с которыми привыкли работать.

Пример встроенного в R дата фрейма mtcars. Данные были извлечены из журнала Motor Trend US 1974 года и включают расход топлива, 10 аспектов автомобильного дизайна и различных характеристик для 32 автомобилей (модели 1973-74):

Листинг примеров кода из статьи

В статье будут приведены примеры кода обращения к API Google AdWords и Яндекс.Директ на языке R. Все примеры вы можете копировать непосредственно из текста статьи или скачивать из репозитория на GitHub, перейдя по этой ссылке.

Установка языка R

Для усвоения изложенного в статье материала я рекомендую выполнять представленные примеры кода непосредственно на вашем ПК, поэтому для начала давайте установим R. ​

R является кроссплатформенным языком. Вы можете установить его как на Windows, так и на MacOS и Unix-подобные операционные системы.

Процесс установки не отличается от установки обычной программы. Он не требует никаких настроек, поэтому для установки достаточно перейти по этой ссылке, выбрать в верхней части страницы вашу операционную систему, скачать и установить R на свой ПК.

Что такое пакеты в R

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

Пакет для R — это модуль, содержащий набор функций и наборов данных. Основным репозиторием хранения пакетов для R является CRAN, и на момент написания этого абзаца в CRAN было доступно 12148 пакетов. Помимо CRAN огромное количество пакетов пользователи выкладывают в открытый доступ на GitHub. Как правило, там можно найти наиболее актуальные версии пакетов от их разработчиков, и сейчас на GitHub уже 77 тысяч репозиториев на языке R.

Установка и подключения пакетов на языке R

Чтобы воспользоваться функциями или наборами данных из какого-либо пакета, его предварительно необходимо установить. Для установки пакета из CRAN достаточно воспользоваться функцией install.packages, которая имеет 1 обязательный аргумент — название пакета.

Давайте установим пакет devtools.

install.packages(«devtools»)

Пакет devtools содержит набор функций для разработки собственных функций на R, а также для установки пакетов из сторонних репозиториев, включая GitHub.

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

Чтобы установить пакет из GitHub в пакете devtools, есть функция install_github. Однако т.к. пакет devtools не входит в базовую комплектацию R, чтобы воспользоваться его функциями, необходимо предварительно подключить его к сессии R с помощью команды library.

#Подключаем пакет devtools
library(devtools)

#Устанавливаем пакет RAdwords
install_github(’jburkhardt/RAdwords’)

В данном случае функция install_github имеет также всего 1 обязательный аргумент — имя пользователя, автора репозитория на GitHub (https://github. com/jburkhardt) и название репозитория RAdwords (https://github.com/jburkhardt/RAdwords).

Получение подробной справки по работе с функциями пакета

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

Чтобы получить список функций пакета с описанием того, что каждая из функций делает, воспользуйтесь командой help и передайте в аргументе package название пакета, по которому хотите получить список функций. Например, чтобы получить справку по функциям пакета RAdwords, надо запустить следующую команду:

help(package = «RAdwords»)

В результате будет открыта html страница следующего содержания:

Если вам необходимо получить справку по какой-то одной конкретной функции, то можно в help передать ее название. Например, для получения справки по функции doAuth подключите пакет RAdwords с помощью функции library и запустите help.

help(«doAuth»)

R пакеты для работы с рекламными системами

RAdwords — пакет, позволяющий работать с API Google AdWords

Ссылка на официальную документацию RAdwords

Репозиторий на GitHub

Автор: Johannes Burkhardt

Установка пакета: devtools::install_github(’jburkhardt/RAdwords’)

Принцип работы с API AdWords

Google AdWords имеет довольно широкий API интерфейс для загрузки данных из вашего рекламного аккаунта, состоящий из 49 отчетов. Возможно, поначалу будет довольно сложно определить, какой именно из этих отчетов вам может понадобиться. В официальной документации для облегчения поиска нужного отчета приведена такая таблица:

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

Атрибуты — это поля, измерения или параметры, содержащие информацию о каких-либо настройках или константах, которые не изменяют группировку запрашиваемых данных. Например, такие настройки аккаунта, как валюта (поле AccountCurrencyCode), никак не поменяют количество строк, запрашиваемых из отчета «Campaign Performance Report».

Сегменты — также являются параметрами, но при этом меняют группировку запрашиваемых данных. Например, если запросить данные из отчета «Campaign Performance Report» с полем Date, которое является атрибутом, то запрашиваемые данные по эффективности кампаний будут сгруппированы по датам.

Метрики — количественные показатели, такие как клики, показы, общий объем потраченных средств и т.д.

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

Что требуется для работы с RAdwords

Для работы с пакетом RAdwords вам понадобится доступ к API Google AdWords. О том, как его получить, довольно подробно описано в справке.

Чтобы настроить доступ к API, вам потребуется идентификатор и секретный ключ клиента OAuth3. Под клиентом здесь подразумевается ваше клиентское приложение, а не клиентский аккаунт AdWords.

  1. Войдите в управляющий аккаунт и откройте страницу «Учетные данные» в Google Developers Console.
  2. В раскрывающемся меню проектов выберите «Создать проект». Затем укажите название проекта и нажмите кнопку «Создать».
  3. Выберите «Создать учетные данные», а затем — «Идентификатор клиента OAuth».
  4. Если система предложит указать название продукта, нажмите «Настроить окно запроса доступа», укажите запрашиваемую информацию и нажмите «Сохранить», чтобы вернуться к экрану «Учетные данные».
  5. В разделе «Тип приложения» выберите «Другие типы». Укажите название в появившемся поле.
  6. Нажмите кнопку «Создать». Появятся идентификатор и секретный ключ клиента OAuth3. Скопируйте и сохраните их. На следующем шаге их нужно будет добавить в файл конфигурации.

Основные функции пакета RAdwords

На самом деле в RAdwords не так много функций. Вот список основных из них:

  • doAuth — аутентификация в API. Для ее прохождения вам потребуется токен разработчика AdWords, идентификатор и секретный ключ клиента, созданного в Google Console на предыдущем шаге.
  • reports — возвращает вектор доступных отчетов в API в ответ на запрос.
  • metrics — возвращает вектор полей, доступных в отчете, в ответ на запрос.
  • statement — подготовка запроса к API AdWords.
  • getData — отправка запроса и получение данных из API.

Пример кода для получения данных из Google AdWords с помощью RAdwords

						
#Подключение пакета
library(RAdwords)

#Аутентификация
adwords_auth 
					

Открыть пример кода на GitHub

Функция statement формирует тело запроса. В аргументе select вы в виде вектора передаете название всех запрашиваемых полей. В аргумент report название отчета, из которого запрашиваете данные. В аргументы start и end передаете отчетный период.

Важно: дату необходимо перевести в формат ГГГГММДД. По умолчанию формат даты в R — ГГГГ-ММ-ДД. Вы можете либо в виде строки передать нужные даты, либо преобразовать любую дату с помощью функции format.Date, как в моем примере выше.

Функция getData запрашивает в агрумент clientCustomerId номер рекламного аккаунта AdWords в формате 000-000-0000.

В начале скрипта мы создали переменную adwords_auth и передали в нее с помощью функции doAuth учетные данные, необходимые для доступа к API Google AdWords. В аргумент google_auth функции getData необходимо передать сохраненные ранее учетные данные.

В аргумент statement следует передавать тело запроса, созданное с помощью функции statement.

После выполнения приведенного выше кода в рабочем окружении будет создан объект AdwData, который будет содержать таблицу (Data frame) со всей запрошенной из API информацией.

Еще несколько примеров работы с RAdwords

ryandexdirect — пакет позволяющий работать с API Яндекс.Директ и Яндекс.Метрикой

Ссылка на официальную документацию ryandexdirect

Репозиторий на GitHub

Автор: Алексей Селезнев

Установка пакета на Windows: devtools::install_github(«selesnow/ryandexdirect») Установка пакета на MacOS и Linux: devtools::install_github(«selesnow/ryandexdirect«, subdir = «utf8»)

Принцип работы с API Яндекс.Директ

5 версия API Яндекс.Директ, в отличие от предыдущей, довольно сильно напоминает API Google AdWords при работе с получением статистики.

Для получения статистики в 5 версии API используется сервис Reports. С помощью данного сервиса вы так же, как и из API AdWords, можете запрашивать любые поля, доступные в одном из 7 отчетов.

Отчеты в сервисе Reports.

Тип отчетаОписание
CAMPAIGN_PERFORMANCE_REPORT Статистика по кампаниям
ADGROUP_PERFORMANCE_REPORT Статистика по группам объявлений
AD_PERFORMANCE_REPORTСтатистика по объявлениям
CRITERIA_PERFORMANCE_REPORTСтатистика по условиям показа
CUSTOM_REPORTСтатистика с произвольными группировками
SEARCH_QUERY_PERFORMANCE_REPORTСтатистика по поисковым запросам

Наиболее общий тип отчета — CUSTOM_REPORT. Он не добавляет никаких дополнительных группировок.

Все поля отчетов разделены по типу:

  • фильтр — поле используется только для фильтрации данных и не может быть выведено в отчете.
  • сегмент — при выводе в отчете поле используется для группировки данных.
  • метрика — поле содержит числовое значение, рассчитанное в соответствии с заданными фильтрами и группировками.
  • атрибут — поле содержит фиксированное значение в соответствии с заданными группировками. Добавление такого поля в отчет не приводит к появлению новой группировки.

Например, поле CampaignId для типа отчета CUSTOM_REPORT является сегментом — если его добавить в отчет, данные будут сгруппированы по кампаниям. А для типа отчета ADGROUP_PERFORMANCE_REPORT поле CampaignId является атрибутом — данные уже сгруппированы по AdGroupId, а идентификатор кампании является для каждой группы фиксированным значением.

Актуальный список всех доступных полей с их типами для каждого отчета можно найти в официальной справке Яндекс.Директ.

Некоторые поля нельзя одновременно запрашивать в рамках одного запроса:

  • Поля Date, Week, Month, Quarter, Year являются взаимоисключающими: только одно из них может присутствовать в отчете.
  • Поля CriterionType, CriteriaType, AudienceTargetId, DynamicTextAdTargetId, Keyword, SmartBannerFilterId являются взаимоисключающими: только одно из них можно использовать для фильтрации данных.
  • Поле ClickType несовместимо с полями Impressions, Ctr, AvgImpressionPosition.
  • Поле ImpressionShare несовместимо с полями AdFormat, AdId, Age, CarrierType, Gender, MobilePlatform, RlAdjustmentId, TargetingLocationId, TargetingLocationName.
  • Поля Criterion, CriterionId, CriterionType несовместимы с полями Criteria, CriteriaId, CriteriaType.

Основные функции пакета ryandexdirect

На момент написания этой статьи в текущей версии пакета ryandexdirect доступно 20 функций. Ниже я перечислю основные, которые использую для работы со статистикой:

  • yadirGetToken — получение токена доступа к API. Токен является обязательным для работы со всеми остальными функциями пакета, таким образом вы авторизуетесь для работы с API Директа.
  • yadirGetReport — получение статистики из сервиса Report.
  • yadirGetDictionary — получение справочной информации, например справочник регионов или курсов валют.
  • yadirGetLogsData — получение сырых данных из Logs API Яндекс.Метрики.
  • yadirGetMetrikaGAData — получение данных из API Яндекс.Метрики, совместимых с Google Analytics Core Reporting API (v3).

Помимо работы со статистикой, с помощью ryandexdirect можно останавливать и возобновлять показы на уровне объявлений, ключевых слов и рекламных кампаний.

Для этого доступно 6 функций:

  • yadirStartAds — возобновить показы по объявлениям.
  • yadirStopAds — остановить показы по объявлениям.
  • yadirStartCampaigns — возобновить показы по рекламным кампаниям.
  • yadirStopCampaigns — остановить показы по рекламным кампаниям.
  • yadirStartKeyWords — возобновить показы по ключевым словам.
  • yadirStopKeyWords — остановить показы по ключевым словам.

Пример кода для получения статистики из Яндекс.Директ с помощью ryandexdirect.

Пример #1: Загрузка статистики по кампаниям в разрезе дат.

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

						
#Подключаем пакет
library("ryandexdirect")

#Получаем токен разработчика
tok 
					

Открыть пример кода на GitHub

Я думаю, приведенный код вполне понятен, но, на всякий случай, дам небольшие пояснения:

  • Изначально мы подключаем пакет с помощью команды library.
  • Далее получаем токен разработчика с помощью yadirGetToken и сохраняем его в объект tok. На самом деле не требуется каждый раз при обращении к API получать новый токен. Срок жизни одного токена — более 30 дней с момента последнего использования, поэтому получив его один раз, вы можете его использовать в скриптах в виде строки. Например, передать в объект tok значение полученного ранее токена вот так: tok <- «abcdefg1234567»
  • Запрашиваем данные из API функцией yadirGetReport.
  • Аргумент ReportType на входе требует название отчета, из которого вы будете запрашивать нужные вам поля. Поскольку мы планируем получить данные на уровне рекламных кампаний, наиболее подходящим отчетом для нас будет «CAMPAIGN_PERFORMANCE_REPORT».
  • В аргумент DateRangeType необходимо передать, как вы будете определять период. В нашем случае мы берем данные за последние 30 дней, но у вас есть довольно широкие возможности определения временного интервала:
    • TODAY — текущий день.
    • YESTERDAY — вчера.
    • LAST_3_DAYS, LAST_5_DAYS, LAST_7_DAYS, LAST_14_DAYS, LAST_30_DAYS, LAST_90_DAYS, LAST_365_DAYS — указанное количество предыдущих дней, не включая текущий день.
    • THIS_WEEK_MON_TODAY — текущая неделя, начиная с понедельника, включая текущий день.
    • THIS_WEEK_SUN_TODAY — текущая неделя, начиная с воскресенья, включая текущий день.
    • LAST_WEEK — прошлая неделя с понедельника по воскресенье.
    • LAST_BUSINESS_WEEK — прошлая рабочая неделя с понедельника по пятницу.
    • LAST_WEEK_SUN_SAT — прошлая неделя с воскресенья по субботу.
    • THIS_MONTH — текущий календарный месяц.
    • LAST_MONTH — полный предыдущий календарный месяц.
    • ALL_TIME — вся доступная статистика, включая текущий день.
    • CUSTOM_DATE — произвольный период. При выборе этого значения необходимо указать даты начала и окончания периода в параметрах DateFrom и DateTo.
    • AUTO — период, за который статистика могла измениться. Период выбирается автоматически в зависимости от того, произошла ли в предыдущий день корректировка статистики. Подробнее см. в разделе «Как получить актуальную статистику».
  • В аргумент FieldNames необходимо передать вектор, содержащий названия запрашиваемых из отчета полей. В нашем случае мы перечисляем список запрашиваемых полей: Date, CampaignName, CampaignId, Impressions, Clicks, Cost. Список всех доступных полей можно найти в официальной справке.

После выполнения приведенного кода в рабочем окружении будет создан объект data, который будет представлять таблицу (Data frame), содержащую запрошенные из API данные.

Пример #2: Загрузка статистики из рекламного аккаунта в разрезе стран и регионов.

Давайте немного усложним задачу и рассмотрим, как получить данные по показам, кликам и потраченным средствам из рекламного аккаунта в разрезе стран и регионов.

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

Выполним приведенный ниже код.

						
#Подключаем пакет
library("ryandexdirect")

#Получаем токен разработчика
tok 
					

Открыть пример кода на GitHub

Первое, что мы делаем после подключения пакета, получения токена и объявления нужных нам переменных — это запрос географического справочника с помощью функции yadirGetDictionary.

Справочник, который возвращает API, содержит всего 4 поля:

  • GeoRegionId — идентификатор региона.
  • GeoRegionName — название региона.
  • GeoRegionType — тип региона: World, Continent, Region, Country, Administrative area, District, City, City district, Village.
  • ParentId — идентификатор вышестоящего региона.

Как я уже писал выше, в ответ на запрос API вернет статистику по максимально точному месту нахождения пользователя, согласно представленной в GeoRegionType иерархии. Это значит, что если пользователь, кликнувший по объявлению, находится в селе (Village — нижний уровень иерархии географического справочника), которое занесено в географический справочник, то данные по количеству кликов и потраченным средствам будут отнесены к ID именно этого села.

Таким образом вы получаете из API данные из разных географических иерархий, села, города, области, регионы, континенты и т.д.

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

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

В результате мы преобразуем полученный ранее справочник к следующему виду:

  • AreaID — ID административного округа, в который входит текущий элемент справочника.
  • CountryID — ID страны округа, в который входит текущий элемент справочника.
  • GeoRegionId — ID текущего элемента справочника.
  • ParentId — ID родительского элемента.
  • GeoRegionType — тип региона текущего элемента справочника.
  • CountryName — название страны, в которую входит текущий элемент справочника.
  • GeoRegionName — название региона текущего элемента справочника.
  • AreaName — название административного округа, в который входит текущий элемент справочника.

После того, как мы преобразовали справочник, запрашиваем статистику из рекламного аккаунта, сгруппированную по полю LocationOfPresenceId. С помощью функции merge объединяем данные статистики с данными из географического справочника по полям LocationOfPresenceId и GeoRegionId.

Используя аргумент all.x = T, мы говорим о том, что необходимо к таблице X (данные статистики) присоединить таблицу Y (географический справочник) с помощью левого внешнего соединения (LEFT JOIN). То есть мы берем все строки из таблицы статистики и присоединяем к ним нужные строки из географического справочника по ключу GeoRegionId.

Таким образом мы получили отчет по первичным показателям эффективности рекламных кампаний в разрезе стран и регионов.

Еще несколько примеров работы с ryandexdirect

  • Как связать Яндекс. Директ с Microsoft Power BI
  • Как получить и обработать сырые данные из Яндекс.Метрики

Выводы

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

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

Успехов вам в построении автоматизации и изучении языка R. Если остались вопросы или нужен совет, буду рад ответить вам в комментариях.

Получаем данные из logs api яндекс метрики при помощи python

Получаем данные из logs api яндекс метрики при помощи python

В данной задаче есть 2 этапа:

  1. Получить токен для подключения яндекс метрики
  2. Установить и настроить библиотеку python для получения данных по api

Если у вас на компьютере нет python, то сначала прочтите статью «Как установить python на компьютер»

В этой статье я буду показывать работу в системе windows, с применением IDE jupyter notebook.

 

1) Получение токена для яндекс метрики

 

Создание приложения

Для начала работы у вас должен быть аккаунт в яндексе. После переходим по ссылке https://oauth.yandex.ru/ и нажимаем кнопку «зарегистрировать новое приложение».

 

Указываем название приложения, при желании можете заполнить описание.

 

В разделе «платформы» выберите пункт веб-сервисы и нажмите на ссылку «подставить url для разработки».

 

 

Ниже на этой же странице, в разделе «доступы» находим яндекс метрику и ставим галочку рядом с правом “Получение статистики, чтение параметров своих и доверенных счетчиков”

 

В конце страницы жмем кнопку «создать приложение».

 

Откроется страница с данными, вам нужно скопировать ID

 

Мы зарегистрировали приложение через которое будем работать с api метрики, теперь нужно получить OAuth токен. Для получения доступа к определенному счетчику метрики необходимо чтобы аккаунт получил токен. Не закрывайте эту страницу, далее она нам понадобится.

 

Получение токена

Для того, чтобы получить токен нужно перейти по следующей ссылке. На конце ссылки вместо букв ID вы должны указать ID своего приложения, который вы получили на предыдущем шаге https://oauth.yandex.ru/authorize?response_type=token&client_id=ID

После перехода по ссылке вам придет уведомление о том, что приложение запрашивает у вашего аккаунта разрешение на доступ к данным метрики, жмем разрешить.

После откроется окно в котором вы получите токен с помощью которого можно получить доступ к статистике метрики.

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

 

2 Установка python библиотеки для работы с logs api метрики

Будем использовать библиотеку которую написал Павел Максимов. Для начала её нужно установить, я буду рассказывать как это делается в windows, на других системах операции похожи. Для этого запускаем командную строку и пишем команду и жмем enter

pip install tapi-yandex-metrika

pip install tapi-yandex-metrika

Должна произойти установка, в конце которой вы получите уведомление Successfully installed.

 

Также понадобится библиотека simplejson, для её установки пишем

 

Теперь переходим в jupyter notebook и создаем новый документ. О том что такое jupyter notebook можно узнать из статьи “как установить python на компьютер”.

Копируем код из документации библиотеки. Страница github где копируем код. Ниже скриншот кода который копируем.

Вместо {ваш токен доступа} указываем токен, который мы получили ранее, а вместо {идентификатор счетчика} указываем номер счетчика метрики из которого хотим получить данные. (Токен и  номер счетчика пишем в кавычках)

В разделе params мы можем настроить запрос к logs api метрики, указать какие параметры хотим получить, а также указываем диапазон дат за который получаем данные.

 

В результате в ответ получаем строки с данными, пример ниже.

 

В таком виде работать с этими данными не очень удобно, поэтому создадим из них pandas dataframe.

Для этого импортируем pandas и проведем преобразование текста в json, а после загрузим в pandas dataframe.

 

В результате получим dataframe

 

Вы можете продолжить работать с полученными данными при помощи pandas, если вы не знакомы с pandas, то можете пройти вводный бесплатный курс на яндекс практикуме, чтобы ознакомиться с этой библиотекой, так же вот большая подборка материалов для изучения pandas

 

Скачать тетрадку jupyter notebook к этой статье можно по ссылке

Урок 6. Как сделать запрос API.

API Яндекс.Директа. Версия 5

В этом уроке вы узнаете:

  1. Что нужно для выполнения API-запроса
  2. Какие бывают форматы взаимодействия с API Яндекс.Директа?
  3. Куда отправлять запросы
  4. Какие заголовки HTTP используются
  5. Что я использую для отправки запросов
  6. Сделать первый запрос
  7. Что дальше
  8. Полезные ссылки
  9. Вопросы
форматы взаимодействия с Яндекс.Direct API и узнайте, как сделать свой первый запрос.

Пройдя предыдущие уроки, вы уже выполнили все условия для возможности делать запросы к API:

  1. У вас есть аккаунт Яндекс.Директа и вы приняли пользовательское соглашение в разделе API сайта Яндекс.Директ интерфейс.

  2. Вы зарегистрировали свое приложение в Яндекс.OAuth.

  3. Вы запросили доступ к API, и ваш запрос был одобрен.

  4. У вас есть токен OAuth.

  5. Вы включили песочницу.

    Внимание. Поскольку вы запросили пробный доступ, вы можете работать только с Песочницей и тестовыми данными.

Приложение обращается к API-серверу Яндекс.Директа по сетевому протоколу HTTPS, отправляя POST-запросы. Каждый запрос POST должен соответствовать определенному формату. Сервер API вернет ответ в том же формате.

API Яндекс.Директа поддерживает два формата:

URL для отправки запросов в Песочницу зависит от выбранного формата:

  • Для запросов JSON — https://api-sandbox.direct.yandex.com/json/v5/{service}

  • Для запросов SOAP — https://api-sandbox.direct.yandex.com/v5/{service}

  • Описание WSDL доступен по адресу: https://api-sandbox.direct.yandex.com/v5/{service}?wsdl

Здесь {service} — это имя службы, к которой вы хотите получить доступ. Каждый сервис предназначен для использования с определенным классом объектов. Например, для управления рекламными кампаниями можно использовать сервис «Кампании», отправляя запросы к этому сервису по следующим URL-адресам:

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

Внимание. URL-адреса для доступа к реальным рекламным данным отличаются от URL-адресов песочницы: они начинаются с https://api.direct.yandex.com.

Вы можете разработать приложение запроса API на любом языке программирования. В учебных целях вы можете использовать любую программу для отправки POST-запросов: например, вы можете использовать плагин для браузера или утилиту командной строки cURL.

Примеры, показанные здесь и ниже, подходят для утилиты cURL. Вы можете адаптировать предложенный код к своему приложению, написанному на любом языке программирования.

Формат примеров для Windows отличается: код JSON заключен в двойные кавычки, а все двойные кавычки внутри кода экранированы. Например:

  -d "{\"method\":\"get\",\"params\"...  

Внимание. Не забудьте заменить идентификаторы токена и объекта, использованные в образце код с вашими данными.

Посмотрим, какие тестовые кампании были созданы в Песочнице. Обратите внимание на ключевые параметры запроса:

cURL
  curl -k -H "Авторизация: Bearer TOKEN" -d '{" method":"get","params":{"SelectionCriteria":{},"FieldNames":["Id","Name"]}}' https://api-sandbox.direct.yandex.com/json/v5/campaigns  
cURL для Windows
  curl -k -H "Авторизация: Bearer TOKEN" -d "{\"method\":\"get\",\ "params\":{\"SelectionCriteria\":{},\"FieldNames\":[\"Id\",\"Name\"]}}" https://api-sandbox.direct.yandex.com /json/v5/campaigns  
Запрос
  POST /json/v5/campaigns/ HTTP/1. 1
Хост: api-sandbox.direct.yandex.com
Авторизация: TOKEN на предъявителя
Принять-Язык: ru
Логин клиента: CLIENT_LOGIN
Тип содержимого: приложение/json; кодировка = utf-8

{
  "метод": "получить",
  "параметры": {
    "Критерий выбора": {},
    "FieldNames": ["Идентификатор", "Имя"]
  }
}  
Ответ
  HTTP/1.1 200 ОК
Соединение: закрыть
Тип содержимого: приложение/json
Дата:Пт, 28 июня 2016 г., 17:07:02 по Гринвичу
Ид запроса: 1111111111111111112
Единицы: 10/20828/64000
Сервер: nginx
Передача-кодирование: по частям

{
  "результат": {
    "Кампании": [{
      "Name": "Тестовая тестовая кампания API 1",
      "Идентификатор": 1234567
    }, {
      "Name": "Тестовая тестовая кампания API 2",
      «Идентификатор»: 1234578
    }, {
      "Name": "Тестовая тестовая кампания API 3",
      «Идентификатор»: 1234589
    }]
  }
}  

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

  1. Как приложение может взаимодействовать с API Яндекс.Директа?
  2. Какой HTTP-заголовок требуется в запросе к API-серверу Яндекс.Директа?
  3. Как сервер API Яндекс.Директа отличает тестовые запросы данных от реальных запросов данных?

Урок 1.Что такое API Яндекс.Директа. API Яндекс.Директа. Версия 5

В этом уроке вы узнаете:

  1. Что такое API?
  2. Зачем нужен API Яндекс.Директа
  3. С чего начать
  4. Объекты в веб-интерфейсе и API
  5. Задание
  6. Как выглядит запрос API
  7. Полезные ссылки
  8. В этом уроке

    900 мы объяснит, зачем Яндекс.Директу нужен API, и познакомит с основами его работы.

    Яндекс.Директ — единая площадка для размещения контекстной рекламы и баннерной рекламы. Яндекс.Директ показывает вашу рекламу целевой аудитории вашего бизнеса, заинтересованной в ваших товарах или услугах.



    Для работы с Яндекс.Директом достаточно открыть веб-интерфейс, создать аккаунт и разместить свои объявления. После этого вы сможете управлять своей рекламой в Яндекс.Директе не только в веб-интерфейсе, но и через API.

    Совет. Если вы не работали с Яндекс.Директа, рекомендуем сначала пройти обучающий курс «Как разместить рекламу в Яндекс.Директе», а также прочитать «Помощь». Так вы сможете лучше понять общие принципы создания и ведения рекламных кампаний и лучше освоить наш курс API.

    API означает интерфейс прикладного программирования. API службы предоставляет набор предварительно созданных процедур, функций и структур, которые разработчики могут использовать для создания своих программ, приложений и сценариев (далее именуемых приложениями) для взаимодействия со службой.

    Другими словами, API — это конструктор, предоставляющий набор строительных блоков (функций и методов) и правила их использования. Вы можете создать собственное приложение из таких строительных блоков.



    При взаимодействии со службой через ее API ваше приложение отправляет запрос службе и получает ответ, содержащий запрошенные данные. API позволяет автоматизировать рабочий процесс операций, выполняемых в веб-интерфейсе.

    С помощью API Яндекс.Директа вы можете управлять теми же объявлениями, что и в веб-интерфейсе.API позволяет автоматизировать рутинные операции, ускорить их выполнение и, следовательно, повысить эффективность управления аккаунтом. API — правильный выбор, если вы хотите обрабатывать большие объемы данных, оставаться независимыми от интерфейса браузера и предпочитаете точную настройку своих объявлений.



    Вы можете создать приложение для своих задач как независимый разработчик, рекламодатель или рекламное агентство. Например, вы можете написать скрипт для автоматического обновления ставок на основе вашего пользовательского алгоритма через API.Вы можете интегрировать свою корпоративную информационную систему с Яндекс. Директ: загружать большое количество объявлений из вашей базы в Яндекс.Директ, автоматически обновлять тексты объявлений при изменении цены вашего товара, останавливать и возобновлять показ рекламы в зависимости от наличия товара на складе. Вы можете загружать ежедневную статистику по рекламным кампаниям в свою аналитическую или финансовую систему.

    Как подключение к API Яндекс.Директа, так и использование бесплатны.

    Для прохождения курса необходимо создать учетную запись в Яндекс.Прямой. Если у вас еще нет учетной записи, то создайте ее:

    1. Войдите в Яндекс под логином, который вы собираетесь использовать как разработчик приложения. Если у вас нет логина на Яндексе, заведите его.

    2. В веб-интерфейсе Яндекс.Директа (https://direct.yandex.com) нажмите кнопку Начать.
    3. Введите адрес электронной почты, который вы используете в настоящее время, выберите страну и валюту. Нажмите Начать использование сервиса.

    4. Создайте свою первую рекламную кампанию: рекомендуем выбрать тип кампании «Текстово-графические объявления». Укажите параметры кампании и создайте свое первое объявление. На данный момент достаточно создать один проект объявления с одним ключевым словом. Вам не нужно отправлять объявления на рассмотрение или вносить деньги на кампанию.

    Примечание. Подробнее о создании аккаунта в Яндекс.Директе читайте в Справке. Рекомендуем также пройти урок по этому поводу в курсе Яндекс.Директа.

    Теперь у вас есть аккаунт в Яндекс.Директе. Давайте посмотрим, как выглядят ваши объявления в веб-интерфейсе и в API.

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



    Связи между объектами в API показаны на схеме:



    • Campaign — рекламная кампания, AdGroup — группа объявлений, Ad — объявление.

    • Рекламные расширения: AdImage — изображение, VCard — виртуальная визитка, SitelinksSet — набор быстрых ссылок, AdExtension — выноска.

    • Критерии таргетинга группы объявлений: Ключевое слово — ключевое слово (и другие, в зависимости от типа кампании). Вы можете установить ставку по критерию таргетинга — KeywordBid.



    Пройдите настройки вашей рекламной кампании в Яндекс.Директе. Создавайте новые объявления с другими параметрами. Если вы не хотите запускать настоящую кампанию, не отправляйте свои группы объявлений на модерацию, чтобы ваши объявления оставались в статусе «Черновик».

    Выполнить задачу

    Вы можете использовать запросы API для получения рекламы, которую вы видите в веб-интерфейсе.Вы также можете вносить изменения с помощью API-запросов и сразу же видеть результат в веб-интерфейсе. API работает с каждым объектом индивидуально: разные методы API позволяют создать объявление, обновить vCard, получить статистику и многое другое.

    Вот запрос API, позволяющий получить список рекламных кампаний пользователя. Запрос отправляется с использованием метода POST протокола HTTPS.



    На следующих уроках вы пройдете все начальные этапы работы с API:

    • Вы узнаете, как получить доступ к API: зарегистрируйте свое приложение в Яндекс.OAuth, подайте заявку на доступ и получите токен OAuth.

    • Кроме того, вы научитесь настраивать Песочницу: тестовую среду отладки для вашего приложения.

    • Вы научитесь писать API-запросы: познакомитесь с сервисами и методами, предоставляемыми API, и изучите детали структуры запроса.

    • Наконец, вы получите совет, как перейти от практики «Песочницы» к работе с реальной рекламой реальных пользователей.

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

    Удачи!

    1. Для работы с API необходим аккаунт в Яндекс.Директе. Что нужно сделать, чтобы создать аккаунт в Яндекс.Директе?
    2. Что можно делать с помощью API Яндекс. Директа?
    3. Если вы изменяете рекламную кампанию через API Яндекс.Директа, где вы можете увидеть изменения?

    Обзор.Руководство разработчика

    Для доступа к API Яндекс.Переводчика по HTTPS можно использовать:

    • XML-интерфейс (ответ возвращается в виде XML-документа).

    • Интерфейс JSON (ответ возвращается в виде объектов JavaScript с теми же именами и семантикой, что и элементы XML).
    • Интерфейс JSONP (ответ возвращается в виде объектов JavaScript, заключенных в функцию обратного вызова с указанным именем).

    Все интерфейсы имеют одинаковую функциональность и используют одни и те же входные параметры.

    Вы можете использовать API Yandex.translate для перевода текста на следующие языки:

    9033 1 ГЛ
    Language код Language Code
    Азербайджан AZ Малайялама мл
    албанский кв Мальтийский мт
    Amharic утра Македонский тк
    Английский ан маори миль
    арабский ар маратхи тг
    Армянский хй Mari MHR
    африкаанс аф Монгольский млн
    Басков ес немецкий де
    Башкирская ба Непальские пе
    Белорусский не будет Норвежский нет
    Бенгалии млрд панджаби в год
    Бирманский мой Papiamento мазок
    Болгарский бг персидские фа
    боснийские бс Польский пл
    Welsh су Португальский PT
    Венгерский Hu Румынский ро
    вьетнамских VI Русский RU
    гаитянского (Creole) ХТ Cebuano CEB
    Галицкая Сербский стер
    Dutch нл Sinhalese си
    Hill Mari MRJ Словацкий ск
    Греческий эль Словенский сл
    Грузинская ка суахили SW
    гуджаратские гу Суданский су
    Датский да Таджикский тг
    Иврит он Тайский
    идиш уг тагальского Т. Л.
    индонезийской ID Тамил та
    Ирландский га Тартар тт
    итальянский 903 30 это телугу тэ
    Исландского является Турецким тра
    Испанского эс Удмуртских UDM
    Казахских кк Узбекских UZ
    каннаде кп украинский ик
    Каталонский ча урду ур
    киргизы KY Финский фи
    китайский ж Французский фр
    Корейский ко Hindi привет
    Коса ок хорватского ч
    кхмерского км Чехия CS
    Лаосский 903 30 ло Swedish св
    Latin ла Scottish Б-га
    Latvian лв Эстонии и др
    Литовский л Эсперанто EO
    Люксембург фунт яванская JV
    малагасийская мг Японский JA
    малайские мс

    README — документация для yandex- апи (0.

    1.0)

    Разрешить работу с любыми Яндекс.API

    Модули:

    Установка

    Добавьте эту строку в Gemfile вашего приложения:

      драгоценный камень 'yandex-api'
      

    А затем выполнить:

      $ комплект
      

    Или установить самостоятельно как:

     $ gem установить yandex-api
      

    Прямой

    в рубине:

    Создать файл конфигурации yandex_direct.yml

      токен: токен
    логин: логин
    локаль: ru
    подробно: правда
    песочница: правда
      

    в Ruby On Rails:

    Создать конфигурационный файл yandex_direct.ЮМЛ

      разработка:
        токен: токен
        логин: логин
        локаль: ru
        подробно: правда
        песочница: правда
      

    Создать yandex_direct.rb в config/initializers

      Яндекс::API::Direct.load File.join(Rails.root,"config","yandex_direct.yml"), Rails.env
      

    Простой пример:

      требуется 'yandex-api'
    Яндекс::API::Direct. load "yandex_direct.yml"
    
    кампания = Яндекс::API::Direct::CampaignInfo.list.first
    ставит кампанию.инспект
    ставит кампании.баннеры.first.inspect
      

    Перевести

    в рубине:

    Создать файл конфигурации yandex_translate.yml

      токен: "токен"
    пользовательский интерфейс: правда
    подробно: правда
      

    в Ruby On Rails:

    Создать файл конфигурации yandex_translate.yml

      разработка:
        токен: "жетон"
        интерфейс: "ru"
        подробно: правда
      

    Создать yandex_translate.rb в config/initializers

      Яндекс::API::Translate.Загрузить файл.присоединиться(Rails.root,"config","yandex_translate.yml"), Rails.env
      

    Простой пример

      требуется 'yandex-api'
    Yandex::API::Translate.load "yandex.yml", "производство"
    
    ставит Yandex::API::Translate.languages.inspect
    ставит Yandex::API::Translate.detect('test').inspect
    ставит Yandex::API::Translate.do('Привет GitHub', 'ru'). inspect
      

    Содействие

    1. Вилка ( https://github.com/jpascal/yandex-api/fork )
    2. Создайте ветку своей функции ( git checkout -b my-new-feature )
    3. Зафиксируйте свои изменения ( git commit -am 'Добавить функцию' )
    4. Отправить в ветку ( git push origin my-new-feature )
    5. Создать новый запрос на слияние

    Yandex Translate API — Образец кода и каталог библиотек для Android-разработчиков

    yandex-translate-api — простая REST клиентская библиотека для Яндекса.Перевести. API предоставляет доступ к онлайн-сервису машинного перевода Яндекса. Он поддерживает более 90 языков и может переводить отдельные слова или целые тексты.

    Электронная документация: Javadoc

    Для работы с этой библиотекой необходимы следующие действия:

    • Установить JDK 1.8
    • Получить бесплатный ключ API.

    Конфигурация Gradle:

     репозиториев {
    
      знаток {
    
    URL "https://jitpack. io"
      
    }
     
    }
      зависимости {
    
      скомпилировать com.github.vbauer:yandex-translate-api:1.3.2'
    }
     

    Конфигурация Maven:

     <репозиторий>
      jitpack.io
      https://jitpack.io  
      com.github.vbauer
      yandex-translate-api
      <версия>1.3.2  

    К вашему сведению:

    Точкой входа этой библиотеки является интерфейс YTranslateApi (и соответствующая реализация YTranslateApiImpl ).

     def key = "<ваш ключ>" def api = new YTranslateApiImpl(key) 

    С помощью экземпляра этого сервиса вы можете работать со следующими функциями:

    • DetectionApi определяет язык указанного текста.
    • LanguageApi возвращает список направлений перевода, поддерживаемых службой.
    • TranslationApi позволяет переводить текст с одного языка на другой.

    DetectionApi

    В следующем примере возвращается Язык. EN :

     def language = api.detectionApi().detect("Hello, World!") 

    LanguageApi

    Чтобы получить все доступные языки без их названий, используйте следующий фрагмент кода:

     def languages ​​= api. languageApi().all() 

    Также можно получить имена для каждого языка, используя параметр ui :

     def languages ​​= api.languageApi().all(Language.RU) 

    TranslationApi

    Следующее код должен перевести русский х "??? ?????" в какой-нибудь английский вариант ( "Как дела?" или что-то подобное):

     def translation = api.переводАпи().перевести(
      "??? ?????", Direction.of(Language.RU, Language.EN)) 

    Исходный язык также может определяться автоматически (поэтому нужно указать только язык перевода):

     def translation = api .translationApi().translate("??? ?????", Language.EN) 

    MIT

    Google Translate API и App Inventor: альтернатива Яндексу

    Это гостевой блог MIT Master Trainer Ивон Морин

    В настоящее время количество подключенных устройств, доступных через Интернет, привело к подключению людей. Инфраструктура, которая поддерживает все коммуникации между устройствами, также известна как Интернет вещей (IoT).

    Этот блог не предназначен для рекламы Google API, а также для того, чтобы преуменьшить замечательные функции и возможности Яндекса. Это только желание автора поделиться с читателями своим опытом, который, по его мнению, может послужить цели, поскольку вы можете захотеть узнать, как перевести что-то на язык, которого еще нет в репертуаре Яндекса, или создать приложение с множеством различных API-интерфейсы машинного переводчика для анализа и сравнения.
    Наша цель в этом блоге — предоставить пользователю лучшее понимание того, как фильтровать результаты из Интернета с помощью блока анализатора JSON или текстовых функций App Inventor. Конечно, при использовании Яндекса App Inventor уже позаботился об этих проблемах, поэтому пользователям не нужно о них беспокоиться. Но с API, отличными от Яндекса, вы должны знать, как манипулировать строками, чтобы получить желаемый результат; это то, что мы собираемся показать вам.

    Для этого мы создаем приложение со следующими компонентами для графического интерфейса:

    • Кнопка-счетчик, которая будет использоваться для выбора нужного языка из раскрывающегося списка.Но для целей этого блога в список включены только 4 языка (французский, испанский, английский и гаитянский креольский)
    • .
    • Текстовое поле, используемое для приема пользовательского ввода для перевода. Подсказка для этого текстового поля содержит шаги, с помощью которых пользователь может начать работу.
    • Две метки используются для отображения вывода переведенного текста с каждого сервера (Google и Яндекс).

    Чтобы начать использовать API машинного переводчика, нам необходимо настроить учетную запись для службы, если только мы не используем встроенную процедуру Яндекса или метод, созданный для этой цели в App Inventor.Поскольку мы используем Google Translate API и Яндекс, нам нужна как минимум учетная запись для Google, которая у нас уже есть. После создания учетной записи нам нужно перейти в консоль API, чтобы создать проект и включить API для этого проекта. При получении учетных данных API для проекта выберите ключ API браузера. Если в этом процессе требуется помощь, следуйте документации по API, доступной на пользовательской консоли. Теперь, когда ключ API создан, как нам его использовать? Это вопрос, на который мы обещаем ответить дальше.

    Как упоминалось ранее, одним из преимуществ использования Яндекса является то, что App Inventor уже учел метод, используемый для выполнения запроса к веб-API, и способ обработки ответа, и, кроме того, не нужно беспокоиться о создании учетной записи. Но когда дело доходит до пользовательского API, вам нужно знать, как с ним обращаться, и это то, что мы собираемся показать вам сейчас. Прежде чем мы это сделаем, давайте взглянем на компоненты, задействованные в этом приложении, взглянув на список в интерфейсе разработки.


    Если вы посмотрите на рис. 1а слева вверху, внизу есть два невидимых компонента. Один из них — это веб-компонент, который будет использоваться для доступа к API Google через URL-адрес, а другой — компонент Яндекса, доступный в App Inventor для решения этих задач. Если мы посмотрим на документацию Google Translate API, мы увидим, что для отправки запроса на перевод текста через Google Translate API мы должны использовать следующий URL-адрес: https://www.googleapis.com/language/translate. /v2?параметры

    Где параметры:

    • Ключ API: используйте ключевой параметр для идентификации вашего приложения.
    • Целевой язык: Используйте целевой параметр, чтобы указать язык, на который вы хотите перевести.
    • Исходная текстовая строка: используйте параметр q, чтобы указать текст для перевода.

    Теперь нам нужно вернуться к тому месту, где мы остановились, когда говорили о создании ключа API браузера, и получить учетные данные для этого ключа.

    На этом этапе нам нужно создать три переменные, которые будут объединены конкатенацией, чтобы составить URL-адрес Google API, необходимый для обеспечения успешного ответа (код 200).

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

    Давайте взглянем на этот блок кода, прежде чем говорить о том, как мы делаем запрос к обоим API.

    Этот блок кодов сообщает App Inventor, что после выбора пользователем языка из списка:

    1. Присвойте соответствующий код переменной languagecode.
    2. Скрыть клавиатуру.
    3. Задайте URL-адрес API Google для объединенного текста в блоке соединения.
    4. Получить ответ.
    5. Запросить такой же перевод у яндекса.

    Вот разница между запросами к обоим серверам с использованием их API.

    Как они отвечают на запрос? Мы сосредоточимся только на том, как ответил сервер Google, поскольку наша цель — показать, как отфильтровать целевой ответ из возвращенных метаданных.

    App Inventor уже обработал возвращаемый Яндексом результат в этом событии:

    .

    Теперь давайте предположим, что ответ от Google отображается примерно без разбора, форматирования или фильтрации.Как бы это выглядело?

    С этим блоком кода:

    У нас будет что-то вроде этого на выходе:


    Как вы можете видеть слева, перевод Яндекса был выполнен, как и ожидалось, тогда как сервер Google вернул больше, чем мы ожидали, в качестве ответа, и нам нужно найти метод, чтобы отфильтровать желаемый ответ от того, что было возвращено. Но хорошая новость заключается в том, являетесь ли вы программистом или нет, App Inventor позволяет обойти все проблемы программирования, которые могут помешать нам получить желаемый результат.Вот почему мы сначала рассмотрим проблемы людей, не знающих JavaScript или какого-либо языка программирования.

    Наша цель — получить строку символов между двойными кавычками включительно «Me gustaria ver un cambio de technologia la forma de pensar». Для этого мы исследовали и обнаружили, что открывающая кавычка перед Me находится на позиции 61 в строке. Мы также обнаружили, что длина оставшейся строки, которая следует за закрывающей кавычкой, равна 111. С учетом сказанного давайте используем блок «сегмент текста» для извлечения целевой строки следующим образом:

    Чтобы избавиться от кавычек, мы присоединили предыдущий блок к блоку «заменить весь текст», как показано ниже:

    Посмотрим на вывод, если этот блок подключен к googleAPI.Событие GotText.


    Окончательный код изобретателя приложения для этой версии

    Мы только что показали вам, как получить предполагаемый ответ после перевода с сервера, используя простые арифметические вычисления и функции обработки текста в App Inventor. Возможно, есть люди на другой стороне мира пользователей App Inventor, которые все еще хотят знать, как справиться с ответом. Я предполагаю, что эти люди могут иметь некоторое знание языка JavaScript или, возможно, они слышали о JSON (обозначение объектов JavaScript), предназначенном для использования в этой практике в качестве альтернативы тому, что мы только что сделали. Если у нас есть веб-компонент, добавленный в пользовательский интерфейс, который в нашем случае называется googleAPI, при нажатии на этот компонент в редакторе блоков вы увидите блок, подобный этому:

    Если мы продолжим наше исследование так же, как мы начали ранее, мы можем прикрепить содержимое ответа к этому блоку, чтобы увидеть, как будет выглядеть вывод:

    Декодер JSON App Inventor изменил содержимое ответа на выходные данные, показанные фиолетовым цветом. Этот вывод привел к карте, показанной ниже:

    Эта карта говорит нам, что если мы используем список списка, то мы можем иметь прямой доступ к последнему элементу, создав эту цепочку списка выбора ниже:


    Если мы используем цикл, мы можем довести эту цепочку до определенного уровня абстракции, как показано ниже:


    Вот вывод, следующий за блоком кода выше:

    Окончательный код изобретателя приложения для этой версии

    Вкратце, возможно, это было длинное упражнение, но мы рассмотрели наши основные цели, которые заключались в том, чтобы предоставить пользователям альтернативу API Яндекса в качестве средства для перевода текста и различные стратегии или методы, которые можно использовать для конкретного ответа из содержания ответа. Среди используемых методов использовались текстовые функции App Inventor и блок JSON веб-компонента. Приложение, созданное для этого блога, может дать читателю возможность сравнить точность Google Translation и Yandex Translation.

    Используйте этот QR-код, если хотите попробовать приложение:

    Best Translation API — переведите свою книгу дешево

    Если вы хотите перевести целую книгу или несколько статей на своем веб-сайте, единственный способ добиться того, чтобы текст был на 100 % удобочитаемым, — это поручить эту работу переводчику-человеку.

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

    Если бы это был 2010 год, обсуждение закончилось бы здесь.

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

    Самый дешевый способ сделать перевод — поставить на выполнение задачи как машины, так и людей.

    Сначала вы передаете исходный текст машине или API (интерфейс прикладного программирования). Машина возвращает машинно переведенный текст.

    Затем вы передаете исходный текст и перевод человеку-переводчику. Их работа будет заключаться в «очеловечивании» и редактировании текста, чтобы он читался так, как будто его написал человек.

    Чтобы этот процесс был рентабельным, в первую очередь машина должна хорошо выполнять свою работу.В противном случае переводчик-человек может потратить больше времени на редактирование, чем на перевод.

    Я протестировал четыре основных API-интерфейса перевода, чтобы убедиться, что какой-либо из них выполняет свою работу достаточно хорошо для того, чтобы этот процесс работал.
    Мне также было любопытно посмотреть, как API-интерфейсы перевода сравниваются друг с другом.

    Эта статья ответит на оба вопроса.

    Для тестирования API я взял два небольших абзаца из книги (с разрешения издателя).Важно, что этот текст и его перевод недоступны в Интернете. Google обучает свою модель машинного обучения перевода общедоступным переводам. При тестировании модели тестовая выборка должна находиться вне обучающей выборки.

    Ниже вы найдете изображения перевода текста с немецкого на английский.

    Переводчик Google

    https://translate.google.com/

    Перевод текста Microsoft

    https://azure.microsoft.com/en-us/services/cognitive-services/translator-text-api/

    IBM Watson Language Translator

    https://www.ibm.com/watson

    Yandex Translator

    https://translate .yandex.com/

    Справедливо заключить, что API перевода Google работал лучше, чем Microsoft, Watson и Яндекс.

Автор записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *