Актуальность
Стоит учитывать, что данная статья актуальна для v=5.92. За последующие изменения работы VK API автор ответственности не несет.
В процессе изучения возможностей VK API столкнулся с, казалось бы, нелогичной вещью: обыкновенный пользователь имеет возможность добавить репост в отложенные записи:
При это в документации API про это ни слова:
Обращение в службу поддержки ВКонтакте
По секрету скажу, что поддержка ВКонтакте также утверждает об отсутствии такой возможности с помощью использования методов API.
... или прикидываются?
Тогда было принято решение посмотреть, что из себя представляет запрос при отправке репоста в отложенные записи:
И что же вы видим? Некий параметр postpone с параметром удивительно похожим на Unix Timestamp.
Проверяем... и правда, дата та, которую мы указывали во времени публикации:
НО не все так просто, потому что при следующем коде:
delay_repost = vk_api.wall.repost(object=f'wall{-7486164_1052}', postpone=1735637040)
получает следующий ответ:
VkAPIError: 100. One of the parameters specified was missing or invalid.
Тут на помощь пришла смекалка. Ведь в методе wall.post был требуемый параметр, но назывался он иначе:
Меняем название параметра на publish_date:
delay_repost = vk_api.wall.repost(object=f'wall{-7486164_1052}', publish_date=1735637040)
Запись добавлена в отложенные и будет опубликована в указанные дату и время.
Комментарии (10)
akakoychenko
14.01.2024 15:42+1В процессе изучения возможностей VK API столкнулся с, казалось бы, нелогичной вещью: обыкновенный пользователь имеет возможность добавить репост в отложенные записи:
А лично мне кажется эта вещь сверхлогичной.
Для живого человека функциональность нужна и полезна. Для кремниевой машины вообще бессмысленна. Робот может сам на своей стороне дождаться нужного времени и сделать вызов. Раз параметр не добавляет ценности, то и логично не фиксировать его в публичном контракте (ибо любая фиксация чего-либо в публичном контракте не даётся бесплатно - это всегда обязательство поддерживать его в будущем, как минимум)
9982th
14.01.2024 15:42+1Эта функциональность радикально снижает требования к надежности софта и инфраструктуры, осуществляющих критичный ко времени постинг. Чтобы отправить API-запрос хоть когда лишь бы до следующего понедельника достаточно запускающегося по расписанию скрипта на домашнем компьютере, сутки без интернета или электричества ничего принципиально не изменят. Чтобы отправить запрос ровно в заданный момент, нужно, чтобы кремниевая машина в этот момент работала, была на связи и софт мог обработать всякие неожиданности оперативно и корректно, потому что дожидаться вмешательства человека времени уже нет.
sys_adm1n Автор
14.01.2024 15:42Все зависит от Ваших задач и интересов в данной теме.
Но в целях минимизации нагрузки, допустим, на сервер и автоматизации самого процесса, логичнее было бы иметь скрипт, который не нужно держать в постоянно работающем состоянии, а который способен за один запуск выполнить все необходимые задачи на месяц вперед, условно.Vest
14.01.2024 15:42-1А вы доверяете API VK тому, что он действительно опубликует ваше сообщение в нужное вам время? Я так понимаю, что если ваш скрипт не работает всё время, то вы не можете знать, было ли ваше сообщение выложено.
sys_adm1n Автор
14.01.2024 15:42Суть как раз в том и состоит, что скрипт добавляет записи в отложенные посты на стене пользователя, от которого он выполняется и дальнейшая их публикация уже никак не зависит от работы скрипта.
Если вопрос недоверия, то это всегда можно перепроверить: после корректного выполнения кода, все записи будут отображаться во вкладке "Отложенные" на странице "Моя страница" пользователя с указанием конкретных даты и времени, что и показано на крайнем скриншоте статьи:Запись добавлена в отложенные и будет опубликована в указанные дату и время.
9982th
14.01.2024 15:42+1А вы доверяете обещанию API опубликовать сообщение прямо сейчас, если вы его об этом попросите? Будете проверять, что пост действительно появился, а не просто статус ответа?
Если наш гипотетический наколенный скрипт в планировщике дорос до таких требований к надежности, то он вполне может переехать на VPS, обзавестись проверками что новый пост появился в отложенных, а отложенный опубликовался когда надо, мониторингом с алертами и прочими атрибутами серьезного софта, но возможность отложенного постинга все равно будет позволять успешно отработать в ситуациях, с которыми имея только мгновенный постинг справиться не выйдет или выйдет сильно дороже.
fire64
Это здорово, у ВК много подобных скрытых "фич".
Только мне кажется, что это больше подходит под категорию пост, чем под статью на Хабре.
MountainGoat
Пост очень неудачно ограничен по длине. Всегда чуть-чуть не хватает, чтобы нормально объяснить мысль.
sys_adm1n Автор
Что конкретно Вы имеете ввиду? Старался кратко, но доступно объяснить весь процесс.
Готов доработать "нормальное объяснение мысли", если это действительно нужно.
MountainGoat
Я не про ваш текст, а про "пост" в терминологии Хабра, который слишком ограничен, и не получается им воспользоваться.