Pull to refresh

twitter2vk — из Твиттера во В Контакте

Reading time 3 min
Views 3.8K


twitter2vk — скрипт для автоматической перепубликации статусов из Твиттера во В Контакте. Например, если у вас остались старые друзья, которые никак не хотят уходить из В Контакте.

Преимущества


  • Не хранит паролей, так что потеря файла настроек не будет столь страшна. В настройках хранятся только ID сессии В Контакте и данные для OAuth-входа в Твиттер. Особенно актуально для тех, кто использует один пароль для нескольких сервисов.
  • Поддерживает ретвиты — публикует во В Контакте статусы других пользователей, которые вы отретвитили.
  • Настройка формата статусов и ретвитов во В Контакте. Можно, например, заменять пользователей на ссылки на них или обрезать текст оставляя ссылку после него в полном виде: «Длинный текс… http//twitter.com/my/status/31337».
  • Правила исключения статусов. Можно указывать, какие статусы не будут перепубликоваться во В Контакте (например, ответы другим пользователям Твиттера).


Установка


В идеале скрипт надо установить на сервер, которые постоянно работает, например на VPS или домашний тихий медиа-сервер. Но можно использовать и рабочую машину, но тогда статусу будут перепубликоваться только, когда она включена (впрочем теряться они не будут).
  1. Ставим Ruby и его менеджер пакетов RubyGems (команда для Ubuntu/Debian):
    sudo aptitude install rubygems libopenssl-ruby ruby-dev
  2. Устанавливаем twitter2vk:
    sudo gem install twitter2vk
  3. Запускаем мастер для создания настройки и задачи для cron:
    twitter2vk

Если вы запустите мастер настройки ещё раз и укажите уже созданный файл настроек, то мастер не будет их затирать, а только обновит свойства для входа во В Контакте и Твиттер.

Мастер для создания настроек и скрипт перепубликации — разные пакеты, поэтому настройки можно создать на домашнем компьютере, а на сервера установить только скрипт перепубликации
sudo gem install twitter2vk_reposter

Чисто теоретически скрипт должен работать под Windows. Но тестировался только под ОС вида UNIX.

Настройка


Настройки сохранены в формате YAML, но он довольно прост.

Формат статуса

За формат статуса ответственны три свойства: format, retweet, last. В них можно использовать переменные:
  • %status% — текст статуса.
  • %url% — адрес статуса во Твиттере.
  • %author% — автор статуса. Имеет смысл использовать только в формате ретвита.

Свойства format и retweet используются чтобы задавать вид обычного твитта и ретвитта, соответственно. После этого к ним добавится текст из last.

Если полученный в итоге статус больше допустимого во В Контакте (160 символов), то обрезается сначала format или retweet. Поэтому в last удобно помещать ссылку на твит, чтобы она не обрезалась («Длинный текс… http//twitter.com/my/status/31337»).

format: "%status%"
retweet: "♺ %author%: %status"
last: " %url%"

Замены

Перед публикацией во В Контакте скрипт может заменить нужные слова. Например, убрать # перед хеш-тегами или вместо user вывести ссылку http://twitter.com/user.

Замены указываются в виде массива [паттер, результат] в массиве replace. Можно использовать регулярные выражения. Вместо массива можно использовать код :user_to_url для замены пользователей на ссылки.

replace:
- ["#nowplaying", "Сейчас играет: "]
- [!ruby/regexp /#(\w)/, "\1"]
- :user_to_url

Пропуск статусов

Скрипт использует чёрные и белый список паттернов, чтобы определить, публиковать ли очередной твит во В Контакте — exclude и include, соответственно. В них вы указываете строку или регулярное выражение, которое должно содержаться в тексте твита.

Есть коды для популярных задач:
  • :reply — ответ другому пользователю Твиттера.
  • :retweet — ретвит.

По умолчанию, twitter2vk не перепубликует ответы и твиты содержащие «#novk» (например, «Когда же все мои одногруппники поймут какой же В Контакте отстой #novk»).

В белом списке по умолчанию «#vk», так что если вам надо чтобы твит был опубликован во В Контакте, несмотря на правила их exclude, то надо писать примерно так: « user Ты прав, В Контакте действительно серьёзно отстал от Facebook #vk».

exclude:
- :reply
- "Facebook"
- !ruby/regexp /\d\d\d\s?\$/
include:
- :retweet
- "В Контакте"

См. также


  • Страница на GitHub — исходники и публикация отчётов об ошибках.
  • @andrey_sitnik — твиттер автора, где публикуются обновления twitter2vk.
  • rvk — Ruby-библиотека для работы с В Контакте
Tags:
Hubs:
+7
Comments 25
Comments Comments 25

Articles