Автоматическая публикация анонсов и статей на subscribe.ru (sjPoster)
- Категория: Код
- – Автор: Игорь (Администратор)
Оглавление
- Проблема массовой публикацией статей и анонсов в группы на subscribe.ru
- Существующие решения для автоматизации публикации анонсов
- Реализуем механизм автоматической публикации на jQuery
- Пример автоматической публикации из sjPoster
- Заключительные слова о постинге в сервисе subscribe
1. Проблема массовой публикации статей и анонсов в группы на subscribe.ru
Сервис Subscribe.ru предоставляет достаточно много возможностей как для авторов, так и для читателей. И обо всех его достоинствах написано не мало статей. Однако, у сервиса есть и свои ограничения, которые ощутимо сказываются на затрачиваемом времени. Речь идет о массовой публикации статей и анонсов в группы, которая немало волнует владельцев сайтов, периодически публикующих свои статьи. Безусловно, проблема возникает только тогда, когда количество групп начинает исчисляться в десятках. Если брать среднюю отправку в одну группу порядка одной минуты, с учетом возможных задержек сервиса, переходам по страницам и прочих проблем, то отправка в 30-40 групп уже не кажется чем-то быстрым. А если у вас не один такой сайт, и с каждого периодически нужно публиковать статьи, то затраченное время становится неплохо ощутимым. К примеру, отправка по одной статье с трех сайтов разных тематик в более 100 групп будет занимать порядка двух часов, и это в только том случае, если вы действительно умеете быстро выполнять рутинные дела без ошибок.
Примечание: Вам может показаться, что отправка однотипных статей и анонсов в разные группы - это не правильно. Если вы действительно так думаете, то вспомните основное назначение сервиса - "Авторам возможность писать, читателям возможность получать в удобном формате набор статей, для последующего их прочтения".
Примечание: Коммерческая сторона сервиса в данной статье не рассматривается.
Можно продолжать тратить время на публикацию каждой статьи, а можно что-то с этим делать.
2. Существующие решения для автоматизации публикации анонсов
Первое, что приходит любому владельцу сайта на ум, это искать способы в поисковых системах. Пройдясь по сотне сайтов, нашлось только два вполне вменяемых решения.
Первый. Это уже разработанная программа для постинга Subscribe Poster, которую предлагал один из авторов блогов для тех, кто отошлет ему письмо. Однако, среди описываемых характеристик была пара проблем, которые несколько ограничивали ее применение. Это ввод своих логина и пароля для отправки, что оправдано, но несколько смущает с точки зрения безопасности. И, пожалуй, самое главное ограничение это жесткая привязка к группе одного раздела. Последнее означает, что вам каждый раз придется мучится с идентификаторами разделов, чтобы ваша статья попала именно в те разделы, которые вам нужно. Безусловно, можно было бы сохранять разные настройки под разные публикации, но таких настроек так же может стать огромное количество. К примеру, сайт ida-freewares.ru, который вы читаете, содержит материалы разной направленности: безопасность, оптимизация, разработка, сеть, инструкции, хаки и прочее. Составление под каждый отдельный случай таких файлов конфигурации займет уйму времени, а в некоторых случаях и вовсе будет сравнимо по времени с ручной отправкой. Тем не менее, решение может пригодиться тем людям, которые пишут статьи одной или нескольких направленностей.
Второй. Способ базируется на записи и настройки макросов для повторяющихся операций. Суть его проста. Вы используете интерфейс "Написать в группы" и для тех операций, которые повторяются постоянно, записываете последовательность действий мыши и клавиатуры, а затем назначаете выполнение этих действий на горячие клавиши. К примеру, открытие интерфейса "Написать в группы" и автоматическая вставка из буфера обмена скопированного текста. Однако, у метода так же имеются свои минусы. Во-первых, несмотря на присутствие автоматизации, сильно от рутины вы не избавитесь. Во-вторых, это не решает главную проблему - затраченное время. Безусловно, времени будет тратиться меньше, но если вы умеете быстро выполнять однотипные операции, то особой разницы не почувствуете.
Как видно, существующие решения имеют ограничения и подойдут далеко не всем. Поэтому, еще один механизм был реализован на портале Мир бесплатного программного обеспечения под названием sjPoster.
Примечание: Если вас не интересуют подробности разработки, то вы можете перейти сразу к главе "Пример автоматической публикации" (настоятельно рекомендуется), а затем скачать решение по ссылке в конце статьи.
3. Реализуем механизм автоматической публикации на jQuery
Прежде, чем начинать реализовывать механизм автоматической публикации, необходимо определиться с минимальными возможностями и требованиями:
- Автоматизация публикации статей и анонсов. Это означает, что, кроме первичной настройки и ввода данных, от вас ничего не должно требоваться.
- Выбор групп и разделов. Каждая статья или анонс не обязательно соответствуют только одному разделу в каждой группе. Поэтому у вас всегда должна быть возможность настроить нужные группы и разделы перед отправкой.
- Относительно простой способ сбора данных о группах и разделах. Сбор информация обо всех группах, разделах и их идентификаторах должен быть настолько простым, что бы с ним мог справиться практически любой.
- Конфигурация должна относительно легко меняться. Сегодня у вас, к примеру, 10 групп. А завтра их уже 50-60. Каждый раз, при добавлении или удалении группы, заново проходить весь процесс настройки - несколько затратно по времени.
- Инструменты для категоризации групп. Группы могут быть разной направленности. К примеру, одни о создании сайтов, вторые о дизайне, третьи о ... Поэтому, необходим способ их разбиения по категориям.
- Небольшая требовательность инструмента для запуска. Чем меньше инструменту будет требоваться для запуска, тем лучше.
- Легкость корректировки. Сегодня сервис использует одни способы для отправки данных, завтра другие. Должна оставаться возможность вручную "подкрутить" инструмент.
- Время на разработку инструмента должно быть адекватным. Месяц для разработки - это несколько много. Безусловно, за месяц инструмент получится отличным, но тогда остро встанет вопрос о рациональности.
Примечание: Пункт, связанный с отсутствием методов взлома и прочих ухищрений, подразумевается сам собой на портале ida-freewares.ru, поэтому все решение будет построено только на честных способах и приемах.
После того, как определились с требованиями и возможностями, можно переходить к определению способа реализации. Какие есть варианты? Как такового, у сервиса api для групп не существует (api - по сути, набор различных команд для более быстрого обмена данными). Есть api для автоматизированной рассылки писем, но оно не подходит. Поэтому, инструменту придется использовать только обычный способ - взаимодействие со страницами (как браузер). Отсюда следует, что, по сути, остается два варианта. Первый, можно писать полноценный инструмент, который будет сам соединяться с сайтом, используя ваши данные, а затем сам будет собирать и вводить данные. Второй, это использовать каким-либо образом возможности браузера и уже имеющиеся данные.
Написание серверного решения, которое будет правильно обрабатывать все ответы сервиса, займет достаточное количество времени, что явно противоречит последнему требованию. Поэтому, искался более простой способ, который, возможно, и потребует дополнительных действий от пользователя, но все же будет выполнять свою основную задачу - автоматическую массовую публикацию статей и анонсов.
Существует такой тег "iframe". Он позволяет загружать другие страницы и его так же можно использовать для отправки данных со всеми необходимыми данными авторизации (считайте отправлять данные под вашим логином, без необходимости отдельного входа на сервис). Однако, доступ к содержимому внутри тега получить нельзя (из-за ограничений безопасности браузеров). Другими словами, видеть то, что происходит внутри него, может только пользователь в браузере. Тем не менее, этих возможностей вполне достаточно для автоматизации. Поэтому, инструмент базировался на теге iframe и был сделан полностью на jQuery, так как он позволяет достаточно легко манипулировать элементами DOM.
Чтобы не писать инструмент с самого начала, за основу был взят исходный код проекта всплывающих окон. В любом случае, красивые информеры никогда не помешают. Проект состоит из следующего набора файлов и к нему уже подключены необходимые библиотеки jQuery:
- css - каталог
- template.css - файл стилей окошек
- images - каталог
- ajax-loader.gif - единственная картинка - прокрутка для загрузчика
- js - каталог
- jquery-msg.js - скрипт для создания всплывающих окон в автоматическом режиме
- index.html - файл для тестового запуска
Остается только добавить два файла в каталог js:
- jquery.json.min.js - скрипт для составления JSON. Будет использоваться для сохранения данных. Скачать его можно отсюда.
- jquery-subscribe-js-poster.js - скрипт инструмента
Теперь, можно приступать к реализации.
Примечание: Так как, код получился достаточно массивным, то в последующем будут рассмотрены только основные необходимые части механизмов и правки. Так, например, стили в файле template.css не будут рассматриваться, так как их легче взять из файла в исходнике и в них не применяются какие-либо особые приемы.
Изменим index.html для инструмента автоматизации публикаций
Нужно убрать все лишнее и добавить нужные ссылки в index.html. Итоговая страница для инструмента автоматической публикации получилась следующая:
Как видно, в основном добавилось пара ссылок на js скрипты и изменилось тело тега body, а так же убраны текстовые элементы информеров. Теперь, можно переходить к скриптам.
Примечание: Ссылку на ресурс советуем оставить по нескольким причинам. Во-первых, инструмент вряд ли будет доступен для поисковиков (из-за характера реализации), так что можете не волноваться об открытости ссылок и прочих премудростях. Во-вторых, возможно, что в будущем инструмент будет дополняться и подправляться для корректности взаимодействия с сервисом. Во-третьих, со временем, на сайте будут так же появляться другие не менее полезные инструменты. Ну и, в крайнем случае, вы уважаете время, потраченное автором.
Создаем основу для хранения групп и категорий в sjPoster
Прежде всего, создаем основной интерфейс для хранения и управлениями группами, разделами и категориями групп. Получается примерно следующее:
Интерфейс для хранения и управления группами, разделами и категориями групп получился достаточно простым. Единственно нужно внести несколько пояснений. Во-первых, конструкция вида [id + ''] используется для того, чтобы все идентификаторы превращать в строковые имена. Это позволяет избавиться от проблемы с идентификатором в виде строки или числа (с точки зрения js - это разные вещи). Во-вторых, несмотря на то, что для хранения используется json, сам файл с настройками имеет расширение txt. Делается это по той причине, что данный инструмент можно располагать на любых веб-серверах. Так например, IIS не всегда воспринимает расширение json, как существующее, поэтому могут возникать проблемы. В-третьих, асинхронность при загрузке отключена для того, чтобы не решать проблемы синхронизации (ради одной загрузки основных данных не имеет смысла использовать такие инструменты, как из обзора поэтапная загрузка данных, или же разбивать построение интерфейса).
Создаем общий интерфейс инструмента sjPoster
Как вы, наверное, уже заметили в коде index.html есть только один div для инструмента. Это означает, что весь интерфейс будет строиться jQuery (все равно многие части будут строиться скриптами). Итоговый код получается примерно следующим:
Итого на общем интерфейсе будет 5 вкладок:
- "Текст анонса и заголовок" - для ввода данных публикации (заголовок и текст)
- "Парсинг данных" - для парсинга групп и их разделов
- "Настройки групп" - для создания и наполнения категории групп, а так же для формирования JSON для сохранения в data.txt
- "Выбор групп для постинга" - для выбора групп и разделов для постинга вашей статьи или анонса
- "Запуск постинга" - вкладка для запуска и отслеживания процесса автоматической публикации
Создаем вкладку "Текст анонса и заголовок" в sjPoster
Вкладка с текстом анонса и заголовком будет содержать поле для ввода заголовка, область для ввода html-кода и область для просмотра html-кода. Итоговый код получился достаточно простым:
Как видите, ничего сложного нет. Можно переходить к следующей вкладке
Создаем вкладку "Парсинг данных" в sjPoster
Данные о группах и их разделах можно получить из кода двух страниц. С интерфейса "написать в группы", при переключении в выпадающем списке групп. И с конкретного интерфейса создания темы в каждой группе. Несмотря на поддержку обоих способов, советуем использовать последний интерфейс, так как в случае с "написать в группы" код необходимо копировать из вкладки разработчика, предварительно выполнив следующий js:
- $("#id_groups option:selected").attr("selected", "selected")
Итоговый код получился следующий:
Механизм достаточно прост. Вы просто копируете html содержимое каждой страницы и вставляете в поле для ввода. Затем нажимаете кнопку "Парсить". После чего, все данные о группе сохраняются внутри sjPoster, а само поле очищается для следующего ввода. Как вы заметили, для тех групп, которые уже присутствуют в списке, просто обновляются имена и список их разделов. Так что не будет никакой необходимости в чистке от дубликатов.
Создаем вкладку "Настройки групп" в sjPoster
Данная вкладка строится на основе всех спарсенных данных sjPoster, поэтому каждый раз перестраивается при переходе на нее. Итоговый код для создания вкладки состоит из 2-х функций. Одна функция для создания пустой вкладки, другая для построения ее содержимого, при переходе. Сам код:
Как видно, код получился немного громоздким. Но, это вполне естественно для такого набора функций. Теперь, на этой вкладке вы можете формировать категории и наполнять их группами, а так же получать JSON со всеми текущими настройками для последующего сохранения в файле. Важно отметить, что все изменения сохраняются внутри sjPoster, так что при переходе с одной вкладки на другую, перестроение интерфейса не сбросит текущих настроек. Однако, не забывайте после изменения настроек, сохранять JSON.
Теперь, после того, как были наполнены категории и группы, можно переходить к интерфейсу настройки парсинга.
Создаем вкладку "Выбор групп для постинга" в sjPoster
Интерфейс выбора групп для автоматической публикации позволяет выбирать группы и разделы для постинга. Все изменения внутри этого интерфейса никак не затрагивают общие данные и используются только для постинга. Итоговый код получился следующий:
Как видно, способ генерации страницы похож на предыдущую вкладку, с той разницей, что при редактировании общие данные sjPoster не изменяются. И имеется функция для пересоздания интерфейса, которая будет учитывать самые последние изменения в категориях и группах. Для каждой группы строится отдельный выпадающий список со списком разделов. В том случае, если у группы нет разделов, то список делается недоступным.
Примечание: Так как список будет использоваться во время публикации статей, то его нельзя менять, при запущенном постинге.
Теперь, можно приступать к интерфейсу автоматической публикации.
Создаем вкладку "Запуск постинга" в sjPoster
Вкладка запуск постинга использует те настройки, которые были выбраны на вкладке "Выбор групп для постинга", поэтому, как уже говорилось, после запуска лучше перейти к другим делам и не изменять настройки на других вкладках. Сам механизм постинга использует для автоматической публикации хитрость с тегом iframe, о которой уже говорилось. Все результаты постинга отображаются в iframe, так что пользователю остается только проверить, все ли анонсы были корректно опубликованы. Подробнее о том, как воспринимать результаты, читайте в следующей главе (4-я).
Сам код:
Как видно, во время автоматического постинга, для каждой группы создается отдельный iframe и form. Форма с нужными данными будет отправлять post-ом данные в iframe, таким образом, отправка данных будет происходить с текущим входом пользователя. Так же для автоматической отправки статей и анонсов используется рекурсивный механизм, который запускает следующую отправку статьи спустя время из промежутка 15-45 секунд. Сделано это по нескольких причинам. Во-первых, лишняя нагрузка на сервер будет приводить к отказам сервиса, что сделает инструмент бессмысленным. Во-вторых, одновременное массовое обращение с большой вероятностью будет расцениваться как DDOS-атака со всеми вытекающими обстоятельствами, что в общем-то было бы правдой. В-третьих, сервис бесплатно предоставляет вам возможности, которыми вы пользуетесь.
Как уже говорилось ранее, к сожалению, при таком способе, нет никакой возможности программно понять, произошла публикация или нет. Однако, эта задача выполняется простым просмотром ответов сервера, о чем будет рассказано в следующей главе (4-я).
И последняя проверка. Смотрим соответствие требованиям:
- Автоматизация публикации статей и анонсов. Инструмент сам отсылает статьи и анонсы - Есть!
- Выбор групп и разделов. Есть вкладка для настройки публикации - Есть!
- Относительно простой способ сбора данных о группах и разделах. Данные собираются из исходного html-страницы простым для пользователя способом - Есть!
- Конфигурация должна относительно легко меняться. Все данные легко добавляются на вкладке "Парсинга" и легко редактируются в "Настройки групп" - Есть!
- Инструменты для категоризации групп. Вкладка "Настройки групп" позволяет создавать категории и управлять группами - Есть!
- Небольшая требовательность инструмента для запуска. Нужен только веб-сервер - Есть!
- Легкость корректировки. Весь код в открытом виде, его всегда можно дополнить или подкорректировать - Есть!
- Время на разработку инструмента должно быть адекватным. Инструмент написан за относительно небольшой срок, который с лихвой компенсируется сохраненным временем последующих публикаций - Есть!
Теперь, собираем все воедино и располагаем на любом веб-сервере. Можно даже на localhost. Основная причина в необходимости веб-сервера - это файл data.txt.
Примечание: Необходимость с веб-сервером из-за сохранения данных в data.txt, безусловно, можно обойти. Но, инструмент разрабатывался и тестировался только на веб-сервере. Кроме того, если у вас нет локального веб-сервера, то он есть на вашем хостинге, куда достаточно просто закинуть проект. В крайнем случае, вы всегда можете использовать бесплатные хостинги, коих масса. Все коды находятся в открытом виде, так что вы всегда можете проверить инструмент на наличие скрытых возможностей.
4. Пример автоматической публикации из sjPoster
После того, как вы расположили проект на любом веб-сервере, включая localhost, можно приступать к его использованию.
1. Войдите в сервис subscribe и в том же браузере откройте проект sjPoster.
Примечание: Если вы умеет составлять html, то вам не обязательно выполнять пункты 2 и 3.
2. Откройте любой из интерфейсов для написания статьи или анонса, а затем оформите текст для публикации, например, как показано ниже.
Совет: Делайте анонс уникальным. Копирование начала статьи будет уменьшать уникальность вашего текста. А так же выставляйте для ссылок "открываться в другом окне", во многих группах это условие является обязательным.
3. Нажмите на кнопку "html" и скопируйте текст из всплывающего окна
4. Откройте проект sjPoster в том же браузере, где вы залогинены, и на вкладке "Текст анонса и заголовок" введите текст анонса или статьи, а так же заголовок
5. Затем перейдите в браузере на сервис subscribe и откройте интерфейс "Создать тему" в первой группе.
6. Нажмите в браузере комбинацию клавиш "Ctrl + U", чтобы открыть исходный код страницы. И скопируйте его.
7. Откройте sjPoster на вкладке "Парсинг данных" и вставьте скопированный html-код страницы в поле для ввода. Нажмите кнопку "Парсить". По окончанию парсинга, текст внутри поля должен исчезнуть.
8. Повторяйте с шаги 5-7 до тех пор, пока не пройдетесь по всем группам.
9. Откройте вкладку "Настройки групп". Создайте нужные категории и распределите группы по категориям. Нажмите кнопку "Получить JSON для сохранения" и сохраните полученный JSON в файле data,txt
Примечание: Кнопка удаления напротив категорий - удаляет только категории, все группы переходят в группу "Без категории".
ВАЖНО: Кнопка удаления напротив групп - удаляет их из инструмента, и для их восстановления потребуется заново пройти шаги 5-7. Поэтому будьте внимательны.
Совет: Прежде, чем вносить изменения, нажмите кнопку "Получить JSON для сохранения" и сохраните полученный JSON. Желательно, это сделать сразу после парсинга.
10. Не обязательно, но желательно. Чтобы убедиться, что все настройки в data.txt были успешно сохранены вами. Сохраните текст анонса и заголовок. Перезагрузите инструмент, заново заполните текст анонса и заголовок, а затем перейдите на вкладку "Настройки групп". Все данные должны быть такими же, как вы настроили.
11. Перейдите на вкладку "Выбор групп для постинга". И настройте разделы для групп, а так же оставьте только те группы, в которые вы хотите разместить анонс.
12. Перейдите на вкладку "Запуск постинга" и нажмите кнопку "Запустить отправку анонсов и статей на Subscribe"
13. Запустится постинг, во время которого вы будете наблюдать страницу с всплывающим окном ожидания
14. По окончанию постинга, на странице должно появиться всплывающее окно с текстом "Постинг завершен"
15. Для каждого постинга будет отображаться область с технической информацией (группа и раздел), а так же форма iframe с результатом и кнопка "Результат нужный - удалить форму", которая по нажатию удалит текущую форму из списка.
Если статья была удачно размещена, то в окне с результатом должен быть примерно следующий текст:
- {"id":"Текст ссылки", "result": 1}
Текст "result:1" и наличие ссылки в "id" - это обязательное условие. Если в поле result будет что-то отличное от 1, то это так же считается ошибкой и необходимо зайти на сервис, а затем вручную повторить отправку анонса.
Возможны и другие варианты ответов. Например, на следующем рисунке, первая отправка прошла корректно, а вторая нет из-за нагруженности сервиса.
Если текст будет не читабелен, как в примере, то можно воспользоваться любым декодером текста. На рисунке ниже показан как раз пример использования такого декодера для второго ответа:
Как видите, ничего сложного в инструменте нет. Единственный совет - почаще сохраняйте свои настройки, так вы сэкономите себе время и нервы.
5. Заключительные слова о постинге в сервисе subscribe
Как видите, получился достаточно мощный, удобный и относительно простой инструмент, который позволит сохранить массу времени, при публикации анонсов и статей.
Данный инструмент предоставляется совершенно бесплатно и поставляется "как есть". Это означает, что вы можете использовать его так, как вам будет угодно, но с условием не пытаться выдать код за свой.
Совет. Не стоит идти на поводу собственных чувств и пытаться уменьшить интервалы отправки анонсов или же пытаться отправлять сразу с нескольких инструментов. Помните, что несмотря на то, что инструмент будет находится на веб-сервере, все запросы будут происходить с вашего IP адреса и от ваших регистрационных данных. Используйте данный инструмент со здравым смыслом, и вы сэкономите себе много времени.
Ссылка для скачивания инструмента:
☕ Понравился обзор? Поделитесь с друзьями!
Комментарии / отзывы
По поводу data.txt, sjPoster нужно располагать на реальном серевере или хотя бы localhost, иначе data.txt не будет подгружаться. Т.е. если вы скачали архив и просто открыли index.html в браузере, то файлик не подгрузится (начинаться будет с file///C://...). Кидаете sjPoster куда-нибудь к себе на сайт в суб-суб-каталог и пользуетесь. Или если у вас есть любой локальный сервер с доступом в интернет, то туда.
Плюс надо менять кодировку в файлах index и jquery-subscribe-js-poster c utf-8 на windows-1251, чтобы вместо символов в интерфейс и публикуемом тексте был русский язык.
Если уж о Denwer говорить и у вас проблемы с localhost, то никто вам не мешает создать любой домен вида "sjposter.sjposter" и запускать из под него у себя на машине.
правда пришлось переделать, и адаптировать под новый дизайн.
Вариантов конечно кучу сделал..все тестировал по разному... Но потом все таки обьединил часть из вашей реализации и своей...создал мультиаккаунтность...сделал скрипт +php+curl на локальном денвере...сейчас работает просто отменно. Спасибо вам, с вашей статьи пошли идеи для других реализаций. :-)
По поводу php+curl. У меня практически не менялся список групп, так что этот вариант мне был самым оптимальным. Плюс его можно запустить вообще везде.
А так, пожалуйста.
В графе "Запуск постинга", в строке, где показывает результат, открывается окно с ошибкой
Так же вполне возможно, что это просто временное явление или вы нахимичили с таймаутом и вас блокируют.
Для тех, у кого подобные проблемы будут возникать. Проблема была в том, что загрузили файлы из архива по фтп не туда, куда нужно. Поправил (то есть загрузил на сайт), инструмент нормально открылся. Так что внимательно проверяйте куда вы заливаете файлы.
Честно говоря, я очень давно уже не публиковал там что-либо, поэтому сложно вам что-то сказать.
Можете посмотреть формат Json файла, а потом вручную составить, или же подправить в парсере селекторы.
Группы собираются автоматом через ajax запрос... удобно очень. Жаль одно, из за политики безопасности браузера нельзя с фрейма считывать результат отправки. А вообще Вы молодцы! Готовый инструмент выдали в свет))) а дальше пусть каждый переделывает как ему удобно!
Но, в итоге, сам пользовался текущей версией с js и особых проблем не замечал для себя. Запустил генерацию, занялся своими делами, потом быстро глянул и, собственно, все дела.
В общем, человеческим языком - там дело не 5-20 минут, а нескольких часов (проверить, статью запостить и тоиу подобное). Я просто уже давно не пользуюсь этим инструментом. Попробуйте написать в ответ "Виктор Шурыгин", может быть человек поделится свои решением.
По большому счету, там теперь не идентификаторы используются, а сами url групп нужно указывать во фрейме. В целом, нужно только допилить парсинг (или сделать его ручной ввод - все равно один раз делается) и модифицировать механизм постинга. Это для тех, кто понимает.
Но, это все требует время, со всем про всем часа 3-4. Я просто сейчас не использую сабскрайб, поэтому у меня просто руки до этого не доходят.