0,0
рейтинг
23 марта 2010 в 15:33

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



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-библиотека для работы с В Контакте
Андрей «A.I.» Ситник @Iskin
карма
167,5
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (25)

  • +3
    был бы благодарен тому, кто сделал бы онлайновый сервис с этой штукой.
    • 0
      Онлайн-сервис не сделать так как: 1. нужно будет им сказать свой пароль; 2. В Контакте быстро заблокирует IP-адрес сервиса.
      • 0
        мдя действительно :( а у вконтактовских приложений есть доступ к статусам? может как в фейсбуке сделать?
        • 0
          Даже если у приложений и есть доступ к статусам, то они не могут менять его автоматически. Пользователь должен вручную их открыть. В Контакте очень просто :).
          • 0
            :( очень жаль :(
      • 0
        Все прокси не перебанить. Так, что только одна проблема.
        • 0
          Ну стабильный и полезный сервис на постоянной борьбе не сделать :). Но можете попытаться, скрипт свободный (только автора упомяните).
  • +1
    «среди своих простых друзей» — как звучит-то! 8)
  • +1
    Неплохая вообщем-то идея, жаль что я контактом только для переписки пользуюсь, и то редко.
    • 0
      Аналогично. Больше для старых друзей сделал.
      • 0
        … чтобы транслировать Твиты старым друзьям.
  • 0
    Очень СПАСИБО!!!
  • –5
    Twitter + ВКонтакте = вдвойне «фу», imho
    ну достала уже вся эта истерия с микросоциальным дрочерством, ей богу
    • +1
      Не пользуйтесь раз не нужно :-), это статья о конкретном инструменту, а не о преимуществах этих сетей. Лично для меня Твиттер — это не «микроблогинг», а инструмент для broadcast сообщений, а В Контакте лишь единственный канал связи для некоторых знакомых (мы же звоним по устаревшим телефонным линиями бабушке :-) ).
  • 0
    Блин, сколько этих скриптов развелось… ) И один грустнее другого по требованиям.

    Вот тогда мой синтез предыдущих рецептов — простая пыха, работает со стандартными модулями, пишет из vkontakte в twitter и наоборот в зависимости от новизны статуса.

    Никаких хэшей, и хитрых авторизаций — один хрен такие скрипты должны работать там, куда чужим доступ заказан. Я свой запустил на домашней машине.

    Получайте удовольствие.
    • 0
      Скриптов много, поэтому я захотел сделать всё правильно :-). Чтобы был пакет с автоматическим обновлением из репозитория.
  • +1
    Очень удобно на локальной машине! Спасибо!
    Только вот у меня проблема, судя по всему дома и на работе от oauth твиттера возвращаються разные значения. В результате если я настроил его на работе, то дома он не работает ((
    • 0
      Есть просто решение. Настройте на одной машине, а потом перенесите файл настроек на другую. Тогда на обоих машина скрипт будет использовать один OAuth-ключ :).
      • 0
        У меня ноут. Если я запускаю скрипт установки на работе, то работает только на работе. Если конфигурю дома работает только дома… прям шаманство какое-то
        • 0
          А ноут на работе и дома один и тот же? Покажи файлы настроек, которые генерируются там (поставь звёздочки в первой половине vk_session, twitter_token, twitter_secret, чтобы проверить отличаются ли они).
          • 0
            Да один и тот же.
            Файлы глянул все одинаковое, кроме сессии контакта, она отличаеться ((

            • 0
              Тогда почему «oauth твиттера возвращаються разные значения»? O_o

              Хотя я кажется знаю в чём проблема :). Может скрипт на работе и дома имеют разные ID последних синхронизированных сообщений (там специальный файл имя_last_message)?
              • 0
                Поступил проще, настроил на работе и дома, сделал два разных файла настроек, в крон соотвественно две задачи, хоть одна но выполняеться )) Коряво, но должно работать! Спасибо что сделали возможность передавать файл настроек скрипту в качестве параметра!
  • 0
    Я постоянно сталкиваюсь с проблемой просроченных сессий, аля
    /usr/lib64/ruby/1.8/open-uri.rb:182:in `open_loop': HTTP redirection loop
    Issue закрыта, что можно сделать?
    • 0
      Проще всего подождать сильного и принципиального обновления twitter2vk :). Должно быть в этом или следующем месяце.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.