
В этой записи я буду складировать свои небольшие 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: скрипт для скачивания музыки из Вконтакте
Понравилось? =) Поделись с друзьями: