Появилась задача выкладывать посты(просто с текстом) в сообщество Вконтакте, помогите как осуществить данную задачу через python Решение:
Ну в том то и дело, что этим же методом и делается пост в группе, просто через авторизацию юзера. Посмотрите на атрибуты которые передаются в этот метод, там есть атрибут owner_id, попробуйте в него передать айди группы, где находится ваш бот(но с авторизацией через ключ пользователя)
import requests message = «hello world» params = ( (‘v’, ‘5.107’), (‘access_token’, «token»), (‘owner_id’, id), #если нужно выкладывать в паблик параметр должен быть отрицательным (‘message’, message), (‘friends_only’, 0), (‘from_group’, 1) ) response = requests.get(‘https://api.vk.com/method/wall.post?’, params=params) print(response.text)
Источник: ru.stackoverflow.com
Публикация на стене Вконтакте средствами API — кросспостинг
Метод, который мы рассмотрим ниже, позволяет размещать информацию на страницах любого пользователя или группы,
VK API WALL.POST Отправляем запись в группу методом post
к которому имеет доступ авторизованный пользователь.
Кросспосотинг — умышленное автоматическое, полуавтоматическое или ручное помещение одной и той же статьи, ссылки или темы, в форумы, блоги, либо иной формы сайты или публичные переписки, в том числе и в режиме онлайнового общения с целью наращивание ссылочной массы и показателей тИЦ и Google PR, привлечение трафика с бесплатных блог-площадок, увеличение популярности в блогосфере (создание имиджа).
Исходя из выше следующего мы делаем вывод, что кросспостинг активно способствует развитию веб-сайта и является эффективной тенденцией, освоенной, на сегодняшний день, далеко не каждым сайтом. К нашему большому удивлению вопрос кросспостинга одного из популярных соц. ресурсов рунета практически не освещен — нам не удалось найти ни одной полноценной, свежей, рабочей статьи по данному вопросу. В связи с этим мы берем на себя ответственность просветить нашего читателя и предложить на публичное обозрение метод организации кросспостинга с соц. сетью «Вкотакте».
Метод который мы рассмотрим ниже позволяет размещать информацию на страницах любого пользователя или группы к которому имеет доступ авторизованному пользователю.
Ресурс «Вконтакте» имеет некоторые ограничения в вызове методов API для различных типов приложений. Полную и актуальную информацию по данному вопросы вы сможете найти в разделе документация .
Кросспостинг Вконтакте средствами API
На практике все оказалось довольно просто. Если не обращать внимание на косяки документации, которые мы будем отмечать особым «образом» в серии статей кросспостинга.
Прежде всего необходимо создать Standalone-приложение. Сделать это можно следуя следующим пунктам:
- Перейдем в раздел разработчикам и нажмем кнопку «Создать приложение».
- Выбираем тип приложения «Standalone-приложение» и вводим любое имя приложения. Например: Auto msg.
- После нажатия по кнопке «Подключить приложение» у вас затребуют код, который придет вам в виде СМС в течении минуты на мобильный номер телефона указанный в профиле пользователя под которым вы авторизованы.
- Отлично! У Вас уже есть standalone-приложение.
PS в дальнейшем информацию вашего приложения вы можете редактировать на странице Приложения .
Wall.post для VK Пример как сделать пост в сообщество группу через Python
PSS Кстати, вы не сможете удалить созданные вами приложения. После осознания этой информации у нас задергался левый глаз и зачесалась правая пятка! Мы не привыкли работать с сервисами, где нет возможности вернуться на исходную!
Далее нам потребуется провести первоначальную конфигурацию созданного приложения, без которой мы не сможем получить доступ к API вконтакте с вашего сайта. Итак опять по шагам:
- Переход на страницу Приложения и жмем кнопку «Настройки». Далее ищем ваше созданное приложение в разделе «Администрируемые приложения» и жмем кнопку «Редактировать».
- При желание вы можете пройтись по всем вкладкам и заполнить все необходимые для вас поля.
- Переходим на вкладку «Настройки» и заполняем обязательные поля: адрес сайта, Базовый домен (домены которым разрешен доступ к API). Значение «ID приложения» вам необходимо запомнить, оно нам пригодится в дальнейшем.
- Не забудьте сохранить изменения.
Далее что нам необходимо — это получить доступ вашего сайта к методам API. Для этой процедуры ВК использует Авторизация на базе OAuth 2.0 . Принцип авторизации очень простой:
- Формируем ссылку http://api.vkontakte.ru/oauth/authorize?client_id=redirect_uri=http://api.vk.com/blank.html
scope — запрашиваемые права доступа приложения, которые можно перечислять через запятую. В данном случае приложение запрашивает доступ к API со стороннего сервера в любое время (offline) и wall – доступ к методам работы со стеной;
redirect_uri — ссылка для возврата ответа сервера. В нашем случае обязательный параметр равный http://api.vk.com/blank.html , т.к. только данный способ авторизации имеет возможность получить доступ к методам работы со стеной.
response_type — собственно тот параметр который мы хотим получить — access_token. - Переходим по получившейся ссылке( в этот момент вы должны быть авторизованы) и разрешаем доступ приложению.
- Далее Вас перебрасывает на ссылку http://api.vk.com/blank.html с рядом параметров. Нужный нам параметр access_token. Копируем его значение куда-нибудь. Оно нам необходимо для доступа к API.
И так поздравляем Вас — вы получили свой ключ доступа для вызова методов API. При помощи данного ключа вы сможете обращаться к методам API со своего сайта от имени авторизованного пользователя. Дело осталось за малым — научиться постить на доску Вконтакте средами API. В этой затее нем ничего сложного как и в прошлых шагав получения доступа к API:
-
Формируем GET запрос https://api.vk.com/method/wall.post?owner_id=from_group=attachments=-«.
friends_only — 1 — запись будет доступна только друзьям, 0 — всем пользователям. По умолчанию публикуемые записи доступны всем пользователям.
from_group — Данный параметр учитывается, если owner_id < 0(запись публикуется на стене группы). 1 — запись будет опубликована от имени группы, 0 — запись будет опубликована от имени пользователя (по умолчанию).
message — текст сообщения (является обязательным, если не задан параметр attachments)
attachments — список объектов, приложенных к записи и разделённых символом «,». Поле attachments представляется в формате:
- photo — фотография;
- video — видеозапись ;
- audio — аудиозапись;
- doc — документ;
- page — wiki-страница;
- note — заметка;
- poll — опрос.
- album — альбом.
photo100172_166443618,photo66748_265827614
Также в поле attachments может быть указана ссылка на внешнюю страницу, которую Вы хотите разместить в записи, например:
photo66748_265827614, http://habrahabr.ru
При попытке приложить больше одной ссылки будет возвращена ошибка.
Заключение
В заключение мы хотели бы отметить, что организация кросспостинговой системы с соц. сетью «Вконтакте» задача не сложная, и ,не смотря на немногочисленные ошибки в документации для разработчика, методология работы с API вполне доступно и достойно описана. Теперь Вы владеете знанием о принципе организации кросспостинговой системы с соц. сетью «Вконтакте». Обладая знаниями данного принципа у вас не возникнет затруднений в реализации кроспостинга на любом языке программирования. Хотим еще раз отметить инновационность и значимость данного метода раскрутки ресурсов, который позволяет охватить большую предполагаемую аудиторию и, как следствие, повысить посещаемость, тиц, Google PR, привлечение трафика с бесплатных блог-площадок, увеличение популярности в блогосфере (создание имиджа).
Лучший способ сказать автору «СПАСИБО» рассказать друзьям или поделиться ссылкой!
Другие статьи:
В этой статье Мы покажем Вам, как сделать так, чтобы шапка сайта выезжала при прокрутке страницы вверх, но при этом скрывалась при прокрутке страницы вниз, чтобы не загораживать нам просмотр самой страницы.
Всплывающая фиксированная навигация для сайта jQuery, CSS — инструкция, примеры
DateTimePicker – удобный и легкий в использовании плагин для быстрой подстановки даты и времени в поля ввода.
Плагин DateTimePicker для сайта — инструкция, настройка, инициализация
В этой статье будет рассмотрено решение этой задачи с использованием плагина Masked Input, который отличается простотой и удобством в использовании.
Плагин маски ввода для input — jquery maskedinput — инструкция, настройка, инициализация
С помощью PHPExcel можно производить чтение и запись информации в файлы, форматировать их содержимое,выполнять операции с формулами, стилями и т.д.
Чтение excel на PHP — основные методы класса PHPExcel
Текстовый редактор TinyMCE в визуальном режиме при стандартной конфигурации обрезает некоторый теги и свойства.
TinyMCE вырезает теги — исключения для тегов TinyMCE
Научимся вставлять теги в выделенный фрагмент текста, вставлять теги на место селектора в тексте и получать средствами JS HTML код отредактированного текста и текст без HTML сущностей.
Cвойства и методы TinyMCE — вставка тегов, вывод значений
Как вы уже поняли, редактор является платформенным Javascript редактором HTML кода, т.е. WYSIWYG редактором для сайтов и веб приложений. Разработчиком этого полезного продукта является компания Moxiecode Systems AB.
Установка и настройка TinyMCE — инициализация и параметры
В статье мы: познакомимся с каруселью; научимся интегрировать ее на свой сайт; познакомимся с основными параметрами инициализации;рассмотрим самые популярные свойства и методы классов jCarousel
Установка и настройка jCarousel — параметры и методы
Любой backend программист php сталкивается с задачей автоматизации почтовой рассылки на веб сайтах и многие,кто сталкивался с данной задачей впервые, вставали перед ключевым вопросом: «Писать или не писать smtp клиент с нуля?».
Источник: r-band.ru
Automated posting on Vkontakte public pages using VK API and Python
Vk.com (Vkontakte) is the most popular social network Russia and Ex-USSR with 430+ million users. Traditional advantages of vk.com – huge amount of free music and video. The service allows users to upload and share files and for a long time was quite tolerant to piracy. In 2016 Mail.Ru Group, Vkontakte parent company, has solved all problems with major music labels and now works closely with the rights holders.
VKontakte has very efficient features for creating communities: public pages (blogs) and groups (open and closed web-forums). In VK communities you can easily share news, photo, audio, video, text files in different formats, create discussions topics and wiki-pages. When I was studying at the University in 2003-2009, to share information in a study group we needed to create our own website and phpBB-based forum. Now practically all students simply use VKontakte groups for this. VKontakte shows all content in groups as is, without hiding and filtering.
With reach automation capabilities, you can do various interesting things based on VK. For a start, I decided to post all annotations from my https://avleonov.com blog to https://vk.com/avleonovcom Vkontakte page. I created this page in web GUI and filled it with content automatically using my own python scripts.
Creating a new application
I want to work with Vkontakte from my Python scripts. So, I will need to create a new Standalone Application for this. You can do it here: https://vk.com/editapp?act=create
Upd. March 2018 Integration with Vkontakte suddenly broke, because they added mandatory version parameter to all calls.
Getting sms code for confirmation. And now I have a new application:
I changed status to “Application on and visible to all”.
Getting page info
Now let’s try to do something. All available methods are listed at https://vk.com/dev/methods
For most of the methods token authentication required. For example, using community token, you can do some operations on your page. Let’s get it. I go to the page https://vk.com/avleonovcom?act=tokens
Select required rights for a new access token:
- Allow the application to control the community
- Allow access to community messages
- Allow access to community photos
- Allow access to community documents
Getting sms code for confirmation. And now I have a token:
Now let’s get information about the group:
#!/usr/bin/python import community_token = «3bXXXXXXXXXXXXXXXXa3» params = ( (‘group_id’, ‘avleonovcom’), (‘access_token’, community_token), ) response = requests.get(‘https://api.vk.com/method/groups.getById’, params=params) print(response.text)
Response in Json:
Creating a post
Ok, now let’s see how to post something on a community wall https://vk.com/dev/wall.post
For this I need user token. I will try “Implicit Flow” for User Access Token.
I simply open this url in browser:
https://oauth.vk.com/authorize?client_id=6096665redirect_uri=https://oauth.vk.com/blank.htmlresponse_type=tokenexpires_in=0bdXXXXXXXXXXXXXXXX49″ params = ( (‘owner_id’, ‘-149273431’), (‘from_group’, ‘1’), (‘message’, ‘Hello world!’), (‘access_token’, user_token), ) response = requests.get(‘https://api.vk.com/method/wall.post’, params=params) print(response.text)
First automatically posted message! Great!
Ok, now let’s try to post url with some text and photo
params = ( (‘owner_id’, ‘-149273431’), (‘from_group’, ‘1’), (‘message’, ‘Hello world2!’), (‘message’, ‘photo1468099_456239095,https://avleonov.com’), (‘access_token’, user_token), ) response = requests.get(‘https://api.vk.com/method/wall.post’, params=params) print(response.text)
All necessary elements are here: multiline, hashtags, urls and pictures. It’s a pitty that I can’t specify image for any url, like I can do it in GUI.
As you see, I have used picture ID photo1468099_456239095 from my personal page. So, let’s also see how to add pictures to the community page.
Creating a new photo album
First of all, I need a photo album at my page. I can create it manually or use this method https://vk.com/dev/photos.createAlbum
params = ( (‘group_id’, ‘149273431’), (‘title’, ‘blog illustrations’), (‘description’, ‘images from avleonov.com’), (‘upload_by_admins_only’, ‘0’), (‘comments_disabled’, ‘0’), (‘access_token’, user_token), ) response = requests.get(‘https://api.vk.com/method/photos.createAlbum’, params=params) print(response.text)
Ok, here is my new album:
Now let’s add images to this album.
Uploading images
First of all, I need to ask Vk what server I can use for uploading images in particular community and album: https://vk.com/dev/photos.getUploadServer
params = ( (‘group_id’, ‘149273431’), (‘album_id’, ‘245830662’), (‘access_token’, user_token), ) response = requests.get(‘https://api.vk.com/method/photos.getUploadServer’, params=params) print(response.text)
Getting url from this json:
import json upload_server = json.loads(response.text)[‘response’][‘upload_url’] print(upload_server)
Now I can upload image file petya.png to the server using this url
files = response = requests.post(upload_server, files=files) print(response.text)
Getting necessary parameters:
img_hash = json.loads(response.text)[‘hash’] photos_list = json.loads(response.text)[‘photos_list’] server = json.loads(response.text)[‘server’]
And finally save uploaded file to the photo album: https://vk.com/dev/photos.save
params = ( (‘group_id’, ‘149273431’), (‘album_id’, ‘245830662’), (‘hash’, img_hash), (‘photos_list’, photos_list), (‘server’, server), (‘caption’, ‘test image’), (‘access_token’, user_token), ) response = requests.get(‘https://api.vk.com/method/photos.save’, params=params) print(response.text)
Note! The server returns the ID photo1468099_456239022. This is my user ID. And the page ID is 149273431. I do not know why this ID is returned. So, I edit id with this substitution:
photo_id = re.sub(«photo1468099», «photo-149273431», photo_id)
So, now we can add pictures to community photo album. We can make a post from the image identifier, text description and the web-link. This is enough to make a successful integration of your site with your Vkontakte page.
Note! There is a limit, you can create no more than 50 posts per day on the wall!
Источник: avleonov.com