From f357e03b42a8a5b5021cdc89533822fe1c68b2d8 Mon Sep 17 00:00:00 2001 From: Ara0n Date: Sun, 20 Feb 2022 13:52:33 +0530 Subject: [PATCH] added mongodb for optimization --- Pipfile | 1 + Pipfile.lock | 105 ++++++++++++++++++++++++++++++++++++++++++---- bot/bot.py | 16 ++++--- bot/botUtils.py | 2 +- bot/database.py | 36 ++++++++++++++++ databaseSchema.md | 11 +++++ 6 files changed, 156 insertions(+), 15 deletions(-) create mode 100644 bot/database.py create mode 100644 databaseSchema.md diff --git a/Pipfile b/Pipfile index 9b25f61..9fe5f4c 100644 --- a/Pipfile +++ b/Pipfile @@ -23,6 +23,7 @@ apscheduler = "*" ffmpeg = "*" backports-zoneinfo = "*" jikanpy = "*" +pymongo = "*" [requires] python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock index 0e94a82..5985a8a 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "53ed8d7f576d493b19acfd3ce9cb5e2e70ce57fab61873e26e987ed276bb2e38" + "sha256": "1436e1a5195197c54f4c1bcefe19c1736ca23800cdaf2682cd0ce1dfaadba058" }, "pipfile-spec": 6, "requires": { @@ -183,11 +183,11 @@ }, "charset-normalizer": { "hashes": [ - "sha256:876d180e9d7432c5d1dfd4c5d26b72f099d503e8fcc0feb7532c9289be60fcbd", - "sha256:cb957888737fc0bbcd78e3df769addb41fd1ff8cf950dc9e7ad7793f1bf44455" + "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597", + "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df" ], "markers": "python_version >= '3'", - "version": "==2.0.10" + "version": "==2.0.12" }, "ffmpeg": { "hashes": [ @@ -355,13 +355,102 @@ "index": "pypi", "version": "==0.4.8" }, - "python-telegram-bot": { + "pymongo": { "hashes": [ - "sha256:833f39110f5d019b39a6c6fcbabd6ea1627eaaa0a26e618c0be099568672d791", - "sha256:d2c555431821f4ace0c1b7ce12af41999f01b793b275dee131f1034d08c01e3e" + "sha256:0238e53b452ab699b5e2e3f8af2557844c80ab0d0c7a0e066226882838e72756", + "sha256:0271bbba36bb130202e011171c1883c4c193036ad0b1e02ecfbea6837790b7de", + "sha256:069d49b193f94bb1d748cfd8faf697060a2299f40d86bf5b6d41dd3cedf0fd48", + "sha256:06af6e6374ee2bb70f724e09ddf9402907a3d6714828b908737948cd83e5685c", + "sha256:0c77cd3dbe0dd9e7cdf8c93dc24e5a4fcb56e115ffb259d4f399e4aaf3f3c62d", + "sha256:0e9a2628bcd896368ede456bcfe189d9ca65b18fb0dd91974cb734baf2e24af9", + "sha256:12d336bdbe60982de55651be397b5e49d7eadd2aa144f11da353002cd52502ed", + "sha256:132cc67b909835d7c230888387b4cc9596d4559a3ce90d947e03bc0b0ffe420b", + "sha256:13d0624c13a91da71fa0d960205d93b3d98344481be865ee7cc238c972d41d73", + "sha256:1498f388181ae5592c7b60549faaefaffc62d6e3754097576611cb642d21d37b", + "sha256:1617fd52da7b208fe5ea176d251dd7cf1b5309e5a4272754b9599edfdf7e64e5", + "sha256:177ed1b14aa4f84f00ebef1b0f785680fbaa610361942b23eb54f562fe4c6b34", + "sha256:186b2ff4518c1c169fcef5047deb0e6c13a2354d143859587e745fd9f2cf68e9", + "sha256:1ba8eb426d56556fffec53d600a8f2572589c19d50b30f61daa8f4d72ab92fbe", + "sha256:1c153274699424e8f89f2097d5113f8cbe7898a8d62afaad0270a0f0bd0af53b", + "sha256:1fd71b4d7070b01c7f66edc44c1ec2f8bcace2761c3a6ecc10449a40e474d2fa", + "sha256:28afb00423e521f4b04fb8f75da7c0215e46631e821e27abf5a7176f9b671f47", + "sha256:349c8e522e0b785f442fc9d7fc01c59f7f13f1abe9395310d0d817cff03ec034", + "sha256:35a5843546bcbe0422f30b4b2bd5e0b630b04cc4006492c70e8168a921d94b9e", + "sha256:38b21eddd021a943b1978b0a3d42e974956a338e3dbb88d56aeb8b8799abd6e8", + "sha256:3a4eb0a4db8a2d960bdd5354f05e2e57530e83d333cb644fb2b7120a7a954a69", + "sha256:40269fe6bb79fe00c8ba7c2f2d542a82711eb234c3dedb90b7e489386120e9d1", + "sha256:426584e99af31ad2398e617c3eb0f1ebcda37f0ffb2d3e56087cdaf23a2f1689", + "sha256:47a58f15fc70198cf95982f9699e17fec12287b90f30e90c5e2b7c1c1bc07914", + "sha256:512059a902ea2cbcd0afac370af580e67ccd4c7e41ecaff0f0fbd03653b25ca2", + "sha256:51664dac8d9b138259876f324adca5ab31d991acf88d1d0ffcc94f423ff2e31b", + "sha256:59a4a5fe5379e4fa93380fd0b55bccbdbeb8d04fcfbbad8b42bd31610d5ed3ad", + "sha256:5cbfa85a12cfe3dca21951cd432051c505ac461bd9f4a635207d982dd9df2373", + "sha256:5fea4207fec8909e155a7948c987eac61949dbbe97fd0c388e587d06ba9bc78d", + "sha256:6183476860511cb553a7e4c40936221b6985af7852029c84df898370ec8a028c", + "sha256:62459b91a513a7b441cfd70ea7fd15c50b858877ca823915d32bab08fe173edb", + "sha256:633ca2001f80900142068bab907feca99554b557ac105c74a9ed157ed38ca5d6", + "sha256:65f8a93816dcb2202710839907759aca9eece94d9f13215686f224fcc8966f9e", + "sha256:686c40344f7f82c4deaa4e17aa46ad97df51263be1434aeedd2d6b6f38c7f44a", + "sha256:6cd7a4321e718cb98a7c7c475b0757e77fdaf1cdb013d7d2e781ba45219e1144", + "sha256:6f0605b1146bc24c720aac0e806492144aea9d5a4dc956589e0544301862756a", + "sha256:716499113650aacfe1b94d37e0a863f1e84b8d47737c74a2f44f8dfccad46952", + "sha256:71810eade75ae1c466adc158d1fa8141040f75427b76240316d97f3c89edd72f", + "sha256:72a0c06b76b254bdec18af9add3b8d35796dda51e64a5e0e48d40bff7b41ab13", + "sha256:7450b25a803b0f57dae4c3fbd0df742f7f3344c3c9cabb86e4180083c3ebd893", + "sha256:75e449ab068af63b7729195343315bc63d242166d88467314be182cc54ce235d", + "sha256:7629abba158610cb5db6c22041b287f9398555d72bf9468d44d2efc03d837b81", + "sha256:774b9f48bdc385af6654def31e7a7617e01b99cc8aaca1ab3ef6ea0492205e57", + "sha256:7a091050bb8d54a5200193b4998e0cf763d083f93d97c7780963c09996f85a38", + "sha256:7bdb66340e246b5dcddfcfe79a63ac2ec3808dc394853476f49fc785425040f4", + "sha256:812650a2e8a08b812d6a3c937f482bd2c9355e90574964fa283b4d8ef4ae665e", + "sha256:84eec41ed982f21ceb58689e16a630a70301eb14499c929388a5bf6464518d9d", + "sha256:86d0e28dd5867153d9d9963a4eb17764854a925758fc2db0a814260f82fd4319", + "sha256:87dce7c85387ca033cf76cce773ace7675550dcffc456db32a34403439e53e45", + "sha256:8869feff59f08cd63979df26aa12343a85bdc7fbd1b79fda8ae39f31a310fa62", + "sha256:8baf23d6a0a08b697854e5bcdf82afb91da732cf575fd47ee93945c3654132d8", + "sha256:8da525765dbcc1b7abf1bba623f9f701d8759a8fb19594cd71a13b7b0c2c56bd", + "sha256:9043bfb816ed50d831acc8d06469dcc41597b4f50c30e62227a93f9f9e37d6c7", + "sha256:91c049104b51321e4e18d41edc6850d9f0890ac609b3cb3b8db86dc51666de17", + "sha256:93c25fbb5dbc436edbb74101f4da49a42bd3af534513fdf8e75fc72ef035d5e0", + "sha256:953129b6b952a9d22042ac23050053444624f630e1928f5f590788660905fa9c", + "sha256:9ff0dbec451a2c6226bbd6f2bbbde438bc263e002f3f97d151c8708732ba5197", + "sha256:a47f4b24b1360da172cae07ce90e9bd425b6db0052d76142c7fef47173a27283", + "sha256:a57e271a0647002b5683dd0c7c2fd7f5fb939357c44396d85298e51a3561b9e3", + "sha256:b0606d14892ae2a2b1450e37c8924381e9b64683386a9853e4467f02fd5b44b6", + "sha256:b73ff8582964f52ab1bf1a9fdddc1454143172a0b8a9d7d6e3972dd1134f7982", + "sha256:bf6047dea1bc8ae19fc14e01b5cb70b3810f91b100d9a535751dd3eadcd3016c", + "sha256:c0efc5ab7d9b9e64726496bf650dbc7f1754124a48d076e5292cc5306e61a530", + "sha256:c86a0614eda95db036fae01a89f3917d7abdc657c806bac2a32eec74724d9330", + "sha256:c878286b1464f462616a47f315d14f02f03512c6b81cb568e996c3f1f79bff8a", + "sha256:cd4cde3dfdd347d638171eca53ee6e787d4b1247c6e182f8616039b1df6278d5", + "sha256:ceb9a4986f56595e73fffeef3ec037280eda938ed5fe6e4e0961656669d89b32", + "sha256:d419e2dbc4943ad6df7ee05e707d7b2c2b512b92407bb6ff643bccbdea399c3a", + "sha256:d66462f740dcea496bd779775688a0f805860f0b01998bb59ca22566b098ee26", + "sha256:d7514231a03e95072b32d9b335b96253799802ab94647ce83585d5010749380a", + "sha256:d9f61b08b60909d936c1f3a4e12c163ca71fd1a4665fc6e078afc6f54f886977", + "sha256:da576e59f5f8a642ee26d027479325a45be45defe075b6fa7c84506dabc76883", + "sha256:ddaf391ba74eef47eb5afbc40d0b6ddcdbdb417ec8edc8ae95352d25485076db", + "sha256:e2b6a323ca545bcb4286d14c0bd75d9a1f5bce2fa1d7fa3621e5f71fd9b8d196", + "sha256:e3f6faea65a73ed54111f209b4a411fe012c68f04e8bde96dd7af89b13cac92b", + "sha256:e4e36810c541bd1976cd05452e797860b775886cf32c3e8136b9fe48c2c8ba95", + "sha256:e5441f4c8142a250695e249e432637c14f79d856a2b60e0974da082e006c53e2", + "sha256:e7aedefc87cb46544a3865a19c1d5ca7ddf5ec5ed7dfe162d9538d7543aef499", + "sha256:ee2c1fd5bd57fd0092dfa31c1f9f166cf2850f191311603ce343cadcc8608d60", + "sha256:f2b6e12f98cce588525f3db802c88f9795d294549ebfe7c2c9bb81333f533ecd", + "sha256:f333c0d71dd892683e608f8d1731785a0aa67b1ec012b0d9fc863e8d7224f64e", + "sha256:f3e20eb096deea92350f7198a4287d45883a62fe4459d027ce789e72ceba12ee", + "sha256:f785375ca2b4e2192786f1e0d2a94c66900d12e780ebae1eccbbab85eb9a7054" ], "index": "pypi", - "version": "==13.10" + "version": "==4.0.1" + }, + "python-telegram-bot": { + "hashes": [ + "sha256:534f5bb0ff4ca34c9252e97e0b3bcdab81d97be0eb4821682a361cb426c00e55", + "sha256:baeff704baa2ac3dc17a944c02da888228ad258e89be2e5bcbd13a8a5102d573" + ], + "index": "pypi", + "version": "==13.11" }, "pytz": { "hashes": [ diff --git a/bot/bot.py b/bot/bot.py index 4826d2a..4c7b811 100644 --- a/bot/bot.py +++ b/bot/bot.py @@ -6,6 +6,7 @@ from time import time from telegram.ext import Updater, CommandHandler, MessageHandler, Filters from telegram.update import Update from botUtils import showhelp,parse_search_query,getalltsfiles,getAnimelink +from database import getData, postData import subprocess import datetime import pytz @@ -44,15 +45,18 @@ def get(update, context): userInput = rawUserInput[:] 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')}\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"Checking Internal Db\nAnime: {userdata.get('series_name')}\nSeason: {userdata.get('season_id')}\nEpisode: {userdata.get('episode_id')}") + anime_name = getData(userdata) + if not anime_name: + download_status = subprocess.check_call("python downloaderService/main.py "+'"'+userdata.get('series_name')+'"'+' '+ userdata.get('episode_id') , shell=True) + else: + context.bot.send_video(chat_id,anime_name.get("file_id"),supports_streaming=True,timeout=120) else: update.message.reply_text("Please refer to /help") - update.message.reply_text(f"{userdata.get('series')} - {userdata.get('episode_id')} almost done downloading on the server side!") + update.message.reply_text(f"{userdata.get('series_name')} - {userdata.get('episode_id')} almost done downloading on the server side!") filepath = getalltsfiles() - #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) + upload_status = subprocess.check_call("python uploaderService/main.py " +'"'+filepath+'"'+ ' ' + str(chat_id) + ' ' + (userdata.get('series_name')+str(userdata.get('episode_id'))), shell=True) def error(update, context): @@ -76,7 +80,6 @@ def check_document(update, context): #Keep in mind here i have to parse the chat_id from the caption above context.bot.send_video(end_user_chat_id,file_id,supports_streaming=True,timeout=120) - def debug_message(update, context): logger.info('debug_message function is called!') @@ -94,6 +97,7 @@ def callback_minute(context): def main(): updater = Updater(token=API_TOKEN, use_context=True, request_kwargs={'read_timeout': 10, 'connect_timeout': 10}) job = updater.job_queue + # Get the dispatcher to register handlers dp = updater.dispatcher job.run_repeating(callback_minute, interval=120,first=10) diff --git a/bot/botUtils.py b/bot/botUtils.py index 5820412..6f7ce4b 100644 --- a/bot/botUtils.py +++ b/bot/botUtils.py @@ -28,7 +28,7 @@ def parse_search_query(raw_input): episode_id = -1 query_obj = { - "series" : series_name, + "series_name" : series_name, "season_id" : season_id, "episode_id": episode_id } diff --git a/bot/database.py b/bot/database.py new file mode 100644 index 0000000..b7f5c6b --- /dev/null +++ b/bot/database.py @@ -0,0 +1,36 @@ +from pymongo import MongoClient +import datetime +import json +from botUtils import parse_search_query + +client = MongoClient('mongodb://localhost:27017/') + +#database +db = client["animeDatabase"] +#collection +col = db["animeDatabase"] + + +''' + * DB Models + * animeDatabase + - id *Primary Key* + - series_name + - season_id + - episode_id + - file_id + - times_queried + - date_added +''' + +def postData(data): + try: + post_id = col.insert_one(data).inserted_id + return post_id + except: + return {} + +def getData(data): + anime_data = col.find_one(filter=data) + return anime_data + diff --git a/databaseSchema.md b/databaseSchema.md new file mode 100644 index 0000000..a26b9b9 --- /dev/null +++ b/databaseSchema.md @@ -0,0 +1,11 @@ +# Data Model + + * DB Models + * animeDatabase + - id *Primary Key* + - Series_name + - Season_id + - Episode_id + - file_id + - times_queried + - date_added