14 April 2011

Трансляция

Хочу в этой записи написать пару слов о том, как я решал вопрос с трансляцией записей из blogspot в жж. 


Честно говоря, изначально я делать этого не собирался. Аудитория у меня продвинутая, что такое RSS должны знать, однако, в конечном счете, я решил внять просьбам нескольких человек и дать возможность читать журнал через привычную некоторым френдленту. 

Какие были варианты решения проблемы? 


Во-первых, с помощью сторонних блог сервисов, которые имеют более мощные инструменты для кросс-постинга, чем жж и блогспорт. Например, Posterous или blog.ru. Я этот вариант сразу отмел -- слишком сложно, да и плодить три копии одного и того же материала это уже слишком. 

Второе -- с помощью сервиса http://rss2lj.net/, который умеет транслировать любой RSS фид в жж.
Тут есть проблема, связанная с тем, что для работы этого сервиса нужно отдать чужому дяде пароль от своего живого журнала. Решилась она просто -- путем заведения отдельного аккаунта.
Однако на этом пути оказалась еще одна проблема -- RSS был успешно зарегистрирован, время опроса потока в настройках обновлялось, а вот записи в новом журнале почему-то упорно не появлялись.
Я написал автору сервиса свое недоумение по этому поводу и пошел искать другие варианты.

Еще вариант -- через e-mail. Кто не знает, в жж можно постить с помощью обычных писем. Пишите письмо на специальный адрес, включаете в его тело специальный pin код и -- вуаля! -- ваше письмо становиться записью в журнале.
В сочетании с возможностью блогспота при каждой публикации отправлять письмо с его телом на любые указанные e-mail адреса, это вполне себе решало проблему кросс-постинга.
Не знаю зачем, но я почему-то решил делать кросс-постинг не напрямую, а через своей гмейловский почтовый ящик, т.е. настроить там специальный фильтр и форвардить указанные письма на специальный e-mail адрес в жж. Тут вылез интересный нюанс: для автоматического форвардинга на какой-либо адрес gmail требует авторизации со стороны этого адреса. Т.е. перед тем, как начать использовать кого-то в качестве автоматического получателя, та сторона получает от gmail специальное письмо с кодом, который надо ввести в настройки gmail и тем самым показать, что этот адресат действительно хочет участвовать в подобной рассылке.

Как же узнать код подтверждения и авторизовать адрес для постинга, если та сторона вообще тобой не контролируется, ведь там сидит жжшный бот?
Я поступил просто. Кинул подобное письмо с запросом на свой другой почтовый ящик. Посмотрел адрес отправителя (no-reply@gmail.com) и вбил его в список адресов, с которых разрешалось делать постинг в жж. Дальше запрос был отправлен на адрес постинга и содержимое самого письма (вместо с кодом подтверждения) я увидел прямо в свежезаведенном журнале в виде записи.
Однако тут вылезла следующая неприятность. Для того, чтобы бот со стороны жж принял письмо к публикации, в его тело (или e-mail адрес получателя) должен быть вставлен специальный защитный pin код. Перед pin кодом надо обязательно вставить символ "+". Т.к. при форвардинге с gmail я не мог модифицировать тело письма, то я отправлял его на адрес, который содержал pin код, что-то типа cdriper_rss+xxx@post.livejournal.com. И, по закону подлости, в gmail вылез глюк -- он упорно не хотел регистрировать адрес получателя, тело которого содержало подозрительный символ "+".

Протрахавшись какое-то время с этим приколом почтовика гугла, меня осенило сделать простую вещь -- понять, а стоит ли вообще игра свеч -- протестировать как вообще этот автопостинг работает. Я руками отправил письмо, содержащее хоть какое-то форматирование на адрес бота жж и... увидел, что та сторона напрочь игнорирует html, т.е. засовывает в запись plain текст. Блин!

Мои хорошие идеи по поводу кросс-постинга на этом, к сожалению, не закончились.
Я подумал о том, что может делать кросс-постинг руками, ведь делаю же я руками постинг с анонсами в твиттер... Тут меня осенило. О! Твиттер! Как я про него забыл? А что если найти сервис, который следит за твиттами определенного человека(@cdriper), находит в них заданный хэштег (#blog) и все подобные твитты кидает на указанный почтовый адрес(cdriper_rss+xxx@post.livejournal.com)?

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

В отчаянии я даже начал подумывать о том, чтобы написать самому маленькое приложение на питоне, которое парсит два RSS потока -- один из твиттера, второй от жж. И если в потоке твиттера находит #blog твиты, которых нет в потоке жж, то кидает их на указанный e-mail адрес. Нехитрая такая синхронизация.
Один момент во всем этом мне не нравился -- у меня нет сервера 24x7, на котором можно было бы один раз запустить подобный сервис и забыть про него.

Но тут появился проблеск по другому направлению. Мне наконец-то ответил автор RSS2LJ. Грит, с фидом и настройками у тебя все нормально, но жж ща нормально не работает, и у него в программе накопилось 6000+ постов, ожидающих публикации.
За ночь очередь рассосалась, и я увидел в своем новой журнале кросс-посты.
От добра добра не ищут, на этом варианте я и решил остановиться. 

Честно говоря, сначала я думал кросс-постить только анонсы, а не содержание статей. Во-первых, дабы не копи-пастить -- как программист сильно не люблю это дело. Во-вторых, дабы перетягивать читателя в настоящий блог, что повышает вероятность того, что комментарии он будет оставлять все-таки в одном месте, на блогспоте, а не под кросс-постами (альтернативное решение -- закрыть комментирование журнала cdriper_rss).

В итоге, кросс-постинг все-таки идет полный, комментирование открыто. Мне эта ситуация не очень нравится, но что делать?... Тем более, что по подобному пути идут люди и сайты с аудиторией, на порядке больше, чем у меня.

Ну и в заключение напишу о том, что сухие цифры статистики утверждают, что читающих меня через RSS больше, чем упорно желающих читать меня через френдленту жж. Лично меня это радует, ибо я не понимаю, кто, в здравом уме и трезвой памяти, может считать френдленту более удобным способом...

Нет, есть конечно странные люди, которые, например, говорят о том, что твиттер заменил им RSS, но, по-моему, это просто клиника.
Лента -- она убегает, за ней надо следить. Такой способ чтения хлопотный и ненадежный.
Когда у тебя все нужные источники в RSS, их легко группировать, приоритизировать, синхронно читать из разных мест и, в конечном счете, гарантировать более надежный режим чтения.
У некоторых аргумент в пользу френдленты -- комментарии. А что комментарии? И в случае RSS, в случае френдленты, нужен ровно один лишний клик, чтобы посмотреть комментарии. Единственный минус RSS -- нельзя посмотреть сколько комментариев оставлено в данный момент, но, как по мне, это не слишком большой недостаток.

На этом очередную рекламу RSS сворачиваю. 
Любите друг друга! И не приумножайте энтропию в этом, и без того несовершенном, мире -- комментируйте только через Disqus!

No comments:

Post a Comment