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

81 lines
3.0 KiB
Python
Raw 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.utils import executor
import instaloader
# Ваш токен от BotFather
API_TOKEN = '5285575539:AAGu_qK23xq98fta1fJmV9oyDYoq9yhzeHM'
# Ваши учетные данные Instagram
INSTAGRAM_USERNAME = 'bdg9840'
INSTAGRAM_PASSWORD = '-4m5kRsf_xesAjZ'
# Путь к файлу cookie
COOKIE_FILE = 'cookiesinst.txt'
# Настройка логирования с записью в файл
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
async def download_instagram_video(url):
L = instaloader.Instaloader()
# Проверяем, существует ли файл cookie
if os.path.isfile(COOKIE_FILE):
L.load_session_from_file(INSTAGRAM_USERNAME, COOKIE_FILE)
else:
session = instaloader.Session()
session.login(INSTAGRAM_USERNAME, INSTAGRAM_PASSWORD)
L.context = instaloader.context.Context(session)
L.save_session_to_file(COOKIE_FILE)
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 = await 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)