#!/usr/bin/python # -*- coding: utf-8 -*- import logging import os from aiogram import Bot, Dispatcher, types from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton from aiogram.utils import executor import instaloader # Ваш токен от BotFather API_TOKEN = '5285575539:AAGu_qK23xq98fta1fJmV9oyDYoq9yhzeHM' # Настройка логирования с записью в файл logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler('bot_instagram_logs.log'), logging.StreamHandler() ] ) logger = logging.getLogger(__name__) # Инициализация бота и диспетчера bot = Bot(token=API_TOKEN) dp = Dispatcher(bot) # Функция для скачивания видео с Instagram def download_instagram_video(url): L = instaloader.Instaloader() try: post = instaloader.Post.from_shortcode(L.context, url.split("/")[-2]) if post.is_video: L.download_post(post, target="downloads") video_filename = next((f for f in os.listdir("downloads") if f.endswith('.mp4')), None) if video_filename: return os.path.join("downloads", video_filename) return None except Exception as e: logger.error(f"Ошибка при скачивании видео: {e}") return None # Обработчик команды /start @dp.message_handler(commands=['start']) async def send_welcome(message: types.Message): await message.reply("Привет! Я бот для скачивания видео с Instagram. Отправьте ссылку на видео чтобы начать.") # Обработчик получения ссылки на Instagram @dp.message_handler() async def handle_instagram_link(message: types.Message): link = message.text await message.reply("Видео скачивается, пожалуйста подождите...") video_file = download_instagram_video(link) if video_file: with open(video_file, 'rb') as video: await bot.send_video(message.chat.id, video, caption="Вот ваше видео с Instagram") os.remove(video_file) else: await message.reply("Произошла ошибка при скачивании видео. Пожалуйста, попробуйте ещё раз.") if __name__ == '__main__': logger.info('Start polling.') executor.start_polling(dp, skip_updates=True)