From d04045c67de608d73400063e1923c6fee5efa2c1 Mon Sep 17 00:00:00 2001 From: Ara0n Date: Sat, 15 Jan 2022 01:29:05 +0530 Subject: [PATCH] added connection between downloader and uploader services --- Pipfile | 31 +++--- Pipfile.lock | 221 ++++++++++++++++++++++++++++++++++++++ bot/bot.py | 39 +++---- bot/botUtils.py | 14 +++ downloaderService/main.py | 10 +- requirments.txt | 34 +++--- uploaderService/main.py | 9 +- 7 files changed, 293 insertions(+), 65 deletions(-) create mode 100644 Pipfile.lock diff --git a/Pipfile b/Pipfile index b9ba467..ccd976c 100644 --- a/Pipfile +++ b/Pipfile @@ -6,23 +6,22 @@ verify_ssl = true [dev-packages] [packages] -python-telegram-bot = "==13.10" -telegramclient = "*" -cachetools = "==4.2.2" -certifi = "==2021.10.8" -pyaes = "==1.6.1" -pyasn1 = "==0.4.8" -pytz = "==2021.3" -pytz-deprecation-shim = "==0.1.0.post0" -rsa = "==4.8" -six = "==1.16.0" -tornado = "==6.1" -tzdata = "==2021.5" -tzlocal = "==4.1" -APScheduler = "==3.6.3" +python-telegram-bot = "*" +telethon = "*" +cachetools = "*" +certifi = "*" +pyaes = "*" +pyasn1 = "*" +pytz = "*" +pytz-deprecation-shim = "*" +rsa = "*" +six = "*" +tornado = "*" +tzdata = "*" +tzlocal = "*" +apscheduler = "*" ffmpeg = "*" -Telethon = "==1.24.0" -"backports.zoneinfo" = "==0.2.1" +backports-zoneinfo = "*" [requires] python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..b06402f --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,221 @@ +{ + "_meta": { + "hash": { + "sha256": "c6724c0871d73ed781badffe348bc912a279766980b47555596be9d6cc4907c0" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.8" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "apscheduler": { + "hashes": [ + "sha256:3bb5229eed6fbbdafc13ce962712ae66e175aa214c69bed35a06bffcf0c5e244", + "sha256:e8b1ecdb4c7cb2818913f766d5898183c7cb8936680710a4d3a966e02262e526" + ], + "index": "pypi", + "version": "==3.6.3" + }, + "backports-zoneinfo": { + "hashes": [ + "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf", + "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328", + "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546", + "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6", + "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570", + "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9", + "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7", + "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987", + "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722", + "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582", + "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc", + "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b", + "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1", + "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08", + "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac" + ], + "index": "pypi", + "version": "==0.2.1" + }, + "backports.zoneinfo": { + "hashes": [ + "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf", + "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328", + "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546", + "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6", + "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570", + "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9", + "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7", + "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987", + "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722", + "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582", + "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc", + "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b", + "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1", + "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08", + "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac", + "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2" + ], + "markers": "python_version >= '3.6' and python_version < '3.9'", + "version": "==0.2.1" + }, + "cachetools": { + "hashes": [ + "sha256:2cc0b89715337ab6dbba85b5b50effe2b0c74e035d83ee8ed637cf52f12ae001", + "sha256:61b5ed1e22a0924aed1d23b478f37e8d52549ff8a961de2909c69bf950020cff" + ], + "index": "pypi", + "version": "==4.2.2" + }, + "certifi": { + "hashes": [ + "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", + "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569" + ], + "index": "pypi", + "version": "==2021.10.8" + }, + "ffmpeg": { + "hashes": [ + "sha256:6931692c890ff21d39938433c2189747815dca0c60ddc7f9bb97f199dba0b5b9" + ], + "index": "pypi", + "version": "==1.4" + }, + "pyaes": { + "hashes": [ + "sha256:02c1b1405c38d3c370b085fb952dd8bea3fadcee6411ad99f312cc129c536d8f" + ], + "index": "pypi", + "version": "==1.6.1" + }, + "pyasn1": { + "hashes": [ + "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d", + "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba" + ], + "index": "pypi", + "version": "==0.4.8" + }, + "python-telegram-bot": { + "hashes": [ + "sha256:833f39110f5d019b39a6c6fcbabd6ea1627eaaa0a26e618c0be099568672d791", + "sha256:d2c555431821f4ace0c1b7ce12af41999f01b793b275dee131f1034d08c01e3e" + ], + "index": "pypi", + "version": "==13.10" + }, + "pytz": { + "hashes": [ + "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c", + "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326" + ], + "index": "pypi", + "version": "==2021.3" + }, + "pytz-deprecation-shim": { + "hashes": [ + "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6", + "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d" + ], + "index": "pypi", + "version": "==0.1.0.post0" + }, + "rsa": { + "hashes": [ + "sha256:5c6bd9dc7a543b7fe4304a631f8a8a3b674e2bbfc49c2ae96200cdbe55df6b17", + "sha256:95c5d300c4e879ee69708c428ba566c59478fd653cc3a22243eeb8ed846950bb" + ], + "index": "pypi", + "version": "==4.8" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "index": "pypi", + "version": "==1.16.0" + }, + "telethon": { + "hashes": [ + "sha256:04fdc5fa4ed3e886e6ecf4bad79205ab8880c6aefbd42c29c89c689a502aa816", + "sha256:818cb61281ed3f75ba4da9b68cb69486bed9474d2db4e0aa16e482053117452c" + ], + "index": "pypi", + "version": "==1.24.0" + }, + "tornado": { + "hashes": [ + "sha256:0a00ff4561e2929a2c37ce706cb8233b7907e0cdc22eab98888aca5dd3775feb", + "sha256:0d321a39c36e5f2c4ff12b4ed58d41390460f798422c4504e09eb5678e09998c", + "sha256:1e8225a1070cd8eec59a996c43229fe8f95689cb16e552d130b9793cb570a288", + "sha256:20241b3cb4f425e971cb0a8e4ffc9b0a861530ae3c52f2b0434e6c1b57e9fd95", + "sha256:25ad220258349a12ae87ede08a7b04aca51237721f63b1808d39bdb4b2164558", + "sha256:33892118b165401f291070100d6d09359ca74addda679b60390b09f8ef325ffe", + "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791", + "sha256:3447475585bae2e77ecb832fc0300c3695516a47d46cefa0528181a34c5b9d3d", + "sha256:34ca2dac9e4d7afb0bed4677512e36a52f09caa6fded70b4e3e1c89dbd92c326", + "sha256:3e63498f680547ed24d2c71e6497f24bca791aca2fe116dbc2bd0ac7f191691b", + "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4", + "sha256:6196a5c39286cc37c024cd78834fb9345e464525d8991c21e908cc046d1cc02c", + "sha256:61b32d06ae8a036a6607805e6720ef00a3c98207038444ba7fd3d169cd998910", + "sha256:6286efab1ed6e74b7028327365cf7346b1d777d63ab30e21a0f4d5b275fc17d5", + "sha256:65d98939f1a2e74b58839f8c4dab3b6b3c1ce84972ae712be02845e65391ac7c", + "sha256:66324e4e1beede9ac79e60f88de548da58b1f8ab4b2f1354d8375774f997e6c0", + "sha256:6c77c9937962577a6a76917845d06af6ab9197702a42e1346d8ae2e76b5e3675", + "sha256:70dec29e8ac485dbf57481baee40781c63e381bebea080991893cd297742b8fd", + "sha256:7250a3fa399f08ec9cb3f7b1b987955d17e044f1ade821b32e5f435130250d7f", + "sha256:748290bf9112b581c525e6e6d3820621ff020ed95af6f17fedef416b27ed564c", + "sha256:7da13da6f985aab7f6f28debab00c67ff9cbacd588e8477034c0652ac141feea", + "sha256:8f959b26f2634a091bb42241c3ed8d3cedb506e7c27b8dd5c7b9f745318ddbb6", + "sha256:9de9e5188a782be6b1ce866e8a51bc76a0fbaa0e16613823fc38e4fc2556ad05", + "sha256:a48900ecea1cbb71b8c71c620dee15b62f85f7c14189bdeee54966fbd9a0c5bd", + "sha256:b87936fd2c317b6ee08a5741ea06b9d11a6074ef4cc42e031bc6403f82a32575", + "sha256:c77da1263aa361938476f04c4b6c8916001b90b2c2fdd92d8d535e1af48fba5a", + "sha256:cb5ec8eead331e3bb4ce8066cf06d2dfef1bfb1b2a73082dfe8a161301b76e37", + "sha256:cc0ee35043162abbf717b7df924597ade8e5395e7b66d18270116f8745ceb795", + "sha256:d14d30e7f46a0476efb0deb5b61343b1526f73ebb5ed84f23dc794bdb88f9d9f", + "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32", + "sha256:d3d20ea5782ba63ed13bc2b8c291a053c8d807a8fa927d941bd718468f7b950c", + "sha256:d3f7594930c423fd9f5d1a76bee85a2c36fd8b4b16921cae7e965f22575e9c01", + "sha256:dcef026f608f678c118779cd6591c8af6e9b4155c44e0d1bc0c87c036fb8c8c4", + "sha256:e0791ac58d91ac58f694d8d2957884df8e4e2f6687cdf367ef7eb7497f79eaa2", + "sha256:e385b637ac3acaae8022e7e47dfa7b83d3620e432e3ecb9a3f7f58f150e50921", + "sha256:e519d64089b0876c7b467274468709dadf11e41d65f63bba207e04217f47c085", + "sha256:e7229e60ac41a1202444497ddde70a48d33909e484f96eb0da9baf8dc68541df", + "sha256:ed3ad863b1b40cd1d4bd21e7498329ccaece75db5a5bf58cd3c9f130843e7102", + "sha256:f0ba29bafd8e7e22920567ce0d232c26d4d47c8b5cf4ed7b562b5db39fa199c5", + "sha256:fa2ba70284fa42c2a5ecb35e322e68823288a4251f9ba9cc77be04ae15eada68", + "sha256:fba85b6cd9c39be262fcd23865652920832b61583de2a2ca907dbd8e8a8c81e5" + ], + "index": "pypi", + "version": "==6.1" + }, + "tzdata": { + "hashes": [ + "sha256:3eee491e22ebfe1e5cfcc97a4137cd70f092ce59144d81f8924a844de05ba8f5", + "sha256:68dbe41afd01b867894bbdfd54fa03f468cfa4f0086bfb4adcd8de8f24f3ee21" + ], + "index": "pypi", + "version": "==2021.5" + }, + "tzlocal": { + "hashes": [ + "sha256:0f28015ac68a5c067210400a9197fc5d36ba9bc3f8eaf1da3cbd59acdfed9e09", + "sha256:28ba8d9fcb6c9a782d6e0078b4f6627af1ea26aeaa32b4eab5324abc7df4149f" + ], + "index": "pypi", + "version": "==4.1" + } + }, + "develop": {} +} diff --git a/bot/bot.py b/bot/bot.py index 425c964..716cb80 100644 --- a/bot/bot.py +++ b/bot/bot.py @@ -1,15 +1,18 @@ import logging import json +from operator import truediv from telegram.ext import Updater, CommandHandler, MessageHandler, Filters from telegram.update import Update -from botUtils import showhelp,parse_search_query +from botUtils import showhelp,parse_search_query,getalltsfiles +import subprocess + #enabling Logging logging.basicConfig(format='%(levelname)s - %(asctime)s - %(name)s - %(message)s', level=logging.INFO) logger = logging.getLogger(__name__) -with open('config/botConfig.json', 'r') as config: +with open('bot/config/botConfig.json', 'r') as config: configdata = json.load(config) API_TOKEN = configdata.get("bot_token") @@ -23,7 +26,7 @@ def help(update,context): text = showhelp() update.message.reply_text(text) - + def search(update, context): logger.info('Search function is called!') @@ -38,25 +41,19 @@ def get(update, context): userdata = parse_search_query(userInput) update.message.reply_text(f"Checking Internal Db\nAnime: {userdata.get('series')}\nSeason: {userdata.get('season_id')}\nEpisode: {userdata.get('episode_id')}") + download_status = subprocess.check_call("python downloaderService/main.py "+'"'+userdata.get('series')+'"'+ ' ' + userdata.get('episode_id') , shell=True) + update.message.reply_text(f"{userdata.get('series')} - {userdata.get('episode_id')} Downloaded!") + filepath = getalltsfiles() + print("getalltsfiles: ",filepath) + update.message.reply_text(f"{userdata.get('series')} - {userdata.get('episode_id')} Uploading Started!") + upload_status = subprocess.check_call("python uploaderService/main.py " +'"'+filepath+'"'+ ' ' + str(chat_id) + ' ' + (userdata.get('series')+str(userdata.get('episode_id'))), shell=True) + print(upload_status) + else: update.message.reply_text("Please refer to /help") - -def getall(update, context): - logger.info('download function is called!') - chat_id = update.message.chat_id - rawUserInput = update.message.text - userInput = rawUserInput[7:] - if userInput and not userInput == " ": - userdata = parse_search_query(userInput) - update.message.reply_text(f"Checking Internal Db\nAnime: {userdata.get('series')}\nSeason: {userdata.get('season_id')}") - - - else: - update.message.reply_text("Please refer to /help") - - + def error(update, context): """Log Errors caused by Updates.""" logger.warning('Update "%s" caused error "%s"', update, context.error) @@ -86,11 +83,8 @@ def debug_message(update, context): - - - def main(): - updater = Updater(token=API_TOKEN, use_context=True) + updater = Updater(token=API_TOKEN, use_context=True, request_kwargs={'read_timeout': 100, 'connect_timeout': 100}) # Get the dispatcher to register handlers dp = updater.dispatcher @@ -99,7 +93,6 @@ def main(): dp.add_handler(CommandHandler("help", help)) dp.add_handler(CommandHandler("search", search)) dp.add_handler(CommandHandler("get", get)) - dp.add_handler(CommandHandler("getall", getall)) dp.add_handler(MessageHandler(Filters.text, debug_message)) diff --git a/bot/botUtils.py b/bot/botUtils.py index 7d6fbac..f1a2704 100644 --- a/bot/botUtils.py +++ b/bot/botUtils.py @@ -11,6 +11,7 @@ example - /getall Death Note, s1 example - /search Death Note ''' +import os def showhelp(): helpText = "Here are the following bot commands\n\n/get - will download the anime episode you wanted\nexample - /get Death note, s1, ep3\n\n/getadd - will provide all the episode of an anime in a given season\nexample - /getall Death Note, s1\n\n/search - will provide deatails about an anime\nexample - /search Death Note" @@ -35,3 +36,16 @@ def parse_search_query(raw_input): } return query_obj +def getalltsfiles(): + walk_dir = '.' + for root, _, files in os.walk(walk_dir): + for file in files: + if (file.split(".")[-1].lower() == 'mp4'): + mp4FilePath = os.path.join(root, os.path.splitext(file)[0] + ".mp4") + mp4FilePath = mp4FilePath.replace("\\","/") + return mp4FilePath + + + + +# python uploaderService/main.py ./Naruto/E04.mp4 5023977571 naruto4 \ No newline at end of file diff --git a/downloaderService/main.py b/downloaderService/main.py index c7214ad..a30bfac 100644 --- a/downloaderService/main.py +++ b/downloaderService/main.py @@ -1,5 +1,6 @@ import subprocess import os +import sys def downloadVideo(search_query,search_query_range,search_quality): # animdl download "demon slayer" -r 1 @@ -22,9 +23,8 @@ def convert2mp4(infile, outfile): # ffmpeg -i E01.ts -c:v copy -c:a copy -preset:v ultrafast -segment_list_flags +live video.mp4 subprocess.run(['ffmpeg','-i',infile,'-c:v','copy','-c:a','copy','-preset:v','ultrafast','-segment_list_flags','+live',outfile]) - + def main(argv): - search_query = argv[1] search_query_range = argv[2] anime_quality = argv[3] if len(sys.argv) >= 4 else '720[subtitle]' @@ -34,6 +34,6 @@ def main(argv): convert2mp4(infile,outfile) os.remove(infile) -if __name__ == '__main__': - import sys - main(sys.argv[0:]) \ No newline at end of file + + +main(sys.argv[0:]) \ No newline at end of file diff --git a/requirments.txt b/requirments.txt index f5ee54f..e502b3c 100644 --- a/requirments.txt +++ b/requirments.txt @@ -1,17 +1,17 @@ -python-telegram-bot=="13.10" -telegramclient=="*" -cachetools=="4.2.2" -certifi=="2021.10.8" -pyaes=="1.6.1" -pyasn1=="0.4.8" -pytz=="2021.3" -pytz-deprecation-shim=="0.1.0.post0" -rsa=="4.8" -six=="1.16.0" -tornado=="6.1" -tzdata=="2021.5" -tzlocal=="4.1" -APScheduler=="3.6.3" -ffmpeg = "*" -Telethon=="1.24.0" -"backports.zoneinfo"=="0.2.1" \ No newline at end of file +python-telegram-bot +telethon +cachetools +certifi +pyaes +pyasn1 +pytz +pytz-deprecation-shim +rsa +six +tornado +tzdata +tzlocal +APScheduler +ffmpeg +Telethon +backports.zoneinfo \ No newline at end of file diff --git a/uploaderService/main.py b/uploaderService/main.py index 55d2fca..1f68573 100644 --- a/uploaderService/main.py +++ b/uploaderService/main.py @@ -19,7 +19,7 @@ import asyncio import json -with open('config/agentConfig.json', 'r') as config: +with open('uploaderService/config/agentConfig.json', 'r') as config: configdata = json.load(config) entity = configdata.get('entity') #session name - it doesn't matter what @@ -30,9 +30,7 @@ phone = configdata.get('phone') bot_name = configdata.get('bot_name') -# if not client.is_user_authorized(): -# #client.send_code_request(phone) #at the first start - uncomment, after authorization to avoid FloodWait I advise you to comment -# client.sign_in(phone, input('Enter code: ')) + def callback(current, total): @@ -48,6 +46,9 @@ object_id = an internal id used for mapping of file_id and filename stored in th ''' async def uploadVideo(bot_name,file_path,chat_id,object_id): async with TelegramClient(entity, api_id, api_hash) as client: + if not await client.is_user_authorized(): + #await client.send_code_request(phone) #at the first start - uncomment, after authorization to avoid FloodWait I advise you to comment + await client.sign_in(phone, input('Enter code: ')) await client.send_file( str(bot_name), file_path,