Семантику снимаю из Вордстата через браузерную автоматизацию на живой сессии Яндекса. Кампании, группы, объявления и ключи создают скрипты. Отчёты по поисковым запросам и кампаниям приходят асинхронно: сначала API отвечает «готовлю», и скрипт спрашивает снова, пока отчёт не будет готов.
Площадки РСЯ, которые приносят мусорные клики, раз в неделю вычищаются автоматически. Для кампаний магазина я собрал архив из 2 081 площадки без повторов и залил в каждую кампанию сколько позволяет Директ: тысячу запретов.
Картинки для объявлений рисует тот же код, что и карточки товаров для витрины ВКонтакте, поэтому выглядят они везде одинаково.
tools/direct/cd_direct.py · дословно
def call(svc, method, params):
body = json.dumps({"method": method, "params": params}, ensure_ascii=False)
req = urllib.request.Request(
"https://api.direct.yandex.com/json/v5/" + svc, data=body.encode("utf-8"),
headers={"Authorization": "Bearer " + TOK, "Accept-Language": "ru",
"Content-Type": "application/json; charset=utf-8"})
try:
return json.loads(urllib.request.urlopen(req, timeout=120).read().decode("utf-8"))
except urllib.error.HTTPError as e:
return {"http_error": e.code, "body": e.read().decode("utf-8")[:400]}