Skip to content
/ vkrss Public

Generates RSS feed of opened/closed vk.com wall, global searched opened posts or news feed posts. Features: post filtering (include/exclude by regexp and/or by owner type), ads skipping, automatic title generation, hash-tags extraction as RSS categories, initial author extraction, HTML formatting

Notifications You must be signed in to change notification settings

woxcab/vkrss

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

В случае каких-либо проблем вместо 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 — пароль для доступа к прокси-серверу.

Как получить бессрочный токен для доступа к стенам, которые доступны своему профилю

Для серверного доступа предпочтительна такая схема:

  1. Создать собственное standalone-приложение по этой ссылке. По желанию в настройках приложения можно изменить состояние на «Приложение отключено» — это никак не помешает генерации RSS-ленты.

  2. После авторизации под нужным профилем пройти по ссылке:

    https://oauth.vk.com/authorize?client_id=APP_ID&display=page&redirect_uri&scope=offline&response_type=code&v=5.54

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

  3. Подтвердить права. В результате в адресной строке будет GET-параметр code.

  4. Пройти по ссылке:

    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-ленту.

  5. При первом использовании токена с 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)

About

Generates RSS feed of opened/closed vk.com wall, global searched opened posts or news feed posts. Features: post filtering (include/exclude by regexp and/or by owner type), ads skipping, automatic title generation, hash-tags extraction as RSS categories, initial author extraction, HTML formatting

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages