added connection between downloader and uploader services

This commit is contained in:
Ara0n 2022-01-15 01:29:05 +05:30
parent c7938d144f
commit d04045c67d
7 changed files with 293 additions and 65 deletions

31
Pipfile
View File

@ -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"

221
Pipfile.lock generated Normal file
View File

@ -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": {}
}

View File

@ -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))

View File

@ -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

View File

@ -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:])
main(sys.argv[0:])

View File

@ -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"
python-telegram-bot
telethon
cachetools
certifi
pyaes
pyasn1
pytz
pytz-deprecation-shim
rsa
six
tornado
tzdata
tzlocal
APScheduler
ffmpeg
Telethon
backports.zoneinfo

View File

@ -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,