Автопостинг в Twitter

Каждый использует Twitter в своих целях. Кто-то привлекает с его помощью целевую аудиторию на свой блог размещая ссылки, кто-то пытается его монетизировать. Но ручной постинг в него доставляет определенные неудобства. Есть конечно всякие сервисы, например ru.splitweet.com. При помощи него можно сразу писать в несколько акаунтов Twitter. Но услугу постинга по времени он не предоставляет. А если нужно, например периодически публиковать рекламу или просто наполнить сообщениями совсем новый Twitter акаунт?

Есть сервис, при помощи которого можно реализовать постинг с задержкой по времени — это socialoomph.com, но то ли из-за очередей сервера, то ли из-за того что я там использовал free регистрацию, вместо платной, только постил он только с одного акаунта и то не всегда. Один раз была задержка более суток. Некоторые twitter-клиенты, например Tweet Deck тоже дают возможность задать публикацию твита с задержкой. Хоть у Tweet Deck существует поддержка нескольких twitter акаунтов, в данном случае он будет отправлять твиты только в активный на данный момент акаунт. К тому же сам клиент должен быть активен в данное время. Все это конечно хорошо, но хотелось большего.
В результате я стал искать альтернативу, которая удовлетворяла всем моим требованиям. Сейчас я распишу все вкратце, а потом остановлюсь отдельно на каждом пункте.
Итак, я хотел реализовать следующее:

  • Автоматический постинг в twitter по времени и по расписанию
  • Постинг в несколько акаунтов с настраиваемым временем задержки
  • Возможность брать тексты из одного или нескольких текстовых файлов
  • Полная автоматика — добавил тексты и все
  • Работа в фоновом режиме
Автоматический постинг в twitter по времени и по расписанию

Благодаря тому, что я использую такую замечательную ось — Ubuntu Linux, все это реализовать мне не составило большого труда. Для этого я взял консольный twitter-клиент TTYtter v1.1 и написал пару скриптов на bash. Работу по времени реализовал при помощи планировщика заданий Cron.
В определенное время Cron запускал bash скрипт, который брал текст из текстового файла и отправлял в twitter, используя консольный twitter-клиент TTYtter.

Постинг в несколько акаунтов с настраиваемым временем задержки

Проблема с постингом в несколько акаунтов была решена при помощи дублирования. Twitter-клиент TTYtter представляет из себя скрипт, написанный на Perl, который находится всего в одном файле.
В принципе он может работать с различными файлами ключей, но заставить его работать таким образом я не смог. Пришлось просто скопировать этот скрипт в отдельную папку, дублировать и переименовать копии. Соответственно для каждого акаунта в твиттере были использован отдельный скрипт и отдельный файл ключей к нему. Файлы ключей необходимы для авторизации в каждом конкретном акаунте твиттера. Была также несложная процедура авторизации каждой копии TTYtter на их сервере для доступа к twitter, но об этом позже. Время задержки порядок постинга настраивалось в самом bash скрипте. Также был использован набор таких bash скриптов на все мои случаи.

Возможность брать тексты из одного или нескольких текстовых файлов, автоматика и работа в фоновом режиме.

Эта возможность была реализована при помощи все тех же bash скриптов. Автоматика и фоновый режим были реализованы благодаря возможности Cron запускать скрипты в фоновом режиме.

Фактически получился набор скриптов в одной папке, которые запускались в фоновом режиме по расписанию при помощи Cron.

Настройка и установка

А теперь распишу пошагово настройку всего этого. Естественно, все это будет работать на Ubuntu Linux. На Windows это тоже можно реализовать, если вы сможете правильно установить Perl и научить его взаимодействовать со скриптами на bash. Но это мне не интересно. В крайнем случае, вы можете запустить на своем Windows виртуальную машину, установить на нее Ubuntu Linux и использовать все это там.
Итак, качаете архив отсюда. Архив размером — 1.5 мегабайта. Распаковываете все в отдельную папку, желательно создать отдельную в домашней папке. Название папки не кирилицей и без пробелов в названии (чтобы лишних телодвижений потом не делать и скрипты не спотыкались).

Далее необходимо предоставить клиенту TTYtter к вашему акаунту в twitter. Эта процедура делается один раз для каждого акаунта в твиттере. Для этого запускаем TTYtter в консоли, не забыв предварительно дать ему права — 777.
После его запуска он предлагает верифицироваться в twitter, соглашаемся и он нам выдает примерно такую длинную ссылку :

http://dev.twitter.com/apps/key_exchange?oauth_consumer_key=XtbRXaQ pPdfssFwdUmeYw

Копируем ее в отдельное место и закрываем терминал.

Далее авторизируемся броузером в вашем акаунте твиттера и после переходим по этой ссылке.
После загрузки вы увидите следующее:

Соглашаемся, нажав кнопку «Authorize». Вылезает лицензионное соглашение, нажимаем «Accept».
Далее появится страница, где вас поздравят и дадут длинный ключ. Копируем его, имейте ввиду, он должен быть в одну строку без пробелов и переносов.
Ищем в домашней директории скрытый файл .ttytterkey, открываем его текстовым редактором и вставляем эту строку туда.
В результате этих действий у вас появился одни скрытый файл с ключами в домашней директории и запись о подключении в настройках твиттер. Заходим в твиттере в Settings — connections видим следующее:

Можно также проверить постинг запустив клиент в консоли и написав там что-нибудь, затем зайдя через броузер и посмотреть на свой пост. В скобочках естественно будет написан ваш логин в твиттере.
Само сообщение будет выглядеть примерно так:

В данном случае там написано «via API», но это не значит, что если вы будете в другой акаунт постить у вас будет именно эта надпись, но «via web» точно не будет.. Для «via web» вам придется использовать скрипт Imacros, о котором я напишу ниже.

Итак, все настроено, осталось написать скрипт на bash, нам ведь нужна автоматика, а не ручной труд.

Скрипт будет выглядеть так:

#!/bin/bash
notify-send -c info -t 180000000 «Внимание» «Постинг в твиттер начат»
################################################################################
## мультиаки — открываем папку с ttytter и дублируем его под другим именем, ##
## например ttytter2, открываем и переименовываем в файле все ttytterkey ##
## на ttytterkey2, делаем столько, сколько акаунтов в твиттер ##
## создаем в домашней папке пустой файл с именем .ttytterkey2 Далее запускаем ttytter в терминале и ##
## регаемся по ссылке, ключ вставляем в файл .ttytterkey2 ##
##############################################################################
# Вариант 1 — по всем акам много сообщений(или одно) из файла
#(IFS=$’\n'; for a in $(cat twi.txt); do echo $a; ttytter -status=»$a»; sleep 10; ttytter1 -status=»$a»; sleep 10; ttytter2 -status=»$a»; done)
# Вариант 2 — в каждый ак свое сообщение из своего файла
(IFS=$’\n'; for a in $(cat twi.txt); do echo $a; ttytter -status=»$a»; sleep 10; done)
sleep 15
(IFS=$’\n'; for b in $(cat twi1.txt); do echo $b; ttytter1 -status=»$b»; sleep 20; done)
sleep 20
(IFS=$’\n'; for c in $(cat twi2.txt); do echo $c; ttytter2 -status=»$c»; sleep 25; done)
sleep 20
(IFS=$’\n'; for c in $(cat twi3.txt); do echo $c; ttytter3 -status=»$d»; sleep 25; done)
notify-send -c info -t 180000000 «Балдеем дальше» «Постинг в твиттер закончен..»

В данном примере реализован постинг в 4 тви-акаунта из 4 текстовых фалов.
Файлы twi.txt, twi2.txt и так далее создаем в текстовом редакторе. В этих файлы вставляем текст твитов. Формат — в каждой строке по 1 твиту. Сколько твитов будет в файле столько он и запостит по очереди.
С различными вариациями этого скрипта можно поиграть и наделать еще скриптов, которые будут все это делать с теми параметрами, которые нам нужны. Ну а дальше вам решать — либо запустить этот скрипт по крону в определенное время, либо запускать его вручную.
Строчки типа «notify-send -c info -t 180000000 «Балдеем дальше» «Постинг в твиттер закончен..»» можно выкинуть из скрипта, это я для себя сделал, чтобы вылезало уведомление.

Любителям «via web» или способ номер два

Если вам нужна именно такая надпись, или вам просто лень проделывать все телодвижения описанные выше, можно поступить намного проще.
Берем броузер Mozila Firefox + установленное дополнение Imacros.
Логинимся в твиттере и запускаем следующий скрипт на выполнение:

VERSION BUILD=7031111 RECORDER=FX
TAB T=1
CMDLINE !DATASOURCE t.txt
SET !DATASOURCE_COLUMNS 10
SET !LOOP 1
SET !DATASOURCE_LINE {{!LOOP}}
TAG POS=1 TYPE=TEXTAREA FORM=ACTION:http://twitter.com/status/update ATTR=ID:status CONTENT={{!COL1}}
TAG POS=1 TYPE=SPAN ATTR=TXT:Tweet
WAIT SECONDS=15
TAG POS=1 TYPE=TEXTAREA FORM=ACTION:http://twitter.com/status/update ATTR=ID:status CONTENT={{!COL2}}
TAG POS=1 TYPE=SPAN ATTR=TXT:Tweet
WAIT SECONDS=15

Где находится папка DATASOURCE вы узнаете в настройках Imacros. Формат файла t.txt — текстовой в кодировке «UTF-8 без boom», каждый твит в отдельной строке. После каждого твита запятая. В сообщениях кроме запятой в конце других запятых быть не должно. То что написано до запятой попадает в один твит, после запятой в следующий. Хоть этот способ намного проще описанного выше, у него есть много минусов.

Минусы последнего способа:

  • невозможность использовать запятые внутри сообщений
  • не работает по расписанию
  • требует ручного контроля и запуска броузера
  • пока он работает в броузере ничего делать нельзя
  • Imacros так и не смог победить авторизацию в твиттер — логин руками (можно броузером запомнить пароль)

Уточняю, что скрипт для старого интерфейса твиттера.

Много написал — распечатайте на принтере. Если он у вас старый и полуживой — советую приглядеться к моделям мфу HP. Многофункциональные устройства HP последнее время мне стали больше нравится. Да и компактно все — несколько устройств в одном корпусе.

P.S. А если у вас совсем нет принтера, то скачайте эту статью с файлообменника. Я ее оформил в виде электронной книжки и вложил образцы всех скриптов, о которых здесь шла речь. Ссылки выше в тексте.

Автор:
Категория: Сети  Теги: ,

Вам понравилась статья? Поделитесь ссылкой с друзьями в социальных сетях

Если вы не наши того что искали - отпишитесь в комментариях, чем смогу помогу

2 - всего, пишите еще!
  1. Евгений:

    Интересный способ. Вот только попробовать не получается ссылки на архив умерли. Если не сложно обновите.

Есть что сказать? Скажи!

О комментах: Ручная модерация, чушь и спам не пройдет

*