
В этой записи я буду складировать свои небольшие Powershell скрипты для Вконтакте, которые автоматизируют работу в социальной сети, избавляют от однообразных, надоедливых действий и экономят драгоценное время. В самом конце записи также есть ссылки на мои остальные полезные скрипты для вконтакте.
Очистить черный список в сообществе
Иногда бывает что нужно амнистировать всех забаненных в каком-либо сообществе Вконтакте, но при этом черный список достаточно большой, на очистку ручками уйдет большое количество времени. В таких случаях пригодится этот скрипт:
#Powershell скрипт для Вконтакте: очистка черного списка сообщества #Необходимые права для токена: groups #Автор: elims.org.ua function http_request { #функция отсылки http-запросов и получения ответа param([string]$uri = $null) #входящий параметр $i = 1 #счетчик попыток получения ответа от сервера while ($request -eq $null) { #пока не получим ответ от сервера $request = Invoke-WebRequest -Uri $uri #посылаем запрос Start-Sleep -m 340 #задержка в 340 милисекунд if($i -gt 1) { #если пытались получить ответ от сервера более 1 раза, то выводим это на экран write-host 'Попытка' $i ':' $uri } $i++ #увеличиваем счетчик попыток } $response_array = $request.content | ConvertFrom-Json #Конвертируем полученные данные из формата JSON в массив return $response_array #возврат результата функции } function get-ban-list { #функция получения списка забанненых $response_array = http_request("https://api.vk.com/method/groups.getBanned?group_id="+$group_id+"&count=200&v=5.28&access_token="+$token) #получаем список альбомов первых 200 видео и количество видео $ban_count = $response_array.response.count #количество забанненых $ban_array = $response_array.response.items #первые 200 забаненные $ban_offset = 200 #смещение while ($ban_offset -lt $ban_count) { #получаем список всех оставшихся write-host "получили" $ban_array.count "забаненых" $response_array = http_request("https://api.vk.com/method/groups.getBanned?group_id="+$group_id+"&offset="+$ban_offset+"&count=200&v=5.28&access_token="+$token) $ban_array = $ban_array + $response_array.response.items #добавляем порцию полученных забаненых к общему списку забаненных $ban_offset = $ban_offset + 200 #увеличиваем смещение от начала списка } return $ban_array #возвращаем список забанненых } function unban { #функция разбанивания пользователей $ban_array = get-ban-list #запускаем функцию получения списка забанненых write-host "Общее количество забаненных:" $ban_array.count $user_i = 0 foreach ($user_id in $ban_array.id) { #обходим каждого забаненого $response_array = http_request("https://api.vk.com/method/groups.unbanUser?group_id="+$group_id+"&user_id="+$user_id+"&v=5.28&access_token="+$token) #разбаниваем пользователя if ($response_array.response -eq 1) { $result = "OK" } #анализируем код ответа разбанивания else { $result = "FALSE" } write-host (++$user_i) "of" $ban_array.count (": vk.com/id"+$user_id) "result:" $result } } $group_id = 123456 #id группы $token = "ekfjq4123j4h12k4jh12klj4h1kljrh1kljh" #токен unban #функция разбанивания пользователей
Анализируем количество друзей у подписчиков
Если у подписчика от 1000 друзей, то он добавляется в друзья.
#Powershell-скрипт для Вконтакте: проверяет сколько друзей у каждого из подписчиков указанного профиля, если более 1000 друзей, то подписчик добавляется в друзья #Необходимые права для токена: friends #Автор: elims.org.ua $token = "dasferquiwrq5i4u5345iu3y4niuy" $id = 163173105 #id профиля, подписчиков которого нужно проанализировать function http_request { #функция отсылки http-запросов и получения ответа param([string]$uri = $null) #входящий параметр $uri = "https://api.vk.com/method/"+$uri $i = 1 #счетчик попыток получения ответа от сервера while ($request -eq $null) { #пока не получим ответ от сервера $request = Invoke-WebRequest -Uri $uri #посылаем запрос Start-Sleep -m 340 #задержка в 340 милисекунд if($i -gt 1) { #если пытались получить ответ от сервера более 1 раза, то выводим это на экран write-host 'Попытка' $i ':' $uri } $i++ #увеличиваем счетчик попыток } $response_array = $request.content | ConvertFrom-Json #Конвертируем полученные данные из формата JSON в массив return $response_array #возврат результата функции } $i = 0 $response_array = http_request("subscriptions.getFollowers?uid="+$id+"&count=1000&offset=$i&v=5.24&access_token="+$token) #первый запрос делаем чтобы получить количество подписчиков $followers_count = $response_array.response.count #извлекаем количество подписчиков "Число подписчиков: " + $followers_count do { $response_array = http_request("subscriptions.getFollowers?uid="+$id+"&count=1000&offset=$i&v=5.28&access_token="+$token) #получаем 1000 подписчиков $followers_array = $followers_array + $response_array.response.items #сохраняем в масив id подписчиков $i = $i + 1000 write-host("Получили $i подписчиков") } while ($i -le $followers_count) $i = 0;$request_i = 0 $execute_string = 'return[' $followers_array_25 = @{} ; $add_to_friend_array = @() #создали ассоциативный и обычный массив foreach ($follower in $followers_array) { #в каждом подписчике $i++ $request_i++ $followers_array_25[$request_i] = $follower if(($request_i -lt 25)-and($i -lt $followers_array.count)) { $execute_string = $execute_string + 'API.friends.get({"uid":' + $follower + '}),' #формируем запрос из 25 запросов } else { #если набралось 25-запросов то отсылаем запрос $execute_string = 'execute?code=' + $execute_string + 'API.friends.get({"uid":' + $follower + '})];&access_token=' + $token #окончательнвый вид запроса из 25 запросов $response_array = http_request($execute_string) #посылаем 25 запросов в одном запросе $request_i = 0;$vk_follower_i = 0 $execute_string = 'return[' #приводим в начальное состояние foreach ($vk_request in $response_array.response) { $vk_follower_i++ if ($vk_request.count -ge 1000 ) { #если количество друзей от 1000 и более "Добавляем в друзья vk.com/id" + ($followers_array_25[$vk_follower_i]) + " друзей: "+ $vk_request.count $add_to_friend_array = $add_to_friend_array + $followers_array_25[$vk_follower_i] #формируем список id, которые нужно добавить в друзья } } "Обработали " + $i + " of " + $followers_array.count } } #добавляем в друзья сформированный выше список: $i = 0;$request_i = 0 $execute_string = 'return[' foreach ($id in $add_to_friend_array) { $i++ $request_i++ "Нужно добавить " + $i + " of " + ($add_to_friend_array.count) + " vk.com/" + $id if(($request_i -lt 25)-and($i -lt $add_to_friend_array.count)) { #если сфорировано менее 25 подзапросов и мы не дошли до конца списка $execute_string = $execute_string + 'API.friends.add({"user_id":' + $id + '}),' #формируем запрос из 25 подзапросов } else { #если набралось 25 подзапросов то отсылаем запрос $execute_string = 'execute?code=' + $execute_string + 'API.friends.add({"user_id":' + $id + '})];&access_token=' + $token #окончательнвый вид запроса из 25 подзапросов $response_array = http_request($execute_string) #посылаем 25 запросов в одном запросе $request_i = 0 #обнуляем счетчик сформированных подзапросов $execute_string = 'return[' #начинаем формировать запрос сначала "Обработали " + $i + " of " + ($add_to_friend_array.count) } }
Отменяем исходящие заявки на добавление в друзья
#Powershell скрипт для Вконтакте: отмена всех исходящих заявок на добавление в друзья #Необходимые права для токена: friends #Автор: elims.org.ua $token = "сюда_вставляем_свой_токен" $i = 0 $uri = "https://api.vk.com/method/friends.getRequests?uid="+$id+"&count=1000&out=1&offset=$i&v=5.25&access_token="+$token $request = Invoke-WebRequest -Uri $uri #первый запрос делаем чтобы получить количество отправленных заявок $response_array = $request.content | ConvertFrom-Json #Конвертируем полученные данные из формата JSON в массив $request_count = $response_array.response.count #извлекаем количество подписчиков "Всего отправленно заявок: " + $request_count do { $uri = "https://api.vk.com/method/friends.getRequests?uid="+$id+"&count=1000&out=1&offset=$i&v=5.25&access_token="+$token $request = Invoke-WebRequest -Uri $uri #получаем подписчиков по 1000 за один запрос $response_array = $request.content | ConvertFrom-Json #Конвертируем полученные данные из формата JSON в массив $request_array = $request_array + $response_array.response.items #сохраняем в масив id подписчиков $i = $i + 1000 write-host("Получаем $i") Start-Sleep -m 340 $sleep_time #задержка } while ($i -le $request_count) $i = 0 foreach ($id in $request_array) { #в каждом подписчике $i++ $uri = "https://api.vk.com/method/friends.delete?user_id="+$id+"&v=5.25&access_token="+$token $request = Invoke-WebRequest -Uri $uri #удаляем запрос на друзья write-host("$i of $request_count : http://vk.com/id"+$id) #выводим на экран ход процесса Start-Sleep -m 340 $sleep_time #задержка }
Остальные скрипты для Вконтакте:
- Powershell: Автоответчик болтун для Вконтакте
- Powershell: Антиспам в коментариях стены и фотоальбомах сообщества во Вконтакте
- Powershell скрипт: Чтение Вконтакте через RSS
- Powershell: скачиваем фотографии из Вконтакте
- Powershell: скрипт для скачивания музыки из Вконтакте
Понравилось? =) Поделись с друзьями: