@bybacapitan

Как пропустить большой файл?

У меня есть код для скачивания фото и видео с профиля инстаграм, и он работает.
Но в профиле могут быть большие видео, которые весят больше 20-ти мегабайт, и я не могу их отправить.
Как их пропустить и отправлять дальше остальное, через try просто сработало исключение и дальше не скидывает.
Мой код выглядит так.
import time 
import requests
import os 

from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils.exceptions import InvalidHTTPUrlContent
from aiogram.utils import executor

from bs4 import BeautifulSoup as BS
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait


TOKEN = ''

bot = Bot(token=TOKEN)
dp = Dispatcher(bot)


@dp.message_handler(lambda message: message.text.startswith('https://www.instagram.com/') or message.text.startswith('https://instagram.com/'))
async def downloader(message: types.Message):
    media = await downloader1(message)


async def downloader1(message):
    options = webdriver.ChromeOptions()
    options.add_experimental_option('excludeSwitches', ['enable-logging'])
    options.add_argument("--disable-dev-shm-usage")
    options.add_argument("--no-sandbox")
    options.add_argument('--headless')
    options.add_argument('--disable-gpu')

    browser = webdriver.Chrome(options=options)
    browser.maximize_window()
    browser.get('https://en.savefrom.net/111/download-from-instagram')
    _login = browser.find_element(By.NAME, 'sf_url')
    normal_link = message.text.split('?')[0]
    print(normal_link)
    _login.send_keys(normal_link)
    _login.send_keys(Keys.ENTER)
    wait = WebDriverWait(browser, 30)
    element = wait.until(EC.element_to_be_clickable((By.CLASS_NAME,'def-btn-box')))
    
    src = browser.page_source 
    browser.quit()  
    soup = BS(src, 'html.parser')
    links = soup.find_all('div', {'class': 'def-btn-box'})
    for link in links:
        download_url = (link.find('a', href=True)['href'])
        try:
            await message.answer_video(download_url)
        except InvalidHTTPUrlContent:
            await bot.send_message(message.chat.id, 'видео слишком большое')


if __name__ == "__main__":
    executor.start_polling(dp, skip_updates=True, on_startup=print('Bot is running!'))
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
Vindicar
@Vindicar
Смотришь заголовки ответа, в частности заголовок Content-Length. Он содержит длину содержимого в байтах. Имей ввиду, его присутствие не гарантируется (хотя сейчас почти все его отправляют).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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