This commit is contained in:
2024-06-17 10:53:33 +03:00
commit a1da810c2d
22 changed files with 1253 additions and 0 deletions

81
downinstagram.py Normal file
View File

@@ -0,0 +1,81 @@
#!/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)