Powershell скрипты для Вконтакте

Скрипты для вконтакте

В этой записи я буду складировать свои небольшие 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 #задержка
}

Остальные скрипты для Вконтакте:

Понравилось? =) Поделись с друзьями:

Обсудить