Скрипт на автоматическое создание геоточек (окружностей) в Яндекс Аудиториях
Всем привет! Сегодня хотелось бы поделиться скриптом, который позволяет с помощью API создавать большое количество сегментов, основанных на географии.
Когда это может пригодиться? Когда нужно создать большое количество сегментов, например, для 100 тысяч точек. Из недавних кейсов: нужно было собрать список всех детских школ, развивающих кружков, детских секций и так далее — цель охватить по максимуму аудиторию родителей.
Я прекрасно понимаю, что сегменты работают криво, рисуют несуществующий охват, но я обычно запускаю все на ОЗК стратегии, поэтому я в любом случае охватываю нужную аудиторию.
Ну и скрипт обрабатывает только формат окружностей, разницы между полигонами немного (тоже рисует многомиллионные охваты), поэтому сосредотачиваемся на них.
Как обычно делаем предподготовку из статьи.
Что нужно для скрипта:
1. Широта и долгота нужных вам точек. Формат широта,долгота. Это не реклама, но базы я беру тут.
2. Определить настройки по которым вы будете создавать сегменты:
- Окружности или полигоны
- Радиус
- Аудитория: регулярно посещает/живет/работает, находится сейчас, находится, была N дней за неделю/месяц/3 месяца
3. Скачать мой скрипт.
4. Получить токен через приложение (доступа у меня нет, если переживаете можете создать на любом аккаунте, а потом просто пошарить доступы) или зарегистрировать свое приложение:
5. Задать соответствующие настройки, которые мы рассмотрим ниже.
Сам скрипт
Сам скрипт состоит из следующих файлов:
- locations.txt — список географии для добавления в формате: широта, долгота.
- script.py — сам исполнительный файл
Касаемо запуска все просто:
1. Сначала заполняем файлик с locations.txt, где искать базы указал выше
2. Далее открываем скрипт и меняем настройки.
Сначала заполняем токен, который получили ранее: TOKEN = ""
Потом указываем нейминг в блоке: base_name = "GeoSegment_sanatorii_rf", следующие сегменты будут создаваться с префиксами _1, _2, _3 и так далее.
Настройки геосегмента находятся в блоке: payload (на всякий пользуйтесь справкой).
Ниже пару примеров по которым вы сможете сформировать любую аудиторию. Пользуйтесь справкой по API и все встанет на свои места.
Геоточка: 500 м, регулярно на бывает:
payload = {
"segment": {
"name": segment_name, # Имя сегмента (переменная segment_name)
"geo_segment_type": "regular", # Тип геосегмента, здесь "регулярно посещает" - можно менять на home - живет или work - работает, last - сейчас находится.
"radius": 500, # Радиус геозоны, в метрах, до 10 000
"points": points, # Список точек (массив с координатами: lat, lon)
"times_quantity": 1,
"period_length": 1
}
}
Сейчас находится:
payload = {
"segment": {
"name": segment_name, # Имя сегмента (переменная segment_name)
"geo_segment_type": "last"
"radius": 500, # Радиус геозоны, в метрах, до 10 000
"points": points, # Список точек (массив с координатами: lat, lon)
"times_quantity": 1,
"period_length": 1
}
}
Были 3 дня за последний месяц.
payload = {
"segment": {
"name": segment_name,
"geo_segment_type": "condition",
"radius": 500,
"points": points,
"times_quantity": 3, # Указываем количество дней сколько раз он посетил
"period_length": 30, # Период — 1 месяц, нужно указать именно количество дней, доступно от 1 до 90 (в интерфейсе сможете создать только от 7 дней)
}
}
Далее запускаем скрипт, смотрим на консоль, если все ок, то увидите примерно такой текст.
P. S.: маленький совет — протестируйте на небольшом количестве данных, прежде чем выкатывать на полную.
На этом всё, теперь вам не нужно создавать вручную по 100 и более сегментов, всё создается автоматически.
Ставьте лайки, делитесь, подписывайтесь на блог. Удачи!