datka
@datka

Оптимизация кода? Возможна ли?

Собственно подскажите есть ли возможность его оптимизировать? чуть по красивее что-ли сделать? Где страдает логика?
spoiler
import telebot
import subprocess
import glob
import os

bot = telebot.TeleBot('')

@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id,'Вствляем линк на видое из Youtube/VK бот скачивает видео и высылает как аудио с минимальным размером')

@bot.message_handler(func=lambda message: True)
def pod_link(message):
    try:
        bot.send_message(message.chat.id,'[+] Скачиваю')
        
        # Скачиваем аудио в формате м4а.
        subprocess.run(['yt-dlp','-S',"+size,+br,+res,+fps",'-x','--audio-format','m4a',str(message.text),'--ffmpeg-location','/home/david/telegram_bot/ffmpeg','-o','/home/david/telegram_bot/podcast/'+str(message.from_user.id)+'/%(title)s.%(ext)s'])
        
        for podcast in glob.glob(f'/home/david/telegram_bot/podcast/{message.from_user.id}/*.m4a'):
            file_size = round(os.stat(podcast).st_size / (1024 * 1024))
            if file_size > 10:
                bot.send_message(message.chat.id,f'[+] Фаил превышает допустимый рамер в 10 MB. Размер файла: {file_size} MB')
                bot.send_message(message.chat.id,'[+] Обрезаю звук на отрезки в 40 минут')
                
                # Обрезаем фаил если выше 10Мб. Больше 10 МБ тайаут бывает... 
                subprocess.run(['ffmpeg','-i',podcast,'-c','copy','-map','0','-segment_time','00:40:00','-f','segment',f'/home/david/telegram_bot/podcast/{message.from_user.id}/[%02d] {podcast.split("/")[6]}'])
                os.remove(podcast)
            else:
                pass
                
        for podcast in glob.glob(f'/home/david/telegram_bot/podcast/{message.from_user.id}/*.m4a'):
            audio = open(podcast, 'rb')
            bot.send_audio(message.chat.id, audio, timeout=60)
            audio.close()
            os.remove(podcast)
        
        
    except Exception as e:
        bot.send_message(message.chat.id,e)
        
        
bot.infinity_polling(timeout=60, long_polling_timeout = 5)
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
@bybacapitan
Для полной оптимизации стоит перейти на аоиграм
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы