Vk api документация методы

Здравствуйте. Имеется ли процедура для execute, с помощью которой можно получать комментарии к посту, чей ID явно не указан? То есть, по номеру поста со стены? К примеру, по этому принципу работает следующий код (из Ответа отсюда), но выяснилось, что он возвращает лишь первую сотню комментариев —

// https://ru.stackoverflow.com/questions/604524/ var owner_id = Args.owner_id; var user_id = Args.user_id; var offset = Args.offset; var post_count = Args.post_count; if (post_count == null) post_count = 1; // количество обрабатываемых постов // Получаем список постов var posts = API.wall.get(< «owner_id»: owner_id, «offset»: offset, «count» : 100, >); var i = 0; var userComments = <>; while(i < posts.items.length i < post_count) < var post_id = posts.items[i].id; var comments = API.wall.getComments(< «owner_id»: owner_id, «post_id»: post_id, «count» : 100, >); var j = 0; while(j < comments.items.length) < if (user_id == null || comments.items[j].from_id == user_id) userComments.push(comments.items[j]); j = j + 1; >i = i + 1; > return userComments;

А вот этот код (отсюда), возвращающий 2500 комментариев, требует явного указания идентификатора поста:

vk api с помощью библиотеки requests


// https://ru.stackoverflow.com/questions/780304/ // count —> 2500 / по умолчанию —> 10 // offset —> 0, 2500, 5000, 7500 и тд var owner_id = Args.owner_id; var post_id = Args.post_id; var offset = Args.offset; var count = Args.count; if(post_id == null || owner_id == null)< return ; // Если параметры не заданы, возвращаем пустой массив > if(count == null) < count = 10; // Значение по умолчанию >if(offset == null) < offset = 0; // Значение по умолчанию >var i = 0; var items = []; while(i < 25 count >items.length) < var cur_count = count — items.length; if(cur_count >100) < cur_count = 100; >items = items + API.wall.getComments()[«items»]; i = i + 1; > return ;

Вопрос заключается в совмещении функционала из обоих кодов, чтобы вызывать процедуру можно было с указанием смещения offset, а не с указанием номера поста. Может быть, для этого в первый код (настроенный на обработку одного поста за один раз) достаточно будет добавить последовательный вызов методов со смещением, как в следующем коде, получающем за раз 500 постов? —

var owner_id = Args.owner_id; var offset = Args.offset; return API.wall.get(< «owner_id» : owner_id, «count» : 100, «filter» : «owner», «offset» : parseInt(offset) + 0 * 100 >).items + API.wall.get(< «owner_id» : owner_id, «count» : 100, «filter» : «owner», «offset» : parseInt(offset) + 1 * 100 >).items + API.wall.get(< «owner_id» : owner_id, «count» : 100, «filter» : «owner», «offset» : parseInt(offset) + 2 * 100 >).items + API.wall.get(< «owner_id» : owner_id, «count» : 100, «filter» : «owner», «offset» : parseInt(offset) + 3 * 100 >).items + API.wall.get(< «owner_id» : owner_id, «count» : 100, «filter» : «owner», «offset» : parseInt(offset) + 4 * 100 >).items;

Источник: www.programmersforum.ru

VK API #3 Post photo on the wall

Получение комментариев и участников сообщества vk.com — методом execute (VK API)

Возник вопрос по предложенному в этом ответе решению, касающемуся получения комментариев пользователя, оставленных в конкретном сообществе на vk. Вроде, воспроизвёл у себя в приложении процедуру, подставил ID профиля и ID случайного пользователя из комментария к первому посту к этому профилю (менял их местами), но всякий раз выводится сообщение об ошибке. Прошу взглянуть: https://i.stack.imgur.com/cixeP.png Кроме того, по тому же методу не удаётся задействовать следующий код (отсюда), получающий список участников сообщества:

VK.init(< apiId: 6456476 // ID вашего приложения VK >); var membersGroups = []; // массив участников группы getMembers(30666517); // получаем информацию о группе и её участников function getMembers(group_id) < VK.Api.call(‘groups.getById’, , function(r) < if(r.response) < $(‘.group_info’) .html(‘
‘ + r.response[0].name + ‘
Участников: ‘ + r.response[0].members_count); getMembers20k(group_id, r.response[0].members_count); // получаем участников группы и пишем в массив membersGroups > >); > // получаем участников группы, members_count — количество участников function getMembers20k(group_id, members_count) < var code = ‘var members = API.groups.getMembers().items;’ // делаем первый запрос и создаем массив + ‘var offset = 1000;’ // это сдвиг по участникам группы + ‘while (offset < 25000 (offset + ‘ + membersGroups.length + ‘) < ‘ + members_count + ‘)’ // пока не получили 20000 и не прошлись по всем участникам + ‘).items;’ // сдвиг участников на offset + мощность массива + ‘offset = offset + 1000;’ // увеличиваем сдвиг на 1000 + ‘>;’ + ‘return members;’; // вернуть массив members VK.Api.call(«execute», , function(data) < if (data.response) < membersGroups = membersGroups.concat(JSON.parse(«[» + data.response + «]»)); // запишем это в массив $(‘.member_ids’).html(‘Загрузка: ‘ + membersGroups.length + ‘/’ + members_count); if (members_count >membersGroups.length) // если еще не всех участников получили setTimeout(function() < getMembers20k(group_id, members_count); >, 333); // задержка 0.333 с. после чего запустим еще раз else // если конец то alert(‘Ура тест закончен! В массиве membersGroups теперь ‘ + membersGroups.length + ‘ элементов.’); > else < alert(data.error.error_msg); // в случае ошибки выведем её >>); >

Еще по теме:  Как заблокировать страницу Вконтакте

Отслеживать

1,073 6 6 серебряных знаков 25 25 бронзовых знаков

Источник: ru.stackoverflow.com

Vk api python 3 документация

No Image

Я бы на вашем месте сначала вручную прощупал API, с использованием curl, например или Postman, покуривая при этом официальную документаций. Все руководства и туториалы которые существуют на данный момент наверняка частично частично, а то и полностью устарели.

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

Используйте их, а также официальную документацию для обучения.

Привет, Хабр! Данная статья предназначена для тех, кто хочет разобраться с основами VK API на Python, так как статей по этому поводу нет (на Хабре есть одна статья, но она уже не совсем актуальна, так как некоторые методы не работают), а на других ресурсах мне удалось найти только вопросы пользователей, но никаких гайдов и прочего.

Для работы с VK API в Python есть две популярные библиотеки: vk и vk_api. Какая из библиотек лучше я судить не возьмусь, но скажу одно: у vk документация слишком мала (поэтому разбирался практически методом тыка) и на английском языке, а у vk_api документация более развернута (поэтому писать о данной библиотеке смысла не вижу) и на русском. Для меня не главное на каком языке документация, но для некоторых пользователей это играет большое значение при выборе.

Как вы уже поняли, в данной статье рассматривается работа с библиотекой vk.

Устанавливается данная библиотека следующей стандартной командой:

После того, как модуль будет установлен, нам необходимо создать приложение на сайте соц.сети. Я думаю, что большинство пользователей умеет это делать, поэтому информацию по этому шагу пропускаю. Если кто не умеет, то гуглим, не стесняемся.

После регистрации приложения нам нужен будет только его ID.

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

Таким образом мы получим фамилию, имя и >

Т.е. в данном случае мы получим не только информацию об имени и фамилии пользователя с >
Действия без авторизации не предоставляют нам возможность использования VK API на полную мощь, поэтому рассмотрим авторизацию с вводом личных данных. Есть два способа: ввод логина и пароля, ввод токена. Чтобы авторизоваться с помощью токена нужно немного дополнить первый пример, а именно вот эту строку:

Дальше все остается так же, как и было раньше, без каких-либо изменений.

Следующий способ авторизации – ввод логина и пароля. В данном случае тоже все довольно просто и понятно:

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

При такой авторизации нужно указывать не только логин, пароль и ID приложения, но то, к чему мы хотим получить доступ.

Например, у нас сейчас не указан доступ к стене пользователя, поэтому при попытке добавить запись на стену мы получим ошибку:

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

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

Вот и все. Вызов методов происходит по одному шаблону:

Таким образом мы отправляем сообщение hello пользователю с >
Для более наглядной работы библиотеки я реализовал небольшую программку, которая следит когда пользователь зашел в ВК, а когда из него вышел (слабо верится, но может будет кому интересна). Код программы ниже и на GitHub.

Еще по теме:  Посадочная страница в ВК что это

Данная статья предназначалась лишь для понимания основ работы с VK API на Python с использованием библиотеки VK.

Хочу поделиться опытом, как я использовал Питона в одном из своих проектов по рекламе в VK. Для тех кто не в курсе, Питон — это такой язык программирования.

Данная статья может пригодиться тем, кто учится программировать на Питоне или занимается рекламой в VK.

Описание задачи и пути решения

Мне потребовалось найти VK-группы в заданном городе по нескольким ключевым словам, чтобы запустить на них рекламу. Эти группы нужно было где-то сохранить, чтобы не искать каждый раз по новой.

По каждой группе мне важна следующая информация:

  • id — чтобы использовать в рекламе;
  • name — чтобы оценить подходит группа или нет (Например, для ключевого слова «ремонт» может быть ремонт квартир или ремонт машин);
  • members_count — чтобы оценить размер группы;
  • contacts — чтобы получить список id пользователей, на которых не следует давать рекламу;
  • группы должны быть отсортированы по отношению дневной посещаемости к количеству пользователей — чтобы не использовать группы, которые никто не посещает.

Сначала, я начал искать группы используя стандартный поиск. Но это оказалось очень не быстро. На пятой группе я призадумался о более быстром способе.

Более быстрый способ оказался VK API через браузер. В документации VK https://vk.com/dev/manuals подробно написано, как это делать.

В конечном итоге, я решил использовать VK API в Python, чтобы решать подобные задачи за секунды.

Как использовать VK API через браузер

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

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

После успешной авторизации ваш браузер будет перенаправлен на другую страницу, а ключ доступа к VK API будет передан в качестве фрагмента URL-ссылки. Смотрите пример ниже. Ключ выделен жирным.

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

Метод database.getCities

Этот метод я использовал, чтобы получить код ( >

В случае успешного запроса будет выдан следующий ответ:

Как видно из примера, id города равен 24. Будем использовать это номер в качестве параметра city_id при вызове следующего метода.

Этот метод я использовал, чтобы получить >

Успешный ответ может быть очень большим. Поэтому привожу его для примера в сокращенном виде.

Это пример выводе первой группы, а всего их может быть до 500. Группы сортируются по отношению дневной посещаемости к количеству пользователей (sort=2).

Ответ получен в формате json. Этот формат не очень удобен в данном случае. Поэтому его нужно преобразовать в формат csv. Для этого копируем текст ответа (Ctrl+A, Ctrl+C), и используем какой-нибудь онлайн-конвертер. Например, этот http://www.convertcsv.com/json-to-csv.htm.

Ответ вставляем в верхнее поле (Ctrl+V), как на рисунке ниже, и нажимаем кнопку «Convert JSON To CSV». Результат можно скачать с помощью кнопки «Download Result».

Открыть полученный файл можно с помощью Excel.

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

Я получаю его следующим способом. Копирую все значения столбика id. Затем вставляю его в новый файл используя Вставить Как… с опцией «Транспонировать». То есть преобразую столбец таблицы в строку. Теперь сохраняю этот файл формате csv.

Полученный файл можно открыть с помощью Блокнота. Там будет текст следующего вида:

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

Метод groups.getById

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

Ответ будет получен, как обычно, в формате json. Его нужно будет преобразовать в формат csv, способом описанным выше.

Для сохранения порядка сортировки групп по отношению дневной посещаемости к количеству пользователей, я в полученный csv-файл добавил столбец ‘sort2’ , в котором последовательно пронумеровал все строки. Образец файла ниже.

Еще по теме:  Радиаторы buderus нижнее подключение vk profil
sort2 id type is_closed screen_name name members_count contacts
1 147347745 group club147347745 Установка дверей, ремонт балконов. Балашиха, ВАО 218 []
2 96779849 group bastionsdoors Стальные двери Бастион-C 2653 [, ]
3 84074989 group timartdvery Двери Надмосковья 782 [, ]
4 77485430 page dveriarmada Двери Армада. Выбираем правильно! 111 []
5 95963951 group club95963951 Межкомнатные и металлические двери.СТРОЙВЕСТ. 2588 []
6 139751651 group dveri_v_balashihe Межкомнатные двери в Балашихе 71 [, ]
7 130165257 group dverin1 Мир дверей 26 []
8 88654849 group club88654849 BARIER-HOUSE стальные двери в Москве 15 []

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

Как использовать VK API в Python

Реализация описанного выше алгоритма на Python-е оказалась проще, чем я ожидал. От начала программирования до рабочей версии программы прошло около 40 минут. Получается, если бы я сразу начал программировать, то всё получилось бы быстрее часа на два. Это даже несмотря на то, что пришлось тратить время на изучение самого языка.

Для реализации взял первую попавшуюся библиотеку для работы с VK в Python-е. Установил её следующей командой:

Ключ «—user» я использовал, чтобы избежать ошибок с разрешениями. У меня Linux, а ключ позволяет установить пакет только для текущего пользователя.

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

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

Дальше просто идёт реализация алгоритма описанного выше. В конце я дам полный листинг программы. А по ходу просто буду пояснять отдельные моменты реализации.

Получение кода города:

Метод database.getCities возвращает Словарь (dict), в котором под ключом ‘items’ хранится список городов, которые соответствуют ключевому слову запроса. Обратите внимания, что переменной Cities я присваиваю уже этот список, а не весь Словарь.

Вот ещё интересная реализация получения списка id групп методом
groups.search:

Эта конструкция называется «Генерация списка». Такое, по-моему есть только в Python-е. Схематично конструкция выглядит так:

Очень мне понравилась эта конструкция. При реализации через браузер на эту операцию уходило больше всего времени. А тут одной строчкой. Классно.

Ещё мне понравилась реализация работы с csv-файлами методом DictWriter. Сначала задаётся заголовок…

А затем целая группа сохраняется в файл одной строчкой:

В целом, остальное должно быть понятно без слов. Просто привожу листинг.

Если что-то непонятно, то пишите в комментариях. Буду подробно отвечать

Пути развития программы

Программа полностью выполняет свою задачу. Но это не значить, что её нельзя сделать лучше. Я здесь вижу несколько направлений развития.

Классическое консольное приложение

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

Контакты в отдельный файл

Контакты групп часто нужны, чтобы не показывать на них рекламу. Для этого нужно собрать id всех пользователей из контактов в отдельный файл. В текущей реализации это придётся делать вручную. Между тем добавить такой функционал совсем несложно и займёт минут 15.

Расширение функционала

По мере необходимости можно расширять функционал программы. Например, добавить возможность извлекать пользователей — членов групп и делать их пересечение. Строить списки пользователей, которые состоят в 2-х группах и тому подобное. Пока такой необходимости не было, но если понадобится, то дописать код будет гораздо быстрее, чем делать всё вручную.

Графический или WEB интерфейс

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

Пишите в комментариях, какое ещё развитие программы вы хотели бы видеть.

Источник: 4systems.ru

Рейтинг
( Пока оценок нет )
Загрузка ...