Найти в Дзене
Nikita Romanovich Kupriyashin

Автоматическое удаление исходящих заявок Вконтакте (2022)

Оглавление

Коротенькое введение

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

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

Одной из таких "систем" автоматизации можно назвать Vk API. Используя его, такие однотипные задачи, как например, сбор данных по определенным критериям, очистка большого количества данных и др. стало в разы быстрее, но одним из минусов является владение методами разработки ПО, что может оттолкнуть большинство пользователей.

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

-2

Я также начинаю практиковаться в API и первым моим приложением, которое я написал по изучению данной темы, является - Clearing Outgoing Friends, позволяющее в автоматическом режиме очищать список исходных заявок в социальной сети "ВКонтакте".

Предыстория

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

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

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

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

Кстати, готовую прогу Вы можете найти по ссылочке на Яндекс.Диск - https://disk.yandex.ru/d/eaSJwT8i-5PBBA программа консольная, но об этом попозже.

-3

Самый важный вопрос заключался в выборе языка программирования. До этого у меня был опыт программирования на плюсах (С++) в Qtcreator'е, но немного покумекав и поняв, что в общем-то интерфейс проги мне не особо был нужен, было принято решения скачать пайтон и кодить на нем. Что в итоге дало неплохие результаты, так как для пайтона умные люди давным-давно написали библиотеки для работы с API VK.

-4

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

Пишу код - 11010000 10111111 11010000 10111000 11010001 10001000 11010001 10000011 00100000 11010000 10111010 11010000 10111110 11010000 10110100

Как я понял все важные программисты начинают с импорта библиотек. Соответственно, для работы понадобятся:

  1. import vk_api
  2. import math

В принципе, это все. А, вк-ная библиотека не является стандартной, поэтому ее нужно скачать из интернета: в терминале Python'а прописать pip install vk_api, если с терминалом все гут, подождать 3 минуты и работать дальше.

После установки, необходимо понять как вообще этот вк апи работает, у меня умозаключения пришли только после 2 часов просмотра ютуба.

В принципе тут все легко: есть токен, в который "вшиты" определенные разрешения, при помощи методов (на них кстати есть документация - https://dev.vk.com/reference, та и в принципе тут все описано) к вк подается запрос, на который он отвечает и этот ответ возвращается в виде чего-то, обычно, вроде это кортеж или "справочник" или как там его. А вспомнил - словарь, что только не придумают.

Ну и соответственно, по этим ответам можно понять в правильном направлении пишется код или же нет.

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

counter = session.method("friends.getRequests", {'out': 1})

Здесь в переменную помещается ответ от метода friends.getRequests, который содержит в себе ответ состоящий из количества того, что он возвращает и списка людей, которым я направлял заявки на принятие в друзья. 'out': 1 - как раз и говорит, что верни людей, которым я отправлял заявки дружбу.

Методы

Дальше я просто напишу методы, которые будут использоваться и вкратце объясню зачем они нужны:

session.method("friends.getRequests", {'out': 1})

items = []
for elem in range(math.ceil(counter/1000)):
spisok = session.method("friends.getRequests",
{
'offset': elem*1000,
'count': 1000,
'out': 1
})
items += spisok['items']

for elem in range(len(items)):
FIO = session.method('users.get', {
'user_ids': int(items[elem]),
'fields': 'screen_name'
})
print(FIO[0]['first_name'] + ' ' + FIO[0]['last_name'])
result = session.method("friends.delete",
{
'user_id': int(items[elem])
})
print('Удален: ' + str(result['success']))
print(' ')

session.method("friends.getRequests", {'out': 1}) - как уже указывалось ранее, возвращает список id'шников людей, которые не приняли заявку в друзья, правда в данном случае, он служит для занесения в переменную их количества в виде int'а.

Второй метод, а точнее цикл закидывает в переменную все id'шники, полученные методом

spisok = session.method("friends.getRequests", { 'offset': elem*1000, 'count': 1000, 'out': 1 })

Так же тут есть одна фигня, вк возвращает в ответе только 1000 людей, соответственно, если их больше то он их обрежет. Для того, чтобы вернуть полное количество, метод необходимо закинуть в цикл и прокрутить его math.ceil(counter/1000), тут кстати используется библиотека math для округления в большую сторону, это делается для того, чтобы при условии что у нас 6490 человек, переменная не приняла в себя только 6к людей, а остальные остались в пустоте. Ну то есть: counter = 6490, counter = 6490/1000 = 6,490 - math.ceil(6,490) = 7. То есть цикл пройдет 7 раз, 6 раз до достижения 6к людей и 7 круг для подбора остальных 490, те которых нет - вк ничего по ним не вернет и все будет гут.

В третьем методе мы получаем ФИО тех кого удаляем из списки исходящих в ВК, чтобы было понятно, что мы убираем именно них. Ну и дальше методом friends.delete мы удаляем их из данного списка, выводя в консоли их ФИО и уведомление о том, что они удалены.

-5

Заключение

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

Для работы скрипта достаточно просто ввести token в командную строку при запуске и ждать пока он всех очистит.

Кстати насчет токена: получить его можно на сайте - https://vkhost.github.io/, я использовал токен для KateMobile. Как его получить написано на самом сайте. НО не забудьте его деактивировать после работы, чтобы им кто-то кроме вас не воспользовался, иначе будет неприятно.

В общем:

Сам скрипт в виде .exe файла - https://disk.yandex.ru/d/eaSJwT8i-5PBBA
Сайт для получения токена -
https://vkhost.github.io/
Инструкция по API -
https://dev.vk.com/reference
Скоро еще видос сделаю на ютубе, но позже сюда ссылку закину.