Привет, DTF! Решил выйти из уютного телеграм-блога и покорять просторы интернета. Среди площадок для своих мыслей (помимо ВК, Твиттера, LinkedIn) меня заинтересовали Пикабу и DTF. Но с последним возникли проблемы...Картинка для привлечения вниманияМотивация для создания проектаВеду блог в Телеграме уже 2,5 года. Бывали ежедневные серии постов, но случались и перерывы. Их я легко компенсировал, создавая посты заранее с заданным временем публикации.Пруф создания каналаКароче, на DTF я не нашел отложенного постинга. Поиск в интернете привел к теме «Отложенный постин», где лучшим советом оказался будильник с черновиками.В комментариях я так же обнаружил бота для отложенной публикации от Andrei Apanasik. Но, увы, он оказался неактивен.Пруф от Andrei ApanasikТак я решил создать свою версию отложенного постинга для DTF.Обзор проекта и технический стекКак фронтенд-разработчик, я выбрал TypeScript, так как другого выбора у меня не было.Для автоматизации использовал Puppeteer. Это безголовый браузер (headless), который запускается в консоли. Он эмулирует работу обычного Google Chrome.Лог авторизации и запроса черновиковДля взаимодействия с этим Puppeteer нам нужен был интерфейс и тут на выбор 3 путя:1. Плагин для Google Chrome2. Полноценный сайт на Vue3. Телеграм-ботВ теории самым простым оказался Телеграм бот. Для его создания использовал все тот же TypeScript и библиотеку GrammyJS. Вид со стороны клиентаСтруктура проекта и модулиЗа основу взял модульную структуру. Она намного проще всего остального (привет FSD) и проверена годами. Структура проектаСейчас реализованы два модуля:1. DTFModule - для работы с DTF. Здесь происходит вся магия: селекторы с сайта, логика входа и получения черновиков. Всё находится тут. 2. TelegramModule - для работы с Telegram-ботом. Связывается с классом DTFModule, вызывая его методы.Проблемы и решенияГлавная проблема- необходимость отправлять личные данные боту. Без авторизации нельзя получить черновики.Был вариант с плагином для Google Chrome, который бы собирал куки. Но ввод логина и пароля показался проще в реализации. А есть ли API у DTF!?API помог бы защитить пользователя. Но разобраться в нем оказалось сложнее, чем создать рабочий MVP за это же время. Буду благодарен за подсказки, если вы разбираетесь в этом.Планы и итогиНа создание MVP ушло 10 часов. Сейчас работают авторизация, получение и публикация черновиков по ID.Осталось создать модуль отложенного постинга, который с помощью cron будет вызывать модуль публикации. Ну а клиент-бот в Телеграме будет принимать дату и время постинга и отправлять на сервер ExpressJS для передачи времени в cron.Об этом расскажу во второй части. Спасибо за внимание!
в теории это очень круто звучит
Охуеть, это же максимально небезопасно и некруто передавать данные от аккаунта твоему боту. Придумай другой способ.
Увы, но других вариантов нет.
Думаю попробовать вариант с куками, но это после релиза уже.
Делал в первую очередь для себя, массовый потребитель на втором месте:)