Files
BOTGroupNetwork/downinstagram(OLD).py
2024-06-17 10:53:33 +03:00

65 lines
2.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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)