Generating RSS Feed for opened or closed wall of user or community (group, public page or event page) on vk.com
Генерация RSS-ленты открытой или закрытой стены пользователя или сообщества (группы, публичной страницы или мероприятия) во Вконтакте.
- Получение RSS-ленты открытых стен (не требующих авторизации): извлечение описания из разных частей (включая вложенные) и построение заголовков на основе описания.
- Получение RSS-ленты закрытых стен при наличии токена с правами оффлайн-доступа, привязанного к профилю, которому открыт доступ к такой стене. Ниже описан один из способов получения токена.
- Получение произвольного количества записей со стены.
- Фильтрация постов по соответствию и/или несоответствию регулярному выражению в стиле PCRE.
- Извлечение хеш-тегов в качестве RSS-категорий.
- HTML-форматирование всех видов ссылок, изображений, аудиозаписей (плеер посредством HTML5), переносов строк.
- Допустимо использование HTTP, HTTPS, SOCKS4, SOCKS4A или SOCKS5 прокси-сервера для запросов.
- PHP>=5.2.2 (включая версии 5.3.X, 5.4.X, 5.5.X, 5.6.X, 7.0.X) с установленными по умолчанию поставляемыми расширениями
mbstring
,json
,pcre
. - Для отправки запросов через HTTPS должно быть установлено расширение
openssl
у PHP. В случае использованияaccess_token
наличие расширенияopenssl
обязательно, т.к. запросы сaccess_token
могут отправляться только через HTTPS-протокол. - Скрипт предпочитает использовать встроенные в PHP возможности по отправке запросов. Если у PHP отключена встроенная возможность загрузки файлов по URL (отключен параметр
allow_url_fopen
в конфигурации или параметрах интерпретатора), но при этом у PHP установлено расширениеcURL
, то именно оно будет использоваться для загрузки данных. - Если необходимо использовать прокси-сервер, то в случае
- HTTP-прокси — в конфигурации или параметрах интерпретатора PHP должен быть включён параметр
allow_url_fopen
либо установлено расширениеcURL
>=7.10, - HTTPS-прокси — необходимо расширение
openssl
, а также в конфигурации или параметрах интерпретатора PHP должен быть включён параметрallow_url_fopen
либо установлено расширениеcURL
>=7.10, - SOCKS5-прокси — необходимо расширение
cURL
>=7.10, - SOCKS4-прокси — необходим PHP>=5.2.10 с расширением
cURL
>=7.10, - SOCKS4A-прокси — необходим PHP>=5.5.23 или PHP>=5.6.7 (включая 7.0.X) с расширением
cURL
>=7.18.
- HTTP-прокси — в конфигурации или параметрах интерпретатора PHP должен быть включён параметр
В случае каких-либо проблем вместо RSS-ленты выдается страница с HTTP-статусом, отличным от 200, и с описанием проблемы.
Параметр id
обязателен, остальные необязательны.
-
[обязательный]
id
— короткое название, ID-номер (в случае сообщества ID начинается со знака-
) или полный идентификатор человека/сообщества (в виде idXXXX, clubXXXX, publicXXXX, eventXXXX). Примеры допустимых значений параметраid
:123456
,id123456
— оба значения указывают на одну и ту же страницу пользователя с ID 123456,-123456
,club123456
— оба значения указывают на одну и ту же группу с ID 123456,-123456
,public123456
— оба значения указывают на одну и ту же публичную страницу с ID 123456,-123456
,event123456
— оба значения указывают на одну и ту же страницу мероприятия с ID 123456,apiclub
— значение указывает на пользователя или сообщество с данным коротким названием.
Ради обратной совместимости допускается вместо
id
использоватьdomain
илиowner_id
. -
count
— количество обрабатываемых записей, начиная с последней опубликованной (произвольное количество, включая более 100, по умолчанию 20). Если значение больше 100, то будут отправляться несколько запросов для получения записей, т.к. за один запрос можно получить не более 100 записей; между запросами задержка минимум в 1 секунду, чтобы не превышать ограничения VK API (не более 3 запросов в секунду).Если дополнительно установлен параметр
owner_only
,include
илиexclude
, то количество выводимых в RSS-ленте записей может быть меньше значенияcount
за счет исключения записей, которые отсеиваются параметромowner_only
,include
илиexclude
. -
include
— регистронезависимое регулярное выражение в стиле PCRE, которое должно соответствовать тексту записи. В начале и в конце выражения символ/
не нужен. -
exclude
— регистронезависимое регулярное выражение в стиле PCRE, которое не должно соответствовать тексту записи. В начале и в конце выражения символ/
не нужен. -
disable_html
— если передан (можно без значения), то описание каждой записи не будет содержать никаких HTML тегов. По умолчанию (отсутствиеdisable_html
) описание может включать HTML-теги для создания гиперссылок, вставки изображений и встраивания аудиозаписей (HTML5). -
owner_only
— если передан (можно без значения), то в RSS-ленту выводятся лишь те записи, которые- в случае стены сообщества опубликованы от имени сообщества,
- в случае стены пользователя опубликованы самим этим пользователем.
По умолчанию выводятся записи ото всех.
-
access_token
— токен с правами оффлайн-доступа для получения записей с публично закрытых стен, но открытых для инициатора этого токена.Если в настройках безопасности профиля будут завершены все сессии, то токен станет невалидным — нужно сформировать токен заново.
-
proxy
— адрес прокси-сервера. Допустимые форматы значения этого параметра:address
,address:port
,type://address
,type://address:port
,login:password@address
,login:password@address:port
,type://login:password@address
,type://login:password@address:port
,
где
address
— домен или IP-адрес прокси,port
— порт,type
— тип прокси (HTTP, HTTPS, SOCKS4, SOCKS4A, SOCKS5),login
иpassword
— логин и пароль для доступа к прокси, если необходимы.Тип прокси и параметры авторизации можно передавать в виде отдельных параметров:
proxy_type
— тип прокси (по умолчанию считается HTTP, если не указано вproxy
иproxy_type
),proxy_login
— логин для доступа к прокси-серверу,proxy_password
— пароль для доступа к прокси-серверу.
Для серверного доступа предпочтительна такая схема:
-
Создать собственное standalone-приложение по этой ссылке. По желанию в настройках приложения можно изменить состояние на «Приложение отключено» — это никак не помешает генерации RSS-ленты.
-
После авторизации под нужным профилем пройти по ссылке:
https://oauth.vk.com/authorize?client_id=APP_ID&display=page&redirect_uri&scope=offline&response_type=code&v=5.54
где вместо
APP_ID
подставить ID созданного приложения — его можно увидеть, например, в настройках приложения. -
Подтвердить права. В результате в адресной строке будет GET-параметр
code
. -
Пройти по ссылке:
https://oauth.vk.com/access_token?client_id=APP_ID&client_secret=APP_SECRET&redirect_uri&code=AUTH_CODE
где
APP_ID
— ID созданного приложения,APP_SECRET
— защищенный ключ приложения (можно увидеть в настройках приложения),AUTH_CODE
— значение параметраcode
из предыдущего шага.В результате будет выдан JSON-отклик с искомым
access_token
— именно это значение и следует использовать в качестве GET-параметра скрипта, генерирующего RSS-ленту. -
При первом использовании токена с IP адреса, отличного от того, с которого получался токен, может выскочить ошибка "API Error 17: Validation required", требующая валидации: для этого необходимо пройти по первой ссылке из описания ошибки и ввести недостающие цифры номера телефона профиля.
В качестве бонуса в статистике созданного приложения можно смотреть частоту запросов к API.
Внимание! Если в настройках безопасности профиля будут завершены сессии приложения, то токен станет невалидным — нужно сформировать новый токен, повторив пункты 2-5.
index.php?id=apiclub
index.php?id=-1
index.php?id=id1
index.php?id=club1
index.php?id=club1&disable_html
index.php?id=club123321&access_token=xxxxxxxxx
index.php?id=apiclub&count=100&include=рекомендуем
index.php?id=apiclub&proxy=localhost:8080
index.php?id=apiclub&proxy=localhost:8080&proxy_type=https
index.php?id=apiclub&proxy=https5%3A%2F%2Flocalhost:8080
index.php?id=-1&count=100&include=(рекомендуем|приглашаем|\d{3,})
Примечание: в последнем примере при таком вызове напрямую через GET-параметры может потребоваться кодирование символов: index.php?id=-1&count=100&include=(%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%7C%D0%BF%D1%80%D0%B8%D0%B3%D0%BB%D0%B0%D1%88%D0%B0%D0%B5%D0%BC%7C%5Cd%7B3%2C%7D)