lleo (lleo) wrote,
lleo
lleo

Category:

Сделал автопостинг в telegra.ph

это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2021/08/30_telegraph

По настоятельному совету друзей и в связи с предстоящим уходом из фейсбука запилил еще одно зеркало дневника — на https://telegra.ph

Это удивительный по нашим временам сервис — любой незалогиненный может там запилить постик любого содержания и рассылать всем на него ссылку. Но я залогиненный.

Телеграф — детище Телеграма. То есть Павла Дурова. Как гласила народная молва, «ВКонтакт развивается по спирали — всё поспирали у Фейсбука». Поразительно, с какой тщательностью Павел Дуров переносит в свои проекты все костыли и грабли, которые десятилетиями выстраивал Фейсбук в попытках перепилить сервис обмена текстовыми заметками в сервис по обмену еще и фотками, ссылками, видосиками, а потом еще и заметками.

Как вы наверно знаете, в Фейсбуке есть три сущности: «Page», «Page+attachment» и «Note». Page — это просто текст, постик. Если при наборе постика ты упомянул ссылку или добавил фотку — постик превращается в Page+attachment — постик с вложением: внизу под текстом рисуется фотка или превью первой из ссылок (ссылка считается аттачментом). Page+attachment ранжируется и показывается Фейсбуком менее охотно, чем Page, поэтому я сперва создавал пост без ссылок, чтобы Фейсбук его создал в категории Page, а затем редактировал текст, добавляя все нужные ссылки, — категорию публикации после ее редактирования Фейсбук уже не в силах изменить, он кривой. Позже вместо одной фотки Фейсбук разрешил прикреплять целый фотоальбом — тогда фотки единой кучей лепятся внизу. Самой интересной опцией была «Note» — она позволяла создавать посты с элементами верстки: делать курсив, подчеркивание, цитату, а главное — перемежать текст многочисленными фотками, обсуждая их по ходу заметки. Почему вообще возникло такое дебильное деление материалов на три категории, почему их нельзя хранить в одной базе публикаций и почему вообще эти внутренние проблемы ебаных программистов должны быть вывалены на уши пользователя и представлены как правило — большой вопрос к криворуким программистам и мальчику-школоте, создавшему Фейсбук. Со временем Фейсбук запретил создавать Note через API, а теперь, я так понимаю, запретил создавать Note вообще. По крайней мере, в моем аккаунте создавать Note стало запрещено.

К чему я это рассказываю? Все уродливые костыли, сложившиеся сами собой при развитии программного кода Фейсбука от говна к мировому говну, были Павлом Дуровым почему-то восприняты как святые правила. Все костыли и глупости он бережно перенес сперва во ВКонтакт, а затем в Телеграм. Телеграм — точно такой же Page или Page+attachment. Вы можете опубликовать в Телеграм туда либо голый текст, либо прикрепить снизу материал — фотку, ссылку, альбом фоток, видосик, музычку или просто файл. Но вот чтобы реализовать функционал Note Павлу Дурову пришлось изобрести отдельную сущность — Telegraph. Как и в Фейсбуке и в VK (там тоже есть отдельные Note), в Телеграфе можно написать заметку с минимальными элементами форматирования а также перемежая фотки текстом.

Список тэгов для форматирования здесь тоже ограничен. Available tags: a, aside, b, blockquote, br, code, em, figcaption, figure, h3, h4, hr, i, iframe, img, li, ol, p, pre, s, strong, u, ul, video. Некоторых из них даже я не знаю, да и знать не желаю.

Заливка текста заметки в Телеграф по АПИ — невообразимая криворукость. Вы должны взять свою верстку заметки в HTML, удалить все неразрешенные тэги, затем прогнать через DOM-преобразование, пришлось ставить на сервер библиотеку apt-get install php-dom Во-первых, это надо чтобы устранить возможные ошибки, незакрытые тэги P и так далее. Во-вторых, чтобы получить структуру DOM и написать свою процедуру, которая будет гулять по ее узлам и потомкам, чтобы перевести DOM в нормальный Array. Что, в свою очередь, нужно, чтобы в конечном итоге перевести Array в JSON. Да, вы не ослышались: Telegraph требует перегнать структуру HTML через DOM в JSON. Иначе его программисты просто не знают, как побороть уязвимости и удалить опасные атрибуты и тэги. Причем, эта трансляция делается невероятно кривым способом в вымышленном формате, который нигде не описан в документации telegraph https://telegra.ph/api — там лишь приведена процедура на JS, которая это бы сделала (я не проверял), будь постящий робот запущен не на сервере, а прямо в браузере с живой страницы контента.

Но даже после этого в Telegraph куча глюков. Например, если вы размещаете в структуре DOM фотку тэгом IMG, то готовьтесь к тому, что она может все равно вывалиться из верстки в подвал под заметкой. Либо — поменяется местами с предыдущим тэгом P, если они на одинаковом уровне в одном children. Чтобы этого избежать, в большинстве случаев достаточно оборачивать каждую фотку в загадочный тэг figure — узнать об этом можно лишь скачав код заметки, созданной вручную в предлагаемом Телеграфом редакторе. И так далее.

Еще из прекрасных глюков: пост на Телеграфе невозможно удалить. Его можно разве что отредактировать, забив содержимое словом «delete». А удалить залитые файлы нельзя вообще никак — например, картинки надо заливать на telegra.ph/upload отдельно, чтобы подставлять в тэг их локальный адрес.

Но я все-таки сделал модуль постинга заметок в движке на PHP. Вы тоже можете пользоваться автопостингом на Бинонике или в собственном движке. Для начала надо создать аккаунт на Телеграфе, открыв браузером ссылку и получив ключ (access-token):

В менюшке желтого шарика на своей странице Биноника в «редакторе переменных» надо отредактировать переменную «autopost», добавив к перечню зеркал новую строку для Телеграфа, где перечислить через пробел название модуля telegraph, имя темплейта своё название блога на Телеграфе и длинный полученный ключ:

telegraph template.telegraph lleo a4e3fd2ffc53df63a8cb01ce2362a633e6a8288e1941714ae4aa4838239c

Темплейт с таким именем создается тоже в редакторе переменных, у меня он простой, я лишь добавляю к тексту строку с подписью:

{text}<p><hr><aside><i>оригинал заметки: <a href='{url}'>{url}</a></i></aside>

Если вы хотите, чтобы в ваш аккаунт Telegram (куда у вас конечно же тоже был настроен постинг) шли не заметки, а быстрее и полнее открывающиеся сущности из Телеграфа, просто добавьте в тексте «autopost» в строке с описанием телеграма и его ключей в конце через пробел лишнюю опцию «telegraph:lleo» (имя вашего блога).

Выглядят посты в Telegraph так: https://telegra.ph/Htonicheskie-mesta-gorodov-Peterburg-Udelka-08-30 Имена в URL Телеграф почему-то берет на себя придумывать сам, ориентируясь на заголовок поста и свои соображения о сегодняшней дате и других постах с тем же заголовком. Повлиять на выбор имени нельзя, а имя твоего зарегистрированного аккаунта в URL никак не фигурирует — из линка не поймешь, кто создал публикацию, мог и любой аноним на сайте.

Конкретно этот пост выглядит так: так

А вот как прикреплять к Телеграму коментарии, пока не разобрался.

UPD: Прикольно: во время автопостинга этой заметки, ошибку внезапно выдал... Twitter! Оказывается, в Твиттере запрещено упоминать Телеграф!

Twitter lleokaganov — Error: We can't complete this request because this link has been identified by Twitter or our partners as being potentially harmful. Visit our Help Center to learn more.



это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2021/08/30_telegraph
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments