Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save llgruff/1de1a235172be4161905908bfd5de324 to your computer and use it in GitHub Desktop.
Save llgruff/1de1a235172be4161905908bfd5de324 to your computer and use it in GitHub Desktop.
Используем API ВКонтакте и Google Chrome Console
/**
Инструкция: Настройки для работы с API vk.com
1. Прочитать Знакомство с API ВКонтакте https://vk.com/dev/first_guide (можно пропустить:))
2. Регистрация приложения:
2.1. Открыть «Мои приложения» https://vk.com/apps?act=manage
2.2. Нажать «Создать»
2.3. Нужно выбрать один из трех типов приложений (для старта Standalone-приложение)
2.4. Подтвердить создание через СМС
2.5. Открыть вкладку «Настройки» в меню слева, сохранить свой «ID приложения», он же API_ID, APP_ID, client_id
3. Авторизация пользователя способом Implicit flow:
3.1. Откройте новую вкладку в браузере, введите в адресную строку запрос, указав свой API_ID:
https://oauth.vk.com/authorize?client_id=API_ID&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=friends&response_type=token&v=5.52
3.2. Нажмите Enter. Нажмите «Разрешить».
3.3. Из полученного URL сохраните свой access_token и user_id
https://oauth.vk.com/blank.html#access_token=???&expires_in=???&user_id=???
4. Теперь Вы можете сделать вызов метода от своего имени через адресную строку браузера
4.1. Получить список друзей, которые сейчас онлайн:
https://api.vk.com/method/friends.getOnline?user_id=???&online_mobile=0&v=5.84&access_token=???
4.2. Получить список всех друзей, с полями city, online, last_seen:
https://api.vk.com/method/friends.get?user_id=???&fields=city%2C%20online%2C%20last_seen&name_case=nom&v=5.84&access_token=???
4.3. Получить список подписчиков:
https://api.vk.com/method/users.getFollowers?user_id=???&offset=0&count=1000&fields=city%2C%20online%2C%20last_seen&name_case=nom&v=5.84&access_token=???
Инструкция: Как очистить свой список друзей ВКонтакте от неактивных пользователей
1. Получить access_token и user_id
2. Открыть https://api.vk.com/method/
3. Открыть консоль браузера, например используя клавиатуру:
3.1. Command - Option - J (Mac)
3.2. Ctrl - Shift - J (Windows/Linux)
4. Скопировать код данный ниже в консоль, указав свой access_token и user_id
5. Запустить скрипт, нажав Enter
6. Ждать завершения работы, изучить логи
7. Если будут неудаленные - повторить)
*/
// Константы, укажите свои
var ACCESS_TOKEN = '', // строка
USER_ID = 0, // число
UNIX_TIMESTAMP = Math.round(new Date().getTime() / 1000),
UNIX_DEADLINE = 2629743; // месяц
// Создаём новый объект XMLHttpRequest
var xhr = new XMLHttpRequest();
// Конфигурируем: GET-запрос на URL. Для теста добавляем &count=5&offset=1000
xhr.open('GET', 'friends.get?user_id='+USER_ID+'&fields=last_seen&name_case=nom&v=5.84&access_token='+ACCESS_TOKEN, false);
// Отсылаем запрос
xhr.send();
// Если код ответа сервера не 200, то это ошибка
if (xhr.status != 200) {
// Обработать ошибку, пример вывода: 404: Not Found
console.error( xhr.status+': '+xhr.statusText );
} else {
// Получаем результат
var json = xhr.responseText,
obj = JSON.parse(json),
Users = obj.response.items,
UsersToDelete = [],
UsersToDeleteSuccess = [],
UsersToDeleteError = [];
console.log( Users );
// Формируем объект для удаления
for (var i = 0; i < Users.length; i++) {
// Если последний визит был больше месяца назад
if ( UNIX_TIMESTAMP - UNIX_DEADLINE > Users[i].last_seen.time ) {
UsersToDelete.push(Users[i]);
}
}
console.log( UsersToDelete );
// Удаляем
for (var i = 0; i < UsersToDelete.length; i++) {
setTimeout(function(i) {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'friends.delete?user_id='+UsersToDelete[i].id+'&v=5.84&access_token='+ACCESS_TOKEN, false);
xhr.send();
if (xhr.status != 200) {
console.error( xhr.status + ': ' + xhr.statusText );
} else {
var json = xhr.responseText,
obj = JSON.parse(json);
// Если удалось успешно удалить друга
if ( typeof( obj.response ) != "undefined" ) {
if ( obj.response.success == 1 ) {
UsersToDeleteSuccess.push(UsersToDelete[i]);
console.log( 'success' );
}
}
if ( typeof( obj.error ) != "undefined" ) {
UsersToDeleteError.push(UsersToDelete[i]);
console.error( obj.error.error_msg );
}
}
if ( UsersToDelete.length == i+1 ) {
console.log( UsersToDeleteSuccess );
console.info( "Всего друзей:",Users.length );
console.info( "Всего для удаления:",UsersToDelete.length );
console.info( "Ошибка удаления:",UsersToDeleteError.length );
console.info( "Всего удалено:",UsersToDeleteSuccess.length );
}
}, i*500, i);
}
}
/**
Для сравнения времени:
Обычная дата (Human readable time) Секунды
1 минута 60 секунд
1 час 3600 секунд
1 день 86400 секунд
1 неделя 604800 секунд
1 месяц (30.44 дней) 2629743 секунд
1 год (365.24 дней) 31556926 секунд
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment