48 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import logging
 | |
| 
 | |
| from telegram import InlineKeyboardMarkup
 | |
| from telegram.ext import Updater, CallbackQueryHandler, MessageHandler, Filters
 | |
| 
 | |
| from vid_utils import Video, BadLink
 | |
| 
 | |
| logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
 | |
| logger = logging.getLogger(__name__)
 | |
| 
 | |
| 
 | |
| def get_format(bot, update):
 | |
|     logger.info("from {}: {}".format(update.message.chat_id, update.message.text)) # "history"
 | |
| 
 | |
|     try:
 | |
|         video = Video(update.message.text, init_keyboard=True)
 | |
|     except BadLink:
 | |
|         update.message.reply_text("Bad link")
 | |
|     else:
 | |
|         reply_markup = InlineKeyboardMarkup(video.keyboard)
 | |
|         update.message.reply_text('Choose format:', reply_markup=reply_markup)
 | |
| 
 | |
| 
 | |
| def download_choosen_format(bot, update):
 | |
|     query = update.callback_query
 | |
|     resolution_code, link = query.data.split(' ', 1)
 | |
|     
 | |
|     bot.edit_message_text(text="Downloading...",
 | |
|                           chat_id=query.message.chat_id,
 | |
|                           message_id=query.message.message_id)
 | |
|     
 | |
|     video = Video(link)
 | |
|     video.download(resolution_code)
 | |
|     
 | |
|     with video.send() as files:
 | |
|         for f in files:
 | |
|             bot.send_document(chat_id=query.message.chat_id, document=open(f, 'rb'))
 | |
| 
 | |
| 
 | |
| updater = Updater(token=YOUR_TOKEN)
 | |
| 
 | |
| updater.dispatcher.add_handler(MessageHandler(Filters.text, get_format))
 | |
| updater.dispatcher.add_handler(CallbackQueryHandler(download_choosen_format))
 | |
| 
 | |
| 
 | |
| updater.start_polling()
 | |
| updater.idle()
 | 
