У меня есть код для скачивания фото и видео с профиля инстаграм, и он работает.
Но в профиле могут быть большие видео, которые весят больше 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!'))