И вновь я приветствую всех своих читателей! В своей прошлой статье я начал рассказывать про то, как я стал кадетом Глубины (ссылка на статью). Продолжение погружения на Глубину начнётся здесь и сейчас, поэтому настоятельно рекомендую всё таки обратиться к истокам, чтобы быть в курсе всех событий, которые произошли со мной за этот период.
Итак, погнали. Новоиспечённый кадет из меня хоть куда, но в таком статусе далеко не уедешь, поэтому я искал себе задание. Задание, которое будет мне по зубам и довольно интересным. Ведь я не хотел со старта получить выгорание и дёрганный глаз - это довольно грустная и частая ситуация, когда ребята на мощном энтузиазме хватаются за те проекты, что им пока не под силу. И тут я натыкаюсь на канал с многообещающим названием “Ведьмачьи контракты”.
А контрактов там...то есть интересных задач немало, можно было повыбирать. Бродил я среди всех этих предложений и вижу следующее: “импорт аудио из Телеграм в Дип”. “Довольно любопытное дело”, - подумал я и в моей голове сразу заработали шестерёнки, как и что я буду писать для бота. Меня даже не интересовало, когда и в каких объёмах мне поступит вознаграждение. Я увидел цель и проигнорировал всевозможные препятствия, которые могли поджидать меня.
Спустя буквально 5 минут, не успев моргнуть глазом, я уже получаю консультацию от Сонирута о том, что должен представлять из себя этот пакет и какие функции должен выполнять. Да, как я и думал, бот в телеграме...выкачка аудио...Звучит вполне логично и ожидаемо. Можно браться за работу. Но только тогда пришло осознание, что не всё так просто...
Принцип работы пакета - баланс простоты и сложности. В моём понимании, проблем было не избежать. Если свести объяснения к минимуму, то сначала отправляется файл, Дип его качает и добавляет в пространство. Но глаза боятся, а руки делают, поэтому расскажу про всю последовательность своих действий.
В своей первой статье я упоминал о том, какую ценность несут в себе консультации. Так что без преувеличений отмечу, что Фокша оказал мне невероятную помощь на старте. Точнее сказать, он предоставил мне готовый пакет для Телеграма.
Вот кстати этот пакет. Ссылка или скрин
Конечно на тот момент мне не до конца было понятно, что я должен был сделать по итогу. Что за токены, причём тут 3050 порт и как ЭТО связать с ботом? Фокша не дремал и оперативно выдал все необходимые данные, которые мне очень помогли. Нам нужно было создать вебхук, который будет реагировать на получение ботом сообщения, а затем собирал всю информацию о сообщении и создавал связи в пространстве.
Вот тогда пазл начал складываться, и мне стало гораздо проще и понятнее разобраться, что к чему. Из плюсов - я взялся за этот проект уже с базой необходимых знаний, полученных благодаря консультациям. Поэтому с определённой базой знаний не так уж и страшно в коде поковыряться, чтобы понять, как всё устроено.
А принцип работы следующий: После того, как пользователь отправляет боту сообщение, в пространстве начинают появляться связи: кто отправил, когда, содержание отправленного, на каком языке и так далее. Это основа, которая когда-нибудь может кому-нибудь понадобиться. Уж лучше данных будет больше, чем меньше. Лишнее всегда можно будет вырезать.
Тем не менее, этот пакет пока что не принимал аудио. С этим придётся повозиться. Если все данные о сообщении приходили в формате «data.message.from» и так далее, то аудио мы получаем через метод «get». При всём при этом, перед получением файла необходимо узнать его имя на сервере Телеграма. Потом еще и скачать… А файл может быть и голосовым, и музыкой, и записью - чем угодно.
Вот оно, противостояние Оgg против mp3. И тут на сцене появляется if. Простейшее, но тем не менее гениальное решение. Либо аудио, либо голосовое.
Вы скорее всего догадались: я просто сделал две вариации с идентичным кодом. Только в одном случае для обычных записей, а второе для голосовых.
Вырезку кода, которая за это отвечает прикладываю сюда. Вдруг кому пригодится. (скрин кода)
После получения аудио, Дип вытягивает всю информацию: вес, название, длительность, исполнитель, тип и имя файла в системе. Эта ссылка на файл в дальнейшем нам пригодится, поскольку она подставляется для получения файла, как говорилось ранее. И если мы воспользуемся обычным браузером, то по этой ссылке просто скачается файл.
Стало быть, мы уже увидели финишную прямую, но вот только есть одно “но”: в Дип приходят файлы побитово. Вернее, приходят биты в виде текста, и всё это необходимо перезаписать как файл. Один бессознательный вечер, ещё одна консультация и да, теперь пакет создаёт файл. Вся система работает и радует глаз. Но у вас, читателей, может возникнуть резонный вопрос: а зачем так заморачиваться? Есть же много возможностей и более простых ариантов.
К примеру, можно использовать пакет в связке с другим пакетом, который преобразовывает речь в текст и пакетом ChatGPT. Или же использовать отправленные аудио в связке с собственной системой умного дома. На самом деле вариантов уйма, я согласен. И естественно, всё зависит от пользователя и поставленной задачи. Но мне не хотелось бы полагаться просто на теории и предположения, когда можно быть частью чего-то большего и воплотить задумки в реальность. Совсем недавно SenchaPencha попросил меня обрезать пакет, оставив только сохранение аудио. Как оказалось, мой пакет являлся для него отправной точкой для какого-то грандиозного плана.
Вот к этому я и клоню: не стоит далеко идти за примерами реиспользования. Всё, что мы производим на Глубине, пойдёт как инвестиция в технологичное и современное будущее - то маленький пакет или масштабный проект.