From 9ebf4b8092fc9c660b40b2d297947cd403db0638 Mon Sep 17 00:00:00 2001 From: Mohamed Zumair Date: Sat, 19 Oct 2024 22:44:34 +0530 Subject: [PATCH] Generate manifest.json using Jinja template for cleanest & 2.5x faster (#329) --- Pipfile.lock | 752 ++++++------ api/main.py | 22 +- db/config.py | 5 + db/crud.py | 11 +- resources/manifest.json | 1594 -------------------------- resources/templates/manifest.json.j2 | 118 ++ utils/parser.py | 99 +- utils/runtime_const.py | 1 + 8 files changed, 550 insertions(+), 2052 deletions(-) delete mode 100644 resources/manifest.json create mode 100644 resources/templates/manifest.json.j2 diff --git a/Pipfile.lock b/Pipfile.lock index 2183e2c..a42046a 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -168,11 +168,11 @@ }, "anyio": { "hashes": [ - "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb", - "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a" + "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c", + "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d" ], "markers": "python_version >= '3.9'", - "version": "==4.6.0" + "version": "==4.6.2.post1" }, "apscheduler": { "hashes": [ @@ -573,12 +573,12 @@ }, "fastapi": { "hashes": [ - "sha256:17ea427674467486e997206a5ab25760f6b09e069f099b96f5b55a32fb6f1631", - "sha256:f93b4ca3529a8ebc6fc3fcf710e5efa8de3df9b41570958abf1d97d843138004" + "sha256:3995739e0b09fa12f984bce8fa9ae197b35d433750d3d312422d846e283697ee", + "sha256:61704c71286579cc5a598763905928f24ee98bfcc07aabe84cfefb98812bbc86" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==0.115.0" + "version": "==0.115.2" }, "filelock": { "hashes": [ @@ -914,44 +914,51 @@ }, "httptools": { "hashes": [ - "sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563", - "sha256:0ac5a0ae3d9f4fe004318d64b8a854edd85ab76cffbf7ef5e32920faef62f142", - "sha256:0cf2372e98406efb42e93bfe10f2948e467edfd792b015f1b4ecd897903d3e8d", - "sha256:1ed99a373e327f0107cb513b61820102ee4f3675656a37a50083eda05dc9541b", - "sha256:3c3b214ce057c54675b00108ac42bacf2ab8f85c58e3f324a4e963bbc46424f4", - "sha256:3e802e0b2378ade99cd666b5bffb8b2a7cc8f3d28988685dc300469ea8dd86cb", - "sha256:3f30d3ce413088a98b9db71c60a6ada2001a08945cb42dd65a9a9fe228627658", - "sha256:405784577ba6540fa7d6ff49e37daf104e04f4b4ff2d1ac0469eaa6a20fde084", - "sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2", - "sha256:4bd3e488b447046e386a30f07af05f9b38d3d368d1f7b4d8f7e10af85393db97", - "sha256:4f0f8271c0a4db459f9dc807acd0eadd4839934a4b9b892f6f160e94da309837", - "sha256:5cceac09f164bcba55c0500a18fe3c47df29b62353198e4f37bbcc5d591172c3", - "sha256:639dc4f381a870c9ec860ce5c45921db50205a37cc3334e756269736ff0aac58", - "sha256:678fcbae74477a17d103b7cae78b74800d795d702083867ce160fc202104d0da", - "sha256:6a4f5ccead6d18ec072ac0b84420e95d27c1cdf5c9f1bc8fbd8daf86bd94f43d", - "sha256:6f58e335a1402fb5a650e271e8c2d03cfa7cea46ae124649346d17bd30d59c90", - "sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0", - "sha256:7a7ea483c1a4485c71cb5f38be9db078f8b0e8b4c4dc0210f531cdd2ddac1ef1", - "sha256:7d9ceb2c957320def533671fc9c715a80c47025139c8d1f3797477decbc6edd2", - "sha256:7ebaec1bf683e4bf5e9fbb49b8cc36da482033596a415b3e4ebab5a4c0d7ec5e", - "sha256:85ed077c995e942b6f1b07583e4eb0a8d324d418954fc6af913d36db7c05a5a0", - "sha256:8ae5b97f690badd2ca27cbf668494ee1b6d34cf1c464271ef7bfa9ca6b83ffaf", - "sha256:8b0bb634338334385351a1600a73e558ce619af390c2b38386206ac6a27fecfc", - "sha256:8e216a038d2d52ea13fdd9b9c9c7459fb80d78302b257828285eca1c773b99b3", - "sha256:93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503", - "sha256:95658c342529bba4e1d3d2b1a874db16c7cca435e8827422154c9da76ac4e13a", - "sha256:95fb92dd3649f9cb139e9c56604cc2d7c7bf0fc2e7c8d7fbd58f96e35eddd2a3", - "sha256:97662ce7fb196c785344d00d638fc9ad69e18ee4bfb4000b35a52efe5adcc949", - "sha256:9bb68d3a085c2174c2477eb3ffe84ae9fb4fde8792edb7bcd09a1d8467e30a84", - "sha256:b512aa728bc02354e5ac086ce76c3ce635b62f5fbc32ab7082b5e582d27867bb", - "sha256:c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a", - "sha256:d2f6c3c4cb1948d912538217838f6e9960bc4a521d7f9b323b3da579cd14532f", - "sha256:dcbab042cc3ef272adc11220517278519adf8f53fd3056d0e68f0a6f891ba94e", - "sha256:e0b281cf5a125c35f7f6722b65d8542d2e57331be573e9e88bc8b0115c4a7a81", - "sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185", - "sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3" + "sha256:0238f07780782c018e9801d8f5f5aea3a4680a1af132034b444f677718c6fe88", + "sha256:052f7f50e4a38f069478143878371ed17937f268349bcd68f6f7a9de9fcfce21", + "sha256:054bdee08e4f7c15c186f6e7dbc8f0cf974b8dd1832b5f17f988faf8b12815c9", + "sha256:1099f73952e18c718ccaaf7a97ae58c94a91839c3d247c6184326f85a2eda7b4", + "sha256:10d28e5597d4349390c640232c9366ddc15568114f56724fe30a53de9686b6ab", + "sha256:1b7bc59362143dc2d02896dde94004ef54ff1989ceedf4b389ad3b530f312364", + "sha256:1bb67d47f045f56e9a5da4deccf710bdde21212e4b1f4776b7a542449f6a7682", + "sha256:2d5c33d98b2311ddbe06e92b12b14de334dcfbe64ebcbb2c7a34b5c6036db512", + "sha256:2e9d225b178a6cc700c23cf2f5daf85a10f93f1db7c34e9ee4ee0bbc29ad458a", + "sha256:352a496244360deb1c1d108391d76cd6f3dd9f53ccf975a082e74c6761af30c9", + "sha256:3f0246ca7f78fa8e3902ddb985b9f55509d417a862f4634a8fa63a7a496266c8", + "sha256:406f7dc5d9db68cd9ac638d14c74d077085f76b45f704d3ec38d43b842b3cb44", + "sha256:41965586b02715c3d83dd9153001f654e5b621de0c5255f5ef0635485212d0c0", + "sha256:4502620722b453c2c6306fad392c515dcb804dfa9c6d3b90d8926a07a7a01109", + "sha256:4d6e0ba155a1b3159551ac6b4551eb20028617e2e4bb71f2c61efed0756e6825", + "sha256:5141ccc9dbd8cdc59d1e93e318d405477a940dc6ebadcb8d9f8da17d2812d353", + "sha256:53cd2d776700bf0ed0e6fb203d716b041712ea4906479031cc5ac5421ecaa7d2", + "sha256:56bcd9ba0adf16edb4e3e45b8b9346f5b3b2372402e953d54c84b345d0f691e0", + "sha256:76dcb8f5c866f1537ccbaad01ebb3611890d281ef8d25e050d1cc3d90fba6b3d", + "sha256:77e22c33123ce11231ff2773d8905e20b45d77a69459def7481283b72a583955", + "sha256:78f920a75c1dbcb5a48a495f384d73ceb41e437a966c318eb7e56f1c1ad1df3e", + "sha256:7da016a0dab1fcced89dfff8537033c5dc200015e14023368f3f4a69e39b8716", + "sha256:8d80878cb40ebf88a48839ff7206ceb62e4b54327e0c2f9f15ee12edbd8b907e", + "sha256:8fdb4634040d1dbde7e0b373e19668cdb61c0ee8690d3b4064ac748d85365bca", + "sha256:93b1839d54b80a06a51a31b90d024a1770e250d00de57e7ae069bafba932f398", + "sha256:9ddaf99e362ae4169f6a8b3508f3487264e0a1b1e58c0b07b86407bc9ecee831", + "sha256:ad44569b0f508e046ffe85b4a547d5b68d1548fd90767df69449cc28021ee709", + "sha256:ae694efefcb61317c79b2fa1caebc122060992408e389bb00889567e463a47f1", + "sha256:b57cb8a4a8a8ffdaf0395326ef3b9c1aba36e58a421438fc04c002a1f511db63", + "sha256:b73cda1326738eab5d60640ca0b87ac4e4db09a099423c41b59a5681917e8d1d", + "sha256:c30902f9b9da0d74668b6f71d7b57081a4879d9a5ea93d5922dbe15b15b3b24a", + "sha256:c3e45d004531330030f7d07abe4865bc17963b9989bc1941cebbf7224010fb82", + "sha256:c7a5715b1f46e9852442f496c0df2f8c393cc8f293f5396d2c8d95cac852fb51", + "sha256:c92d2b7c1a914ab2f66454961eeaf904f4fe7529b93ff537619d22c18b82d070", + "sha256:cf61238811a75335751b4b17f8b221a35f93f2d57489296742adf98412d2a568", + "sha256:d25f8fdbc6cc6561353c7a384d76295e6a85a4945115b8bc347855db150e8c77", + "sha256:d49b14fcc9b12a52da8667587efa124a18e1a3eb63bbbcabf9882f4008d171d6", + "sha256:ddaf38943dbb32333a182c894b6092a68b56c5e36d0c54ba3761d28119b15447", + "sha256:ddc328c2a2daf2cf4bdc7bbc8a458dc4c840637223d4b8e01bce2168cc79fd23", + "sha256:e350a887adb38ac65c93c2f395b60cf482baca61fd396ed8d6fd313dbcce6fac", + "sha256:efc9d039b6b8a36b182bc60774bb5d456b8ff9ec44cf97719f2f38bb1dcdd546", + "sha256:f0481154c91725f7e7b729a535190388be6c7cbae3bbf0e793343ca386282312", + "sha256:f4f2fea370361a90cb9330610a95303587eda9d1e69930dbbee9978eac1d5946" ], - "version": "==0.6.1" + "version": "==0.6.2" }, "httpx": { "hashes": [ @@ -1413,90 +1420,85 @@ }, "pillow": { "hashes": [ - "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885", - "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea", - "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df", - "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5", - "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", - "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d", - "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd", - "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", - "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908", - "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a", - "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be", - "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0", - "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b", - "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80", - "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a", - "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e", - "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9", - "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", - "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b", - "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309", - "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e", - "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab", - "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d", - "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060", - "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", - "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d", - "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4", - "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", - "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", - "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb", - "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94", - "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b", - "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496", - "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0", - "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", - "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b", - "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856", - "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef", - "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680", - "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b", - "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42", - "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e", - "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597", - "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a", - "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8", - "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3", - "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736", - "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da", - "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126", - "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd", - "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5", - "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b", - "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026", - "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b", - "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc", - "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46", - "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2", - "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c", - "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", - "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984", - "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a", - "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70", - "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca", - "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b", - "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91", - "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3", - "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84", - "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1", - "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5", - "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", - "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f", - "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc", - "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9", - "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e", - "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141", - "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef", - "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22", - "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27", - "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e", - "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1" + "sha256:00177a63030d612148e659b55ba99527803288cea7c75fb05766ab7981a8c1b7", + "sha256:006bcdd307cc47ba43e924099a038cbf9591062e6c50e570819743f5607404f5", + "sha256:084a07ef0821cfe4858fe86652fffac8e187b6ae677e9906e192aafcc1b69903", + "sha256:0ae08bd8ffc41aebf578c2af2f9d8749d91f448b3bfd41d7d9ff573d74f2a6b2", + "sha256:0e038b0745997c7dcaae350d35859c9715c71e92ffb7e0f4a8e8a16732150f38", + "sha256:1187739620f2b365de756ce086fdb3604573337cc28a0d3ac4a01ab6b2d2a6d2", + "sha256:16095692a253047fe3ec028e951fa4221a1f3ed3d80c397e83541a3037ff67c9", + "sha256:1a61b54f87ab5786b8479f81c4b11f4d61702830354520837f8cc791ebba0f5f", + "sha256:1c1d72714f429a521d8d2d018badc42414c3077eb187a59579f28e4270b4b0fc", + "sha256:1e2688958a840c822279fda0086fec1fdab2f95bf2b717b66871c4ad9859d7e8", + "sha256:20ec184af98a121fb2da42642dea8a29ec80fc3efbaefb86d8fdd2606619045d", + "sha256:21a0d3b115009ebb8ac3d2ebec5c2982cc693da935f4ab7bb5c8ebe2f47d36f2", + "sha256:224aaa38177597bb179f3ec87eeefcce8e4f85e608025e9cfac60de237ba6316", + "sha256:2679d2258b7f1192b378e2893a8a0a0ca472234d4c2c0e6bdd3380e8dfa21b6a", + "sha256:27a7860107500d813fcd203b4ea19b04babe79448268403172782754870dac25", + "sha256:290f2cc809f9da7d6d622550bbf4c1e57518212da51b6a30fe8e0a270a5b78bd", + "sha256:2e46773dc9f35a1dd28bd6981332fd7f27bec001a918a72a79b4133cf5291dba", + "sha256:3107c66e43bda25359d5ef446f59c497de2b5ed4c7fdba0894f8d6cf3822dafc", + "sha256:375b8dd15a1f5d2feafff536d47e22f69625c1aa92f12b339ec0b2ca40263273", + "sha256:45c566eb10b8967d71bf1ab8e4a525e5a93519e29ea071459ce517f6b903d7fa", + "sha256:499c3a1b0d6fc8213519e193796eb1a86a1be4b1877d678b30f83fd979811d1a", + "sha256:4ad70c4214f67d7466bea6a08061eba35c01b1b89eaa098040a35272a8efb22b", + "sha256:4b60c9520f7207aaf2e1d94de026682fc227806c6e1f55bba7606d1c94dd623a", + "sha256:5178952973e588b3f1360868847334e9e3bf49d19e169bbbdfaf8398002419ae", + "sha256:52a2d8323a465f84faaba5236567d212c3668f2ab53e1c74c15583cf507a0291", + "sha256:598b4e238f13276e0008299bd2482003f48158e2b11826862b1eb2ad7c768b97", + "sha256:5bd2d3bdb846d757055910f0a59792d33b555800813c3b39ada1829c372ccb06", + "sha256:5c39ed17edea3bc69c743a8dd3e9853b7509625c2462532e62baa0732163a904", + "sha256:5d203af30149ae339ad1b4f710d9844ed8796e97fda23ffbc4cc472968a47d0b", + "sha256:5ddbfd761ee00c12ee1be86c9c0683ecf5bb14c9772ddbd782085779a63dd55b", + "sha256:607bbe123c74e272e381a8d1957083a9463401f7bd01287f50521ecb05a313f8", + "sha256:61b887f9ddba63ddf62fd02a3ba7add935d053b6dd7d58998c630e6dbade8527", + "sha256:6619654954dc4936fcff82db8eb6401d3159ec6be81e33c6000dfd76ae189947", + "sha256:674629ff60030d144b7bca2b8330225a9b11c482ed408813924619c6f302fdbb", + "sha256:6ec0d5af64f2e3d64a165f490d96368bb5dea8b8f9ad04487f9ab60dc4bb6003", + "sha256:6f4dba50cfa56f910241eb7f883c20f1e7b1d8f7d91c750cd0b318bad443f4d5", + "sha256:70fbbdacd1d271b77b7721fe3cdd2d537bbbd75d29e6300c672ec6bb38d9672f", + "sha256:72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739", + "sha256:7326a1787e3c7b0429659e0a944725e1b03eeaa10edd945a86dead1913383944", + "sha256:73853108f56df97baf2bb8b522f3578221e56f646ba345a372c78326710d3830", + "sha256:73e3a0200cdda995c7e43dd47436c1548f87a30bb27fb871f352a22ab8dcf45f", + "sha256:75acbbeb05b86bc53cbe7b7e6fe00fbcf82ad7c684b3ad82e3d711da9ba287d3", + "sha256:8069c5179902dcdce0be9bfc8235347fdbac249d23bd90514b7a47a72d9fecf4", + "sha256:846e193e103b41e984ac921b335df59195356ce3f71dcfd155aa79c603873b84", + "sha256:8594f42df584e5b4bb9281799698403f7af489fba84c34d53d1c4bfb71b7c4e7", + "sha256:86510e3f5eca0ab87429dd77fafc04693195eec7fd6a137c389c3eeb4cfb77c6", + "sha256:8853a3bf12afddfdf15f57c4b02d7ded92c7a75a5d7331d19f4f9572a89c17e6", + "sha256:88a58d8ac0cc0e7f3a014509f0455248a76629ca9b604eca7dc5927cc593c5e9", + "sha256:8ba470552b48e5835f1d23ecb936bb7f71d206f9dfeee64245f30c3270b994de", + "sha256:8c676b587da5673d3c75bd67dd2a8cdfeb282ca38a30f37950511766b26858c4", + "sha256:8ec4a89295cd6cd4d1058a5e6aec6bf51e0eaaf9714774e1bfac7cfc9051db47", + "sha256:94f3e1780abb45062287b4614a5bc0874519c86a777d4a7ad34978e86428b8dd", + "sha256:9a0f748eaa434a41fccf8e1ee7a3eed68af1b690e75328fd7a60af123c193b50", + "sha256:a5629742881bcbc1f42e840af185fd4d83a5edeb96475a575f4da50d6ede337c", + "sha256:a65149d8ada1055029fcb665452b2814fe7d7082fcb0c5bed6db851cb69b2086", + "sha256:b3c5ac4bed7519088103d9450a1107f76308ecf91d6dabc8a33a2fcfb18d0fba", + "sha256:b4fd7bd29610a83a8c9b564d457cf5bd92b4e11e79a4ee4716a63c959699b306", + "sha256:bcd1fb5bb7b07f64c15618c89efcc2cfa3e95f0e3bcdbaf4642509de1942a699", + "sha256:c12b5ae868897c7338519c03049a806af85b9b8c237b7d675b8c5e089e4a618e", + "sha256:c26845094b1af3c91852745ae78e3ea47abf3dbcd1cf962f16b9a5fbe3ee8488", + "sha256:c6a660307ca9d4867caa8d9ca2c2658ab685de83792d1876274991adec7b93fa", + "sha256:c809a70e43c7977c4a42aefd62f0131823ebf7dd73556fa5d5950f5b354087e2", + "sha256:c8b2351c85d855293a299038e1f89db92a2f35e8d2f783489c6f0b2b5f3fe8a3", + "sha256:cb929ca942d0ec4fac404cbf520ee6cac37bf35be479b970c4ffadf2b6a1cad9", + "sha256:d2c0a187a92a1cb5ef2c8ed5412dd8d4334272617f532d4ad4de31e0495bd923", + "sha256:d69bfd8ec3219ae71bcde1f942b728903cad25fafe3100ba2258b973bd2bc1b2", + "sha256:daffdf51ee5db69a82dd127eabecce20729e21f7a3680cf7cbb23f0829189790", + "sha256:e58876c91f97b0952eb766123bfef372792ab3f4e3e1f1a2267834c2ab131734", + "sha256:eda2616eb2313cbb3eebbe51f19362eb434b18e3bb599466a1ffa76a033fb916", + "sha256:ee217c198f2e41f184f3869f3e485557296d505b5195c513b2bfe0062dc537f1", + "sha256:f02541ef64077f22bf4924f225c0fd1248c168f86e4b7abdedd87d6ebaceab0f", + "sha256:f1b82c27e89fffc6da125d5eb0ca6e68017faf5efc078128cfaa42cf5cb38798", + "sha256:fba162b8872d30fea8c52b258a542c5dfd7b235fb5cb352240c8d63b414013eb", + "sha256:fbbcb7b57dc9c794843e3d1258c0fbf0f48656d46ffe9e09b63bbd6e8cd5d0a2", + "sha256:fcb4621042ac4b7865c179bb972ed0da0218a076dc1820ffc48b1d74c1e37fe9" ], "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==10.4.0" + "markers": "python_version >= '3.9'", + "version": "==11.0.0" }, "playwright": { "hashes": [ @@ -1895,68 +1897,68 @@ "srv" ], "hashes": [ - "sha256:0e759ed0459e7264a11b6896016f616341a8e4c6ab7f71ae651bd21ffc7e9524", - "sha256:169b85728cc17800344ba17d736375f400ef47c9fbb4c42910c4b3e7c0247382", - "sha256:1ad79d6a74f439a068caf9a1e2daeabc20bf895263435484bbd49e90fbea7809", - "sha256:1fc70326ae71b3c7b8d6af82f46bb71dafdba3c8f335b29382ae9cf263ef3a5c", - "sha256:24e7b6887bbfefd05afed26a99a2c69459e2daa351a43a410de0d6c0ee3cce4e", - "sha256:2c8c861e77527eec5a4b7363c16030dd0374670b620b08a5300f97594bbf5a40", - "sha256:3010018f5672e5b7e8d096dea9f1ea6545b05345ff0eb1754f6ee63785550773", - "sha256:3039e093d28376d6a54bdaa963ca12230c8a53d7b19c8e6368e19bcfbd004176", - "sha256:31c35d3dac5a1b0f65b3da2a19dc7fb88271c86329c75cfea775d5381ade6c06", - "sha256:3c3c71337d4c923f719cb56253af9244e90353a2454088ee4f184bfb0dd446a4", - "sha256:3e63535946f5df7848307b9031aa921f82bb0cbe45f9b0c3296f2173f9283eb0", - "sha256:3f55efe0f77198c055800e605268bfd77a3f0223d1a80b55b771d0c350bc3ade", - "sha256:410ea165f2f819118eed764c5faa35fa71aeff5ce8b5046af99ed158a5661e9e", - "sha256:5af264b9a973859123e3129d131d7246f57659304400e3e6b35ed6eaf099854d", - "sha256:65c6b2e2a6db38f49433021dda0802ad081118224b2264500ef03a2d82ae26a7", - "sha256:69394ee9f0ce38ff71266bad01b7e045cd75e58500ebad5d72187cbabf2e652a", - "sha256:6ab42d9ee93fe6b90020c42cba5bfb43a2b4660951225d137835efc21940da48", - "sha256:6c798351666ac97a0ddaa823689061c3af949c2d6acf7fb2d9ab0a7f465ced79", - "sha256:6f6834d575ed87edc7dfcab4501d961b6a423b3839edd29ecb1382eee7736777", - "sha256:77528a2b928fe3f1f655cefa195e6718ab1ccd1a456aba486d76318e526a7fac", - "sha256:7a0b2e7fedc5911cd44590b5fd8e3714029f378f37f3c0c2043f67150b588d4a", - "sha256:7fb10d7069f1e7d7d6a458b1c5e9d1454be6eca2d9885bec25c1202e22c88d2a", - "sha256:8083bbe8cb10bb33dca4d93f8223dd8d848215250bb73867374650bac5fe69e1", - "sha256:80a1ee9b72eebd96619ebe0beb718a5bcf2a70f464edf315f97b9315ed6854a9", - "sha256:877699e21703717507cbbea23e75b419f81a513b50b65531e1698df08b2d7094", - "sha256:87b18094100f21615d9db99c255dcd9e93e476f10fb03c1d3632cf4b82d201d2", - "sha256:8aac5dce28454f47576063fbad31ea9789bba67cab86c95788f97aafd810e65b", - "sha256:96ad54433a996e2d1985a9cd8fc82538ca8747c95caae2daf453600cc8c317f9", - "sha256:98b9cade40f5b13e04492a42ae215c3721099be1014ddfe0fbd23f27e4f62c0c", - "sha256:99e40f44877b32bf4b3c46ceed2228f08c222cf7dec8a4366dd192a1429143fa", - "sha256:a1b8c636bf557c7166e3799bbf1120806ca39e3f06615b141c88d9c9ceae4d8c", - "sha256:a49d9292f22a0395c0fd2822a06e385910f1f902c3a9feafc1d0bfc27cd2df6b", - "sha256:a663ca60e187a248d370c58961e40f5463077d2b43831eb92120ea28a79ecf96", - "sha256:a92c96886048d3ebae62dbcfc775c7f2b965270160e3cb6aab4e06750e030b05", - "sha256:aac78b5fdd49ed8cae49adf76befacb02293a23b412676775c4715148e166d85", - "sha256:ab8d54529feb6e29035ba8f0570c99ad36424bc26486c238ad7ce28597bc43c8", - "sha256:ae227bba43e2e6fc8c3440a70b3b8f9ab2b0eb0906d0d2cf814dd9490c572e2a", - "sha256:b3254769e708bc4aa634745c262081d13c841a80038eff3afd15631540a1d227", - "sha256:b6e7251d59fa3dcbb1399a71a3aec63768cebc6b22180b671601c2195fe1f90a", - "sha256:ba9d2f6df977fee24437f82f7412460b0628cd6b961c4235c9cff71577a5b61f", - "sha256:bc9322ce7cf116458a637ac10517b0c5926a8211202be6dbdc51dab4d4a9afc8", - "sha256:bf77bf175c315e299a91332c2bbebc097c4d4fcc8713e513a9861684aa39023a", - "sha256:bf963104dfd7235bebc44cef40b4b12c6638bb03b3a828cb495498e286b6edd0", - "sha256:c3f28afd783be3cebef1235a45340589169d7774cd9909ba0249e2f851ff511d", - "sha256:c42b5aad8971256365bfd0a545fb1c7a199c93db80decd298ea2f987419e2a6d", - "sha256:cca029f46acf475504eedb33c7839f030c4bc4f946dcba12d9a954cc48850b79", - "sha256:cd832de5df92caa68ee66c872708951d7e0c1f7b289b74189f2ccf1832c56dda", - "sha256:d1d5e7123af1fddf15b2b53e58f20bf5242884e671bcc3860f5e954fe13aeddd", - "sha256:dde6068ae7c62ea8ee2c5701f78c6a75618cada7e11f03893687df87709558de", - "sha256:e1ab6cd7cd2d38ffc7ccdc79fdc166c7a91a63f844a96e3e6b2079c054391c68", - "sha256:e3ff4201ea707f57bf381f61df0e9cd6e896627a59f98a5d1c4a1bd14a2544cb", - "sha256:e54e2c6f1dec45c57a587b4c13c16666d5f7c031a642ae177140d1e0551a947e", - "sha256:ea9c47f86a322280381e9ddba7491e664ea80bf75df247ea2346faf7626e4e4c", - "sha256:f13330bdf4a57ef70bdd6282721547ec464f773203be47bac1efc4abd74a9190", - "sha256:f2f43e5d6e739aa78c7053bdf351453c0e53d7667a3cac73255c2169631e052a", - "sha256:f3fc60f242191840ccf02b898bc615b5141fbb70064f38f7e60fcaa35d3b5efd", - "sha256:f928bdc152a995cbd0b563fab201b2df873846d11f7a41d1f8cc8a01b35591ab", - "sha256:fdbd558d90b55d7c39c096a79f8a725f1f02b658211924ab98dbc03ecad01095", - "sha256:fe97c847b56d61e533a7af0334193d6b28375b9189effce93129c7e4733794a9" + "sha256:0783e0c8e95397c84e9cf8ab092ab1e5dd7c769aec0ef3a5838ae7173b98dea0", + "sha256:0f56707497323150bd2ed5d63067f4ffce940d0549d4ea2dfae180deec7f9363", + "sha256:11280809e5dacaef4971113f0b4ff4696ee94cfdb720019ff4fa4f9635138252", + "sha256:15a624d752dd3c89d10deb0ef6431559b6d074703cab90a70bb849ece02adc6b", + "sha256:15b1492cc5c7cd260229590be7218261e81684b8da6d6de2660cf743445500ce", + "sha256:1a970fd3117ab40a4001c3dad333bbf3c43687d90f35287a6237149b5ccae61d", + "sha256:1ec3fa88b541e0481aff3c35194c9fac96e4d57ec5d1c122376000eb28c01431", + "sha256:1ecc2455e3974a6c429687b395a0bc59636f2d6aedf5785098cf4e1f180f1c71", + "sha256:23e1d62df5592518204943b507be7b457fb8a4ad95a349440406fd42db5d0923", + "sha256:29e1c323c28a4584b7095378ff046815e39ff82cdb8dc4cc6dfe3acf6f9ad1f8", + "sha256:2e3a593333e20c87415420a4fb76c00b7aae49b6361d2e2205b6fece0563bf40", + "sha256:345f8d340802ebce509f49d5833cc913da40c82f2e0daf9f60149cacc9ca680f", + "sha256:3a70d5efdc0387ac8cd50f9a5f379648ecfc322d14ec9e1ba8ec957e5d08c372", + "sha256:409ab7d6c4223e5c85881697f365239dd3ed1b58f28e4124b846d9d488c86880", + "sha256:442ca247f53ad24870a01e80a71cd81b3f2318655fd9d66748ee2bd1b1569d9e", + "sha256:45ee87a4e12337353242bc758accc7fb47a2f2d9ecc0382a61e64c8f01e86708", + "sha256:4924355245a9c79f77b5cda2db36e0f75ece5faf9f84d16014c0a297f6d66786", + "sha256:544890085d9641f271d4f7a47684450ed4a7344d6b72d5968bfae32203b1bb7c", + "sha256:57ee6becae534e6d47848c97f6a6dff69e3cce7c70648d6049bd586764febe59", + "sha256:594dd721b81f301f33e843453638e02d92f63c198358e5a0fa8b8d0b1218dabc", + "sha256:5ded27a4a5374dae03a92e084a60cdbcecd595306555bda553b833baf3fc4868", + "sha256:6131bc6568b26e7495a9f3ef2b1700566b76bbecd919f4472bfe90038a61f425", + "sha256:6f437a612f4d4f7aca1812311b1e84477145e950fdafe3285b687ab8c52541f3", + "sha256:6fb6a72e88df46d1c1040fd32cd2d2c5e58722e5d3e31060a0393f04ad3283de", + "sha256:70645abc714f06b4ad6b72d5bf73792eaad14e3a2cfe29c62a9c81ada69d9e4b", + "sha256:72e2ace7456167c71cfeca7dcb47bd5dceda7db2231265b80fc625c5e8073186", + "sha256:778ac646ce6ac1e469664062dfe9ae1f5c9961f7790682809f5ec3b8fda29d65", + "sha256:7bd26b2aec8ceeb95a5d948d5cc0f62b0eb6d66f3f4230705c1e3d3d2c04ec76", + "sha256:7c4d0e7cd08ef9f8fbf2d15ba281ed55604368a32752e476250724c3ce36c72e", + "sha256:88dc4aa45f8744ccfb45164aedb9a4179c93567bbd98a33109d7dc400b00eb08", + "sha256:8ad05eb9c97e4f589ed9e74a00fcaac0d443ccd14f38d1258eb4c39a35dd722b", + "sha256:90bc6912948dfc8c363f4ead54d54a02a15a7fee6cfafb36dc450fc8962d2cb7", + "sha256:9235fa319993405ae5505bf1333366388add2e06848db7b3deee8f990b69808e", + "sha256:93a0833c10a967effcd823b4e7445ec491f0bf6da5de0ca33629c0528f42b748", + "sha256:95207503c41b97e7ecc7e596d84a61f441b4935f11aa8332828a754e7ada8c82", + "sha256:9df4ab5594fdd208dcba81be815fa8a8a5d8dedaf3b346cbf8b61c7296246a7a", + "sha256:a920fee41f7d0259f5f72c1f1eb331bc26ffbdc952846f9bd8c3b119013bb52c", + "sha256:a9de02be53b6bb98efe0b9eda84ffa1ec027fcb23a2de62c4f941d9a2f2f3330", + "sha256:ae2fd94c9fe048c94838badcc6e992d033cb9473eb31e5710b3707cba5e8aee2", + "sha256:b3337804ea0394a06e916add4e5fac1c89902f1b6f33936074a12505cab4ff05", + "sha256:ba164e73fdade9b4614a2497321c5b7512ddf749ed508950bdecc28d8d76a2d9", + "sha256:bb99f003c720c6d83be02c8f1a7787c22384a8ca9a4181e406174db47a048619", + "sha256:ca6f700cff6833de4872a4e738f43123db34400173558b558ae079b5535857a4", + "sha256:cec237c305fcbeef75c0bcbe9d223d1e22a6e3ba1b53b2f0b79d3d29c742b45b", + "sha256:dabe8bf1ad644e6b93f3acf90ff18536d94538ca4d27e583c6db49889e98e48f", + "sha256:dac78a650dc0637d610905fd06b5fa6419ae9028cf4d04d6a2657bc18a66bbce", + "sha256:dcc07b1277e8b4bf4d7382ca133850e323b7ab048b8353af496d050671c7ac52", + "sha256:e0a15665b2d6cf364f4cd114d62452ce01d71abfbd9c564ba8c74dcd7bbd6822", + "sha256:e0e961923a7b8a1c801c43552dcb8153e45afa41749d9efbd3a6d33f45489f7a", + "sha256:e4a65567bd17d19f03157c7ec992c6530eafd8191a4e5ede25566792c4fe3fa2", + "sha256:e5d55f2a82e5eb23795f724991cac2bffbb1c0f219c0ba3bf73a835f97f1bb2e", + "sha256:e699aa68c4a7dea2ab5a27067f7d3e08555f8d2c0dc6a0c8c60cfd9ff2e6a4b1", + "sha256:e974ab16a60be71a8dfad4e5afccf8dd05d41c758060f5d5bda9a758605d9a5d", + "sha256:ee4c86d8e6872a61f7888fc96577b0ea165eb3bdb0d841962b444fa36001e2bb", + "sha256:f1945d48fb9b8a87d515da07f37e5b2c35b364a435f534c122e92747881f4a7c", + "sha256:f2bc1ee4b1ca2c4e7e6b7a5e892126335ec8d9215bcd3ac2fe075870fefc3358", + "sha256:fb104c3c2a78d9d85571c8ac90ec4f95bca9b297c6eee5ada71fabf1129e1674", + "sha256:fbedc4617faa0edf423621bb0b3b8707836687161210d470e69a4184be9ca011", + "sha256:fdeba88c540c9ed0338c0b2062d9f81af42b18d6646b3e6dda05cf6edd46ada9" ], "markers": "python_version >= '3.8'", - "version": "==4.9.2" + "version": "==4.10.1" }, "pyopenssl": { "hashes": [ @@ -2478,11 +2480,11 @@ }, "setuptools": { "hashes": [ - "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2", - "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538" + "sha256:753bb6ebf1f465a1912e19ed1d41f403a79173a9acf66a42e7e6aec45c3c16ec", + "sha256:a7fcb66f68b4d9e8e66b42f9876150a3371558f98fa32222ffaa5bced76406f8" ], "markers": "python_version >= '3.8'", - "version": "==75.1.0" + "version": "==75.2.0" }, "six": { "hashes": [ @@ -2510,66 +2512,74 @@ }, "sqlalchemy": { "hashes": [ - "sha256:016b2e665f778f13d3c438651dd4de244214b527a275e0acf1d44c05bc6026a9", - "sha256:032d979ce77a6c2432653322ba4cbeabf5a6837f704d16fa38b5a05d8e21fa00", - "sha256:0375a141e1c0878103eb3d719eb6d5aa444b490c96f3fedab8471c7f6ffe70ee", - "sha256:042622a5306c23b972192283f4e22372da3b8ddf5f7aac1cc5d9c9b222ab3ff6", - "sha256:05c3f58cf91683102f2f0265c0db3bd3892e9eedabe059720492dbaa4f922da1", - "sha256:0630774b0977804fba4b6bbea6852ab56c14965a2b0c7fc7282c5f7d90a1ae72", - "sha256:0f9f3f9a3763b9c4deb8c5d09c4cc52ffe49f9876af41cc1b2ad0138878453cf", - "sha256:1b56961e2d31389aaadf4906d453859f35302b4eb818d34a26fab72596076bb8", - "sha256:22b83aed390e3099584b839b93f80a0f4a95ee7f48270c97c90acd40ee646f0b", - "sha256:25b0f63e7fcc2a6290cb5f7f5b4fc4047843504983a28856ce9b35d8f7de03cc", - "sha256:2a275a806f73e849e1c309ac11108ea1a14cd7058577aba962cd7190e27c9e3c", - "sha256:2ab3f0336c0387662ce6221ad30ab3a5e6499aab01b9790879b6578fd9b8faa1", - "sha256:2e795c2f7d7249b75bb5f479b432a51b59041580d20599d4e112b5f2046437a3", - "sha256:3655af10ebcc0f1e4e06c5900bb33e080d6a1fa4228f502121f28a3b1753cde5", - "sha256:4668bd8faf7e5b71c0319407b608f278f279668f358857dbfd10ef1954ac9f90", - "sha256:4c31943b61ed8fdd63dfd12ccc919f2bf95eefca133767db6fbbd15da62078ec", - "sha256:4fdcd72a789c1c31ed242fd8c1bcd9ea186a98ee8e5408a50e610edfef980d71", - "sha256:627dee0c280eea91aed87b20a1f849e9ae2fe719d52cbf847c0e0ea34464b3f7", - "sha256:67219632be22f14750f0d1c70e62f204ba69d28f62fd6432ba05ab295853de9b", - "sha256:6921ee01caf375363be5e9ae70d08ce7ca9d7e0e8983183080211a062d299468", - "sha256:69683e02e8a9de37f17985905a5eca18ad651bf592314b4d3d799029797d0eb3", - "sha256:6a93c5a0dfe8d34951e8a6f499a9479ffb9258123551fa007fc708ae2ac2bc5e", - "sha256:732e026240cdd1c1b2e3ac515c7a23820430ed94292ce33806a95869c46bd139", - "sha256:7befc148de64b6060937231cbff8d01ccf0bfd75aa26383ffdf8d82b12ec04ff", - "sha256:890da8cd1941fa3dab28c5bac3b9da8502e7e366f895b3b8e500896f12f94d11", - "sha256:89b64cd8898a3a6f642db4eb7b26d1b28a497d4022eccd7717ca066823e9fb01", - "sha256:8a6219108a15fc6d24de499d0d515c7235c617b2540d97116b663dade1a54d62", - "sha256:8cdf1a0dbe5ced887a9b127da4ffd7354e9c1a3b9bb330dce84df6b70ccb3a8d", - "sha256:8d625eddf7efeba2abfd9c014a22c0f6b3796e0ffb48f5d5ab106568ef01ff5a", - "sha256:93a71c8601e823236ac0e5d087e4f397874a421017b3318fd92c0b14acf2b6db", - "sha256:9509c4123491d0e63fb5e16199e09f8e262066e58903e84615c301dde8fa2e87", - "sha256:a29762cd3d116585278ffb2e5b8cc311fb095ea278b96feef28d0b423154858e", - "sha256:a62dd5d7cc8626a3634208df458c5fe4f21200d96a74d122c83bc2015b333bc1", - "sha256:ada603db10bb865bbe591939de854faf2c60f43c9b763e90f653224138f910d9", - "sha256:aee110e4ef3c528f3abbc3c2018c121e708938adeeff9006428dd7c8555e9b3f", - "sha256:b76d63495b0508ab9fc23f8152bac63205d2a704cd009a2b0722f4c8e0cba8e0", - "sha256:c0d8326269dbf944b9201911b0d9f3dc524d64779a07518199a58384c3d37a44", - "sha256:c41411e192f8d3ea39ea70e0fae48762cd11a2244e03751a98bd3c0ca9a4e936", - "sha256:c68fe3fcde03920c46697585620135b4ecfdfc1ed23e75cc2c2ae9f8502c10b8", - "sha256:cb8bea573863762bbf45d1e13f87c2d2fd32cee2dbd50d050f83f87429c9e1ea", - "sha256:cc32b2990fc34380ec2f6195f33a76b6cdaa9eecf09f0c9404b74fc120aef36f", - "sha256:ccae5de2a0140d8be6838c331604f91d6fafd0735dbdcee1ac78fc8fbaba76b4", - "sha256:d299797d75cd747e7797b1b41817111406b8b10a4f88b6e8fe5b5e59598b43b0", - "sha256:e04b622bb8a88f10e439084486f2f6349bf4d50605ac3e445869c7ea5cf0fa8c", - "sha256:e11d7ea4d24f0a262bccf9a7cd6284c976c5369dac21db237cff59586045ab9f", - "sha256:e21f66748ab725ade40fa7af8ec8b5019c68ab00b929f6643e1b1af461eddb60", - "sha256:eb60b026d8ad0c97917cb81d3662d0b39b8ff1335e3fabb24984c6acd0c900a2", - "sha256:f021d334f2ca692523aaf7bbf7592ceff70c8594fad853416a81d66b35e3abf9", - "sha256:f552023710d4b93d8fb29a91fadf97de89c5926c6bd758897875435f2a939f33" + "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763", + "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436", + "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2", + "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588", + "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e", + "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959", + "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d", + "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575", + "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908", + "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8", + "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8", + "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545", + "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7", + "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971", + "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855", + "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c", + "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71", + "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d", + "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb", + "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72", + "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f", + "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5", + "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346", + "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24", + "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e", + "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5", + "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08", + "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793", + "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88", + "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686", + "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b", + "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2", + "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28", + "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d", + "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5", + "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a", + "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a", + "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3", + "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf", + "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5", + "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef", + "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689", + "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c", + "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b", + "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07", + "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa", + "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06", + "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1", + "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff", + "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa", + "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687", + "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4", + "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb", + "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44", + "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c", + "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e", + "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53" ], "markers": "python_version >= '3.7'", - "version": "==2.0.35" + "version": "==2.0.36" }, "starlette": { "hashes": [ - "sha256:4517a1409e2e73ee4951214ba012052b9e16f60e90d73cfb06192c19203bbb05", - "sha256:863a1588f5574e70a821dadefb41e4881ea451a47a3cd1b4df359d4ffefe5ead" + "sha256:1a3139688fb298ce5e2d661d37046a66ad996ce94be4d4983be019a23a04ea35", + "sha256:c494a22fae73805376ea6bf88439783ecfba9aac88a43911b48c653437e784c4" ], "markers": "python_version >= '3.8'", - "version": "==0.38.6" + "version": "==0.40.0" }, "tenacity": { "hashes": [ @@ -2683,48 +2693,54 @@ "standard" ], "hashes": [ - "sha256:adc42d9cac80cf3e51af97c1851648066841e7cfb6993a4ca8de29ac1548ed41", - "sha256:f5167919867b161b7bcaf32646c6a94cdbd4c3aa2eb5c17d36bb9aa5cfd8c493" + "sha256:60b8f3a5ac027dcd31448f411ced12b5ef452c646f76f02f8cc3f25d8d26fd82", + "sha256:f78b36b143c16f54ccdb8190d0a26b5f1901fe5a3c777e1ab29f26391af8551e" ], "markers": "python_version >= '3.8'", - "version": "==0.31.1" + "version": "==0.32.0" }, "uvloop": { "hashes": [ - "sha256:265a99a2ff41a0fd56c19c3838b29bf54d1d177964c300dad388b27e84fd7847", - "sha256:2beee18efd33fa6fdb0976e18475a4042cd31c7433c866e8a09ab604c7c22ff2", - "sha256:35968fc697b0527a06e134999eef859b4034b37aebca537daeb598b9d45a137b", - "sha256:36c530d8fa03bfa7085af54a48f2ca16ab74df3ec7108a46ba82fd8b411a2315", - "sha256:3a609780e942d43a275a617c0839d85f95c334bad29c4c0918252085113285b5", - "sha256:4603ca714a754fc8d9b197e325db25b2ea045385e8a3ad05d3463de725fdf469", - "sha256:4b75f2950ddb6feed85336412b9a0c310a2edbcf4cf931aa5cfe29034829676d", - "sha256:4f44af67bf39af25db4c1ac27e82e9665717f9c26af2369c404be865c8818dcf", - "sha256:6462c95f48e2d8d4c993a2950cd3d31ab061864d1c226bbf0ee2f1a8f36674b9", - "sha256:649c33034979273fa71aa25d0fe120ad1777c551d8c4cd2c0c9851d88fcb13ab", - "sha256:746242cd703dc2b37f9d8b9f173749c15e9a918ddb021575a0205ec29a38d31e", - "sha256:77fbc69c287596880ecec2d4c7a62346bef08b6209749bf6ce8c22bbaca0239e", - "sha256:80dc1b139516be2077b3e57ce1cb65bfed09149e1d175e0478e7a987863b68f0", - "sha256:82edbfd3df39fb3d108fc079ebc461330f7c2e33dbd002d146bf7c445ba6e756", - "sha256:89e8d33bb88d7263f74dc57d69f0063e06b5a5ce50bb9a6b32f5fcbe655f9e73", - "sha256:94707205efbe809dfa3a0d09c08bef1352f5d3d6612a506f10a319933757c006", - "sha256:95720bae002ac357202e0d866128eb1ac82545bcf0b549b9abe91b5178d9b541", - "sha256:9b04d96188d365151d1af41fa2d23257b674e7ead68cfd61c725a422764062ae", - "sha256:9d0fba61846f294bce41eb44d60d58136090ea2b5b99efd21cbdf4e21927c56a", - "sha256:9ebafa0b96c62881d5cafa02d9da2e44c23f9f0cd829f3a32a6aff771449c996", - "sha256:a0fac7be202596c7126146660725157d4813aa29a4cc990fe51346f75ff8fde7", - "sha256:aea15c78e0d9ad6555ed201344ae36db5c63d428818b4b2a42842b3870127c00", - "sha256:b10c2956efcecb981bf9cfb8184d27d5d64b9033f917115a960b83f11bfa0d6b", - "sha256:b16696f10e59d7580979b420eedf6650010a4a9c3bd8113f24a103dfdb770b10", - "sha256:d8c36fdf3e02cec92aed2d44f63565ad1522a499c654f07935c8f9d04db69e95", - "sha256:e237f9c1e8a00e7d9ddaa288e535dc337a39bcbf679f290aee9d26df9e72bce9", - "sha256:e50289c101495e0d1bb0bfcb4a60adde56e32f4449a67216a1ab2750aa84f037", - "sha256:e7d61fe8e8d9335fac1bf8d5d82820b4808dd7a43020c149b63a1ada953d48a6", - "sha256:e97152983442b499d7a71e44f29baa75b3b02e65d9c44ba53b10338e98dedb66", - "sha256:f0e94b221295b5e69de57a1bd4aeb0b3a29f61be6e1b478bb8a69a73377db7ba", - "sha256:fee6044b64c965c425b65a4e17719953b96e065c5b7e09b599ff332bb2744bdf" + "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0", + "sha256:10d66943def5fcb6e7b37310eb6b5639fd2ccbc38df1177262b0640c3ca68c1f", + "sha256:10da8046cc4a8f12c91a1c39d1dd1585c41162a15caaef165c2174db9ef18bdc", + "sha256:17df489689befc72c39a08359efac29bbee8eee5209650d4b9f34df73d22e414", + "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f", + "sha256:196274f2adb9689a289ad7d65700d37df0c0930fd8e4e743fa4834e850d7719d", + "sha256:221f4f2a1f46032b403bf3be628011caf75428ee3cc204a22addf96f586b19fd", + "sha256:2d1f581393673ce119355d56da84fe1dd9d2bb8b3d13ce792524e1607139feff", + "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c", + "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", + "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d", + "sha256:460def4412e473896ef179a1671b40c039c7012184b627898eea5072ef6f017a", + "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb", + "sha256:46923b0b5ee7fc0020bef24afe7836cb068f5050ca04caf6b487c513dc1a20b2", + "sha256:53e420a3afe22cdcf2a0f4846e377d16e718bc70103d7088a4f7623567ba5fb0", + "sha256:5ee4d4ef48036ff6e5cfffb09dd192c7a5027153948d85b8da7ff705065bacc6", + "sha256:67dd654b8ca23aed0a8e99010b4c34aca62f4b7fce88f39d452ed7622c94845c", + "sha256:787ae31ad8a2856fc4e7c095341cccc7209bd657d0e71ad0dc2ea83c4a6fa8af", + "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc", + "sha256:87c43e0f13022b998eb9b973b5e97200c8b90823454d4bc06ab33829e09fb9bb", + "sha256:88cb67cdbc0e483da00af0b2c3cdad4b7c61ceb1ee0f33fe00e09c81e3a6cb75", + "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb", + "sha256:a5c39f217ab3c663dc699c04cbd50c13813e31d917642d459fdcec07555cc553", + "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e", + "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6", + "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d", + "sha256:bc09f0ff191e61c2d592a752423c767b4ebb2986daa9ed62908e2b1b9a9ae206", + "sha256:bd53ecc9a0f3d87ab847503c2e1552b690362e005ab54e8a48ba97da3924c0dc", + "sha256:bfd55dfcc2a512316e65f16e503e9e450cab148ef11df4e4e679b5e8253a5281", + "sha256:c097078b8031190c934ed0ebfee8cc5f9ba9642e6eb88322b9958b649750f72b", + "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8", + "sha256:e678ad6fe52af2c58d2ae3c73dc85524ba8abe637f134bf3564ed07f555c5e79", + "sha256:ec7e6b09a6fdded42403182ab6b832b71f4edaf7f37a9a0e371a01db5f0cb45f", + "sha256:f0ce1b49560b1d2d8a2977e3ba4afb2414fb46b86a1b64056bc4ab929efdafbe", + "sha256:f38b2e090258d051d68a5b14d1da7203a3c3677321cf32a95a6f4db4dd8b6f26", + "sha256:f3df876acd7ec037a3d005b3ab85a7e4110422e4d9c1571d4fc89b0fc41b6816", + "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2" ], "markers": "sys_platform != 'win32'", - "version": "==0.20.0" + "version": "==0.21.0" }, "validators": { "hashes": [ @@ -2965,107 +2981,91 @@ }, "yarl": { "hashes": [ - "sha256:0127bc2ea72c1eaae6808ace661f0edf222f32ffa987d37f2dbb4798288f2656", - "sha256:0358b697abdf1f2d68038bd02ef8ddcc4813835744f79c755f8743aa485585e7", - "sha256:06306c74f0775621a70fa5acd292119bbb6961d1f9a5f3d657a4c8c15b86f7b9", - "sha256:06b5b462cadf59c1df28ffbb0a3971fa16b60cf0c9d59a38bf5679a986d18685", - "sha256:097094a979af7b31520517c59179f6817b8426724343cecbec0eb3af1f8fb6cf", - "sha256:0c791a2d42da20ac568e5c0cc9b8af313188becd203a936ad959b578dafbcebb", - "sha256:1656a8b531a96427f26f498b7d0f19931166ff30e4344eca99bdb27faca14fc5", - "sha256:18614630533ac37ec373bd8035aec8fa4dd9aedac641209c06de7e082622ff77", - "sha256:1e5fa4c4e55cdacef1844f609bc9a02c8cd29c324a71ca1d3ee454701d4bb496", - "sha256:1edaf4171fc1582352ac5d9b2783966fa0f4ff86187279ef2a491613d23b894a", - "sha256:2124c642b8cc9b68e5981e429842dadc32bb850b010cccec9d24236253a19f60", - "sha256:229f222bb47cd7ab225648efd1ae47fe6943f18e4c91bce66471faf09fe33128", - "sha256:2429a651a2191c3fb8c9de21546c6046da539034d51dcb8df52302748004593d", - "sha256:25a4e29ee758596b2a0daffa4814714e9b464077ca862baf78ed0e8698e46b61", - "sha256:27c323b28723faed046f906c70466144c4dd12046a0128a301b29a65cfeff758", - "sha256:2add8ed2acf42398dfaa7dffd32e4d18ffbae341d62c8d4765bd9929336379b5", - "sha256:2bece7fdc13e23db005879b67190db0d397f6ba89c81dc7e3c77e9f5819aff7f", - "sha256:2eafb4e92f72a3b6c27f1d5e921d046e2728850af8887f86857c3fe868a5b5c0", - "sha256:32840ff92c713053591ff0e66845d4e9f4bea8fd5fba3da00f8d92e77722f24e", - "sha256:33896afca6fb4e1988c099534c52823870dfc8730bc6f96a3831f24c1e0ab814", - "sha256:350b468a217d433cbb4482e9414a14dfd360a3d5ab92013175925abb234364cc", - "sha256:38cab8f91b1085f1fd0765d40c46c8f43282f109018d5fcd017c46ac3eaba0cf", - "sha256:3e24a778470f3a9e9c11250d09daf5dea93369bc51aefca6605dbc963737a117", - "sha256:4224bbbc8a2e9b9a3828d36c1bab7458441d7fb9fb3af321eb735732ba8ee89d", - "sha256:4424082edff76fe46ff08851e91865097c0ad780fa79b87063dc5d5b80efc9d6", - "sha256:454707fb16f180984da6338d1f51897f0b8d8c4c2e0592d9d1e9fa02a5bb8218", - "sha256:4b1ab96a1ac91bd1233706d638ade35f663684deaa4e5e5f190858cba044afb9", - "sha256:4c5ff3e7609c214667c7d7e00d5f4f3576fefde47ebcb7e492c015117dafebbf", - "sha256:5107d89c9edec6ee077970a95fb9eeb4776ea8c2337b6a39c0ade9a58f50f3e4", - "sha256:5156c12a97405339ec93facbc7860566db381af2de1bec338195563fb64f37ef", - "sha256:553a1e3537aeeb29c0eb29ef28b80e0e801697fa71d96ac60675b284ff8e582a", - "sha256:5e1cc7823f43781390965c4762b54262cfcf76b6f152e489d00a5a1ac63063e4", - "sha256:5eef9804e65eb292e9c5587e88fe6a27a11f121d358312ac47211e8f42876751", - "sha256:6237637b496bc04819190e724a4e61ff2f251abf432f70cf491b3bc4a3f2f253", - "sha256:627bb5bc4ed3d3ebceb9fb55717cec6cd58bb47fdb5669169ebbc248e9bf156c", - "sha256:676d7356bb30825b7dbdad4fdd7a9feac379d074e5d4a36299767d72857ded42", - "sha256:6960b0d2e713e726cb2914e3051e080b12412f70dcb8731cf7a8fb52c37931bb", - "sha256:6b93a666cd8cfd43f605d1b81a32b9e290bf45c74c2bfd51ba705449c78448c7", - "sha256:6ca160b4c649f0d56daef04751eef4571de46ed4b80f9051a87d090fef32f08e", - "sha256:70ac7893e67a81ed1346ee3e71203ca4b0c3550c005b1d1cf87bc1e61eecd04b", - "sha256:73c4af08e9bb9a9aa7df6c789b05b924b9a0c6a368bb0e418d0b85181b64b631", - "sha256:748dcacc19c69957f7063ea4fb359fa2180735b1a638c81a4a96b86a382a6f29", - "sha256:75d9762f65205a86381298eb9079f27c60b84de0c262e402dcf45c6cbc385234", - "sha256:7711d83dafe52cda16ff2dd205cd83c05e4c06d5aaac596ae2cf7d50d094a530", - "sha256:7aa9f9af452c3e8486a0b88fddd58352e6cea17b691b18861d26e46cf65ffff0", - "sha256:7f713d8f3c4e2eac0d91b741e8ef2e1082022de244685601ec83e899b445d86a", - "sha256:81edbd9bf9f25cd995e6d51c307e1d279587d40b7473e258fef6d5e548560cd2", - "sha256:83363a5789f128618041b9a737c7b146f1965abddf4294b0444591406b437c1e", - "sha256:85e273e59b8b1a5f60a89df82cddeaf918181abd7ae7a2f2f899b68b0c774ff1", - "sha256:8ad2e487824ba4cda87851a371139e255410e45d3bf2e334194789278d709cec", - "sha256:8b7f902f13a230686f01bcff17cd9ba045653069811c8fd5027f0f414b417e2f", - "sha256:8f074a24aa9a6a3d406474ec889ebb5d661f329349068e05e8dfcb3c4be67752", - "sha256:9084d99933824ed8d665f10f4ce62d08fed714e7678d5ff11a8c2c98b2dc18f9", - "sha256:928f7a61c4311f3dd003af19bb779f99683f97a0559b765c80fdb8846dab0452", - "sha256:97fcaf530318369da3cfd6ff52f5ab38daf8cb10ecee9a76efebf8031de09eef", - "sha256:994d27b24b61b1870f3571395c840433faabec5dcd239bd11ff6af7e34234bb6", - "sha256:9ae454916aa3abe28d0ef1c21ca1e8e36a14ccf52183d465dfaccffaa7ed462c", - "sha256:9fac5416c44e8e1d8ea9440096f88e1a7273257f3157184c5c715060e0c448a1", - "sha256:a2fe45c1143eefb680a4589c55e671fabd482a7f8c7791f311ea3bcc20139246", - "sha256:a3f8be3e785009ffa148e66474fea5c787ccb203b3d0bd1f22e1e22f7da0f3b3", - "sha256:a616c2e4b60cb8cdd9eb3b0c6fda4ab5f3e26244b427aaade560dcf63c5754fb", - "sha256:a94c9058c5703c172904103d7b479f7e23dd4e5f8e67b49f6cd256d35ff169cb", - "sha256:b1208f2e081d34832f509cbe311237a0543effe23d60b2fa14c0d3f86e6d1d07", - "sha256:b4b25de7e85ba90b2ff230153123b6b000a7f69c41d84a3a0dc3f878334c8509", - "sha256:bbe72c41cdd55c88b238a8925849fde4069c0cdcdef83f8d967f8f3982659326", - "sha256:c0a86dd3e85c6aa3fc73236eb5cf7ce69dd8ad7abcd23f8ae1126831c8e40c2f", - "sha256:c3b08d9e98d1a15338fcfbd52c02003704322c2d460c9b9be7df08f2952bdce6", - "sha256:c4d9c221cc8e32b14196498679bf2b324bec1d1127c4ba934d98e19298faa661", - "sha256:c4f882e42c6cea89488b9a16919edde8c0b1a98f307c05abdd3dd3bc4368af40", - "sha256:c5cc25cbd9ae01d49ac7b504ef5f3cbdcc8d139f9750dcfa0b80d405b4645cc2", - "sha256:c7f2deac59dc3e0528bdded248e637e789e5111ba1723a8d7a262eb93e133e15", - "sha256:c8b034b60e74fb29064f765851e77e5910055e1c4a3cb75c32eccf2b470fc00f", - "sha256:c9b9159eeeb7cd1c7131dc7f5878454f97a4dc20cd157e6474174ccac448b844", - "sha256:c9c405ca78c70c3599d8956e53be0c9def9c51ad949964a49ad96c79729a5b1a", - "sha256:ceb200918c9bd163bd390cc169b254b23b4be121026b003be93a4f2f5b554b4b", - "sha256:d06040266b5e6512a37b4703684d1798124764b43328254799e9678c588882a6", - "sha256:d3f5e201bd170fb97c643e84df58e221372cd053fbb291ebbd878b165ea5057e", - "sha256:d4aa7cca009817789fd5b8e52e8122f9e85dc580c88b816a93321c00a8acbced", - "sha256:d772ae3c12d3b8629db656050c86ee66924eaa98f7125a889175a59cfaafdb19", - "sha256:d816969b55a970b3accc7f9e4ea8f60043e3f7de96f21c06063d747ffc2f18ba", - "sha256:d885dcdca7bae42bc9a2f6cbf766abcb2a6cc043b1905fc3782c6ea1f74a2b95", - "sha256:db903458a457a53ee0f764ed11c5b5368398e216b442c42dca9d90fbd2bbf31c", - "sha256:dc63bb79e896d6ce6aaf672ac304b54969280e949c45727867fc154a17ec7ab2", - "sha256:dd042e6c3bf36448e3e3ed302b12ce79762480f4aff8e7a167cdf8c35dc93297", - "sha256:ddea4abc4606c10dddb70651b210b7ab5b663148d6d7bc85d76963c923629891", - "sha256:df57f3c3ef760489f2e82192e6c93286c2bc80d6d854ef940e5345ae7153cd4b", - "sha256:e1ddf05eeb422810b1aa919095db0691493442eebbf9cfb0f1e478a7b2fbdf3d", - "sha256:e2e3cb74684ff357e6b3c82dd71031d3c1fd7ee9f9b0a5205e5568c963e074f9", - "sha256:e4f64c8c52dde564bf3251b41d7a6746564b0fc0516cebe9c9e6695224440d22", - "sha256:e4f7efb38331e8327c1cc7fb2a2905a7db03d1a7fdb04706bf6465d0e44d41d4", - "sha256:e61b2019ebb5345510b833c4dd1f4afb1f0c07753f86f184c63836ffc3fb08ba", - "sha256:e7e38bf6e52797084c5c396db5bb519615727e491e9003e2449631457bf77738", - "sha256:eae041f535fe2e57681954f7cccb81854d777ce4c2a87749428ebe6c71c02ec0", - "sha256:eb964d18c01b7a1263a6f07b88d63711fcd564fc429d934279cf12f4b467bf53", - "sha256:ef780f9d480ffb423380abeb4cfcad66ecb8f93526dfa367d322fdad9ec7c25f", - "sha256:efc0430b80ed834c80c99c32946cfc6ee29dfcd7c62ad3c8f15657322ade7942", - "sha256:f2508ee2bad8381b5254eadc35d32fe800d12eb2c63b744183341f3a66e435a7", - "sha256:fee9acd5e39c8611957074dfba06552e430020eea831caf5eb2cea30f10e06bd" + "sha256:04f930fcc940f96b8b29110c56882bcff8703f87a7b9354d3acf60ffded5a23d", + "sha256:05183fd49244517cb11c208d0ae128f2e8a85ddb7caf22ad8b0ffcdf5481fcb6", + "sha256:0ace3927502a9f90a868d62c66623703cf5096dcb586187266e9b964d8dd6c81", + "sha256:12c80ec2af97ff3e433699bcabc787ef34e7c08ec038a6e6a25fb81d7bb83607", + "sha256:14d6f07b7b4b3b8fba521904db58442281730b44318d6abb9908de79e2a4e4f4", + "sha256:14effa29db6113be065a594e13a0f45afb9c1e374fd22b4bc3a4eff0725184b2", + "sha256:19077525cd36c797cae19262e15f2881da33c602fb35d075ff0e4263b51b8b88", + "sha256:1c3e9ae98719fe180751b093d02dbcc33b78a37e861d0f2c9571720bd31555db", + "sha256:1c49fe426c45520b4b8a48544d3a9a58194f39c1b57d92451883f847c299a137", + "sha256:20f8bdaf667386cea1a8f49cb69a85f90346656d750d3c1278be1dbc76601065", + "sha256:2128315cdc517a45ceb72ec17b256a7940eeb4843c66834c203e7d6580c83405", + "sha256:2207491555af5dbbee4c3179a76766f7bc1ecff858f420ea96f2e105ca42c4dd", + "sha256:24cad94cf2f46cc8e4b9cd44e4e8a84483536a6c54554960b02b10b5724ab122", + "sha256:270fef2b335e60c91ee835c524445e2248af841c8b72f48769ed6c02fbff5873", + "sha256:2a5cbbb06559757f091f9e71d3f76c27d4dfe0652cc3f17ccce398b8377bfda4", + "sha256:2e61b72cf15922a7a665299a6b6825bd9901d67ec3b9d3cf9b256dc1667c9bb1", + "sha256:32e8ebf0080ddd38ec05f8be940a3719e5fe1ab8bb6d2b3f6f8b89c9e34149aa", + "sha256:3487c57bc8f17f2586ae7fd0e77f65cd298d45b64d15f604bbb29f4cce0e7961", + "sha256:353306ba6f0218af1aefe4b9c8b3a0b81b209bc75d79357dac6aca70a7b09d6a", + "sha256:370f646d3654e196ddbf772a2d737fe4e1dd738267015b73ff6267ca592fd9d6", + "sha256:380f30073cbd9b740891bb56f44ee31f870e8721269b618ccc9913400936d9f6", + "sha256:39533b927c665bcff7da80bf299218e4af12f3e2be27e9c456e29547bcefd631", + "sha256:3cf2b50352df8775591869aaa22c52b64d60376ba99c0802b42778fedc90b775", + "sha256:45c05b87a8494d9820ea1ac82118fd2f1d795d868e94766fe8ff670377bf6280", + "sha256:46653b5fd29e63ffe63335da343829a2b00bb43b0bd9bb21240d3b42629629e2", + "sha256:493760c4ced954582db83c4760166992c016e1777ebc0f3ef1bb5eb60b2b5924", + "sha256:5685ebc333c95b75be3a0a83a81b82b6411beee9585eaeb9e2e588ae8df23848", + "sha256:59b77f0682e1917be197fc8229530f0c6fb3ef8e242d8256ba091a3a1c0ef7e6", + "sha256:59dce412b2515de05ab2eb6aef19ad7f70857ad436cd65fc4276df007106fb42", + "sha256:5a63ed17af784da3de39b82adfd4f8404ad5ee2ec8f616b063f37da3e64e0521", + "sha256:5c4cc1a438ac52562427330e33891f50a78ffd38d335abc64f93f201c83bdc82", + "sha256:63ba82841ce315e4b5dc8b9345062638c74b1864d38172d0a0403e5a083b0950", + "sha256:66ddcd7ee3264bc937860f4780290d60f6472ca0484c214fe805116a831121e8", + "sha256:68b27a7d9fb0f145de608da2e45e37fd2397b00266f10487e557f769afa2842d", + "sha256:690d8f702945506b58c9c5834d586e8fd819b845fe6239ab16ebc64a92a6fd3d", + "sha256:69c2d111e67a818e702ba957da8c8e62de916f5c1b3da043f744084c63f12d46", + "sha256:6d1aba1f644d6e5e16edada31938c11b6c9c97e3bf065742a2c7740d38af0c19", + "sha256:6da6f6c6ee5595658f21bb9d1ecd702f7a7f22f224ac063dfb595624aec4a2e0", + "sha256:6f2911cae6dd012adaaf51494dad4cafb4284ad1f3b588df6ea3e3017e053750", + "sha256:7794aade99be0d48b69bd5942acddfeff0de3d09c724d9abe4f19736708ef18f", + "sha256:7ccb4667e0c0a25815efbfe251d24b56624449a319d4bb497074dd49444fb306", + "sha256:8df77742b403e71c5d62d22d150e6e35efd6096a15f2c7419815911c62225100", + "sha256:8f0b33fd088e93ba5f7f6dd55226630e7b78212752479c8fcc6abbd143b9c1ce", + "sha256:90257bc627897a2c1d562efcd6a6b18887e9dacae795cad2367e8e16df47d966", + "sha256:925e72fc7a4222a5bf6d288876d5afacc8f833b49c4cca85f65089131ba25afa", + "sha256:92f9a45230d3aa8568c1d692ab27bf505a32dfe3b404721458fc374f411e8bd2", + "sha256:956975a3a1ce1f4537be22278d6a283b8bc74d77671f7f6469ab1e800f4e9b02", + "sha256:a1d49ed6f4b812dde88e937d4c2bd3f13d72c23ef7de1e17a63b7cacef4b5691", + "sha256:a3a98d70c667c957c7cd0b153d4cb5e45d43f5e2e23de73be6f7b5c883c01f72", + "sha256:ac26e43b56dbafb30256906bc763cc1f22e05825ae1ced4c6afbd0e6584f18de", + "sha256:acdfe626607a245aedca35b211f9305a9e7a33349da525bf4ef3caaec8ef51cd", + "sha256:adeac55335669a189189373c93d131ebfc2de3ec04f0d3aa7dff6661f83b89b6", + "sha256:b55cc82ba92c07af6ba619dcf70cc89f7b9626adefb87d251f80f2e77419f1da", + "sha256:b5ab6c64921802176f56c36aa67c5e6a8baf9557ec1662cb41ecdb5580b67eb9", + "sha256:b6316af233610b9868eda92cf68c016750cbf50085ac6c51faa17905ddd25605", + "sha256:b765f19e23c29b68e4f8bbadd36f1da2333ba983d8da2d6518e5f0a7eb2579c2", + "sha256:bde319602111e9acca3c4f87f4205b38ba6166004bf108de47553633f9a580fc", + "sha256:c24debeec87908a864a2b4cb700f863db9441cabacdb22dc448c5d38b55c6f62", + "sha256:cb474a06023d01ead9c072b2580c22b2691aa1cabdcc19c3171ab1fa6d8496e3", + "sha256:cc4b999718287073dccd3acb0ef1593961bd7923af08991cb3c94080db503935", + "sha256:ce65ed7ad7b6cbca06b0c011b170bd2b0bc56b0a740540e2713e5ac12d7b9b2e", + "sha256:d0328f798052a33803a77d0868c7f802e952127092c1738fc9e7bfcaac7207c5", + "sha256:d2a70e8bec768be7423d8d465858a3646b34257a20cc02fd92612f1b14931f50", + "sha256:d798de0b50efb66583fc096bcdaa852ed6ea3485a4eb610d6a634f8010d932f4", + "sha256:d80c019083506886df098b7bb0d844e19db7e226736829ef49f892ed0a070fa5", + "sha256:d9cd73f7bff5079d87c2622aa418a75d5d3cdc944d3edb905c5dfc3235466eb0", + "sha256:db32a5c2912db45e73f80107d178e30f5c48cf596762b3c60ddfebdd655385f0", + "sha256:dbd4808a209b175b5ebbac24c4798dd7511c5ee522a16f2f0eac78c717dfcdfc", + "sha256:decf9d76191bfe34835f1abd3fa8ebe8a9cd7e16300a5c7e82b18c0812bb22a2", + "sha256:df494e5a79f2ef8f81f966f787e515760e639c6319a321c16198b379c256a157", + "sha256:df7784a29b9689341c17d06d826e3b52ee59d6b6916177e4db0477be7aad5f72", + "sha256:e337737b8c9d837e5b4d9e906cc57ed7a639e16e515c8094509b17f556fdb642", + "sha256:e924040582499f7514ec64691031504e6224b5ae7224216208fc2c94f8b13c89", + "sha256:eacd9de9b5b8262818a2e1f88efbd8d523abc8453de238c5d2f6a91fa85032dd", + "sha256:ef67989d480358482830dc3bc232709804f46a61e7e9841d3f0b1c13a4735b3b", + "sha256:efe758958a7bffce68d91ade238df72667e1f18966ed7b1d3d390eead51a8903", + "sha256:f5f0a0691e39c2e7b5c0f23e6765fa6cb162dce99d9ab1897fdd0f7a4a38b6fb", + "sha256:f785d83ece0998e4ce4fadda22fa6c1ecc40e10f41617013a8726d2e9af0d98f", + "sha256:f94d8adfdec402ff97cecc243b310c01d571362ca87bcf8def8e15cb3aaac3ee", + "sha256:f9b251d3f90e125ff0d1f76257329a9190fa1bfd2157344c875580bff6dedc62", + "sha256:fbcff47f8ba82467f203037f7a30decf5c724211b224682f7236edb0dcbb5b95", + "sha256:fe03cea925d884b8f1157a7037df2f5b6a6478a64b78ee600832d8a9f044c83e" ], - "markers": "python_version >= '3.8'", - "version": "==1.15.0" + "markers": "python_version >= '3.9'", + "version": "==1.15.3" }, "zope.event": { "hashes": [ diff --git a/api/main.py b/api/main.py index 230f3f6..2438aae 100644 --- a/api/main.py +++ b/api/main.py @@ -31,7 +31,7 @@ from scrapers.routes import router as scrapers_router from scrapers.rpdb import update_rpdb_posters, update_rpdb_poster from streaming_providers import mapper from streaming_providers.routes import router as streaming_provider_router -from utils import const, crypto, get_json_data, poster, torrent, wrappers +from utils import const, crypto, poster, torrent, wrappers from utils.lock import ( acquire_scheduler_lock, maintain_heartbeat, @@ -54,7 +54,7 @@ logging.basicConfig( @asynccontextmanager -async def lifespan(fastapi_app: FastAPI): +async def lifespan(_: FastAPI): # Startup logic await database.init() await torrent.init_best_trackers() @@ -80,7 +80,7 @@ async def lifespan(fastapi_app: FastAPI): try: scheduler.shutdown(wait=False) except Exception as e: - logging.exception("Error shutting down scheduler") + logging.exception("Error shutting down scheduler, %s", e) finally: await release_scheduler_lock(scheduler_lock) @@ -117,15 +117,14 @@ app.mount("/static", StaticFiles(directory="resources"), name="static") @app.get("/", tags=["home"]) async def get_home(request: Request): - manifest = get_json_data("resources/manifest.json") return TEMPLATES.TemplateResponse( "html/home.html", { "request": request, "addon_name": settings.addon_name, "logo_url": settings.logo_url, - "version": f"{manifest.get('version')}-{settings.git_rev[:7]}", - "description": manifest.get("description"), + "version": f"{settings.version}-{settings.git_rev[:7]}", + "description": settings.description, }, ) @@ -207,9 +206,16 @@ async def get_manifest( user_data: schemas.UserData = Depends(get_user_data), ): response.headers.update(const.NO_CACHE_HEADERS) + catalog_types = ["movie", "series", "tv"] + genre_tasks = [crud.get_genres(catalog_type) for catalog_type in catalog_types] + try: + genres_list = await asyncio.gather(*genre_tasks) + except Exception as e: + logging.exception("Error gathering genres: %s", e) + genres_list = [[] for _ in catalog_types] # Provide default empty list + genres = dict(zip(catalog_types, genres_list)) - manifest = get_json_data("resources/manifest.json") - return await generate_manifest(manifest, user_data) + return await generate_manifest(user_data, genres) @app.get( diff --git a/db/config.py b/db/config.py index 0356449..efdc67c 100644 --- a/db/config.py +++ b/db/config.py @@ -5,6 +5,11 @@ from pydantic_settings import BaseSettings class Settings(BaseSettings): # Core Application Settings addon_name: str = "MediaFusion" + version: str = "4.0.5" + description: str = ( + "Universal Stremio Add-on for Movies, Series, Live TV & Sports Events. Source: https://github.com/mhdzumair/MediaFusion" + ) + contact_email: str = "mhdzumair@gmail.com" host_url: str secret_key: str = Field(..., max_length=32, min_length=32) api_password: str diff --git a/db/crud.py b/db/crud.py index 258d88d..79ad3b8 100644 --- a/db/crud.py +++ b/db/crud.py @@ -1172,18 +1172,13 @@ async def get_event_streams(meta_id: str, user_data) -> list[Stream]: async def get_genres(catalog_type: str) -> list[str]: - if catalog_type == "movie": - meta_class = MediaFusionMovieMetaData - elif catalog_type == "tv": - meta_class = MediaFusionTVMetaData - else: - meta_class = MediaFusionSeriesMetaData - genres = await REDIS_ASYNC_CLIENT.get(f"{catalog_type}_genres") if genres: return json.loads(genres) - genres = await meta_class.distinct("genres", {"genres": {"$ne": ""}}) + genres = await MediaFusionMetaData.distinct( + "genres", {"type": catalog_type, "genres": {"$nin": ["", None]}} + ) # cache the genres for 30 minutes await REDIS_ASYNC_CLIENT.set(f"{catalog_type}_genres", json.dumps(genres), ex=1800) diff --git a/resources/manifest.json b/resources/manifest.json deleted file mode 100644 index c9213ad..0000000 --- a/resources/manifest.json +++ /dev/null @@ -1,1594 +0,0 @@ -{ - "id": "stremio.addons", - "version": "4.0.5", - "name": "Media Fusion", - "contactEmail": "mhdzumair@gmail.com", - "description": "Universal Stremio Add-on for Movies, Series, Live TV & Sports Events. Source: https://github.com/mhdzumair/MediaFusion", - "logo": "https://raw.githubusercontent.com/mhdzumair/MediaFusion/main/resources/images/mediafusion_logo.png", - "behaviorHints": { - "configurable": true, - "configurationRequired": false - }, - "resources": [ - "catalog", - { - "name": "stream", - "types": [ - "movie", - "series", - "tv", - "events" - ], - "idPrefixes": [ - "tt", - "mf", - "dl" - ] - }, - { - "name": "meta", - "types": [ - "movie", - "series", - "tv", - "events" - ], - "idPrefixes": [ - "tt", - "mf", - "dl" - ] - } - ], - "types": [ - "movie", - "series", - "tv", - "events" - ], - "catalogs": [ - { - "id": "mediafusion_search_movies", - "type": "movie", - "name": "Movies", - "extra": [ - { - "name": "search", - "isRequired": true - } - ] - }, - { - "id": "mediafusion_search_series", - "type": "series", - "name": "Series", - "extra": [ - { - "name": "search", - "isRequired": true - } - ] - }, - { - "id": "tamil_hdrip", - "type": "movie", - "name": "Tamil HD Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "tamil_tcrip", - "type": "movie", - "name": "Tamil TCRip Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "tamil_old", - "type": "movie", - "name": "Tamil Old Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "tamil_dubbed", - "type": "movie", - "name": "Tamil Dubbed Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "tamil_series", - "type": "series", - "name": "Tamil Series", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "malayalam_tcrip", - "type": "movie", - "name": "Malayalam TCRip Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "malayalam_hdrip", - "type": "movie", - "name": "Malayalam HD Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "malayalam_old", - "type": "movie", - "name": "Malayalam Old Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "malayalam_dubbed", - "type": "movie", - "name": "Malayalam Dubbed Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "malayalam_series", - "type": "series", - "name": "Malayalam Series", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "telugu_tcrip", - "type": "movie", - "name": "Telugu TCRip Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "telugu_hdrip", - "type": "movie", - "name": "Telugu HD Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "telugu_old", - "type": "movie", - "name": "Telugu Old Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "telugu_dubbed", - "type": "movie", - "name": "Telugu Dubbed Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "telugu_series", - "type": "series", - "name": "Telugu Series", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "hindi_tcrip", - "type": "movie", - "name": "Hindi TCRip Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "hindi_hdrip", - "type": "movie", - "name": "Hindi HD Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "hindi_old", - "type": "movie", - "name": "Hindi Old Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "hindi_dubbed", - "type": "movie", - "name": "Hindi Dubbed Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "hindi_series", - "type": "series", - "name": "Hindi Series", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "kannada_tcrip", - "type": "movie", - "name": "Kannada TCRip Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "kannada_hdrip", - "type": "movie", - "name": "Kannada HD Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "kannada_old", - "type": "movie", - "name": "Kannada Old Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "kannada_dubbed", - "type": "movie", - "name": "Kannada Dubbed Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "kannada_series", - "type": "series", - "name": "Kannada Series", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "english_hdrip", - "type": "movie", - "name": "English HD Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "english_tcrip", - "type": "movie", - "name": "English TCRip Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "english_series", - "type": "series", - "name": "English Series", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "live_tv", - "type": "tv", - "name": "Live TV", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [] - } - ] - }, - { - "id": "mediafusion_search_tv", - "type": "tv", - "name": "Live TV", - "extra": [ - { - "name": "search", - "isRequired": true - } - ] - }, - { - "id": "formula_racing", - "type": "series", - "name": "Formula Racing", - "extra": [ - { - "name": "skip", - "isRequired": false - } - ] - }, - { - "id": "motogp_racing", - "type": "series", - "name": "MotoGP Racing", - "extra": [ - { - "name": "skip", - "isRequired": false - } - ] - }, - { - "id": "american_football", - "type": "movie", - "name": "American Football", - "extra": [ - { - "name": "skip", - "isRequired": false - } - ] - }, - { - "id": "basketball", - "type": "movie", - "name": "Basketball", - "extra": [ - { - "name": "skip", - "isRequired": false - } - ] - }, - { - "id": "baseball", - "type": "movie", - "name": "Baseball", - "extra": [ - { - "name": "skip", - "isRequired": false - } - ] - }, - { - "id": "football", - "type": "movie", - "name": "Football", - "extra": [ - { - "name": "skip", - "isRequired": false - } - ] - }, - { - "id": "hockey", - "type": "movie", - "name": "Hockey", - "extra": [ - { - "name": "skip", - "isRequired": false - } - ] - }, - { - "id": "rugby", - "type": "movie", - "name": "Rugby/AFL", - "extra": [ - { - "name": "skip", - "isRequired": false - } - ] - }, - { - "id": "fighting", - "type": "movie", - "name": "Fighting (WWE, UFC)", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "WWE", - "UFC" - ] - } - ] - }, - { - "id": "other_sports", - "type": "movie", - "name": "Other Sports", - "extra": [ - { - "name": "skip", - "isRequired": false - } - ] - }, - { - "id": "live_sport_events", - "type": "events", - "name": "Live Sport Events", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Afl", - "American Football", - "Baseball", - "Basketball", - "Billiards", - "Cricket", - "Dart", - "Fighting", - "Football", - "Golf", - "Hockey", - "Motor Sport", - "Other Sports", - "Rugby", - "Tennis" - ] - } - ] - }, - { - "id": "prowlarr_movies", - "type": "movie", - "name": "Prowlarr Scraped Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "prowlarr_series", - "type": "series", - "name": "Prowlarr Scraped Series", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "arabic_movies", - "type": "movie", - "name": "Arabic Movies", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - }, - { - "id": "arabic_series", - "type": "series", - "name": "Arabic Series", - "extra": [ - { - "name": "skip", - "isRequired": false - }, - { - "name": "genre", - "isRequired": false, - "options": [ - "Action", - "Adventure", - "Animation", - "Biography", - "Comedy", - "Crime", - "Documentary", - "Drama", - "Family", - "Fantasy", - "Film-Noir", - "Game-Show", - "History", - "Horror", - "Music", - "Musical", - "Mystery", - "Reality-TV", - "Romance", - "Sci-Fi", - "Sport", - "Talk-Show", - "Thriller", - "War", - "Western" - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/resources/templates/manifest.json.j2 b/resources/templates/manifest.json.j2 new file mode 100644 index 0000000..299a0c4 --- /dev/null +++ b/resources/templates/manifest.json.j2 @@ -0,0 +1,118 @@ +{ + "id": "stremio.addons.{{ addon_name | lower | replace(' ', '') }}{% if streaming_provider_name %}.{{ streaming_provider_name }}{% endif %}", + "version": "{{ version }}", + "name": "{{ addon_name }}{% if streaming_provider_short_name %} {{ streaming_provider_short_name }}{% endif %}", + "contactEmail": "{{ contact_email }}", + "description": "{{ description }}", + "logo": "{{ logo_url }}", + "behaviorHints": { + "configurable": true, + "configurationRequired": false + }, + "resources": [ + {% if enable_catalogs or enable_watchlist_catalogs %}"catalog",{% endif %} + { + "name": "stream", + "types": ["movie", "series", "tv", "events"], + "idPrefixes": ["tt", "mf", "dl"] + }, + { + "name": "meta", + "types": ["movie", "series", "tv", "events"], + "idPrefixes": [{% if enable_imdb_metadata %}"tt", {% endif %}"mf", "dl"] + } + ], + "types": ["movie", "series", "tv", "events"], + "catalogs": [ + {% set comma = joiner(",") %} + {% if enable_watchlist_catalogs %} + {{ comma() }} + { + "id": "{{ streaming_provider_name }}_watchlist_movies", + "name": "{{ streaming_provider_short_name }} Watchlist", + "type": "movie", + "extra": [{"name": "skip", "isRequired": false}] + } + {{ comma() }} + { + "id": "{{ streaming_provider_name }}_watchlist_series", + "name": "{{ streaming_provider_short_name }} Watchlist", + "type": "series", + "extra": [{"name": "skip", "isRequired": false}] + } + {% endif %} + {% if enable_catalogs %} + {% set catalog_definitions = { + "mediafusion_search_movies": {"type": "movie", "name": "Movies", "genres": [], "is_search": true}, + "mediafusion_search_series": {"type": "series", "name": "Series", "genres": [], "is_search": true}, + "mediafusion_search_tv": {"type": "tv", "name": "Live TV", "genres": [], "is_search": true}, + "tamil_hdrip": {"type": "movie", "name": "Tamil HD Movies"}, + "tamil_tcrip": {"type": "movie", "name": "Tamil TCRip Movies"}, + "tamil_old": {"type": "movie", "name": "Tamil Old Movies"}, + "tamil_dubbed": {"type": "movie", "name": "Tamil Dubbed Movies"}, + "tamil_series": {"type": "series", "name": "Tamil Series"}, + "malayalam_tcrip": {"type": "movie", "name": "Malayalam TCRip Movies"}, + "malayalam_hdrip": {"type": "movie", "name": "Malayalam HD Movies"}, + "malayalam_old": {"type": "movie", "name": "Malayalam Old Movies"}, + "malayalam_dubbed": {"type": "movie", "name": "Malayalam Dubbed Movies"}, + "malayalam_series": {"type": "series", "name": "Malayalam Series"}, + "telugu_tcrip": {"type": "movie", "name": "Telugu TCRip Movies"}, + "telugu_hdrip": {"type": "movie", "name": "Telugu HD Movies"}, + "telugu_old": {"type": "movie", "name": "Telugu Old Movies"}, + "telugu_dubbed": {"type": "movie", "name": "Telugu Dubbed Movies"}, + "telugu_series": {"type": "series", "name": "Telugu Series"}, + "hindi_tcrip": {"type": "movie", "name": "Hindi TCRip Movies"}, + "hindi_hdrip": {"type": "movie", "name": "Hindi HD Movies"}, + "hindi_old": {"type": "movie", "name": "Hindi Old Movies"}, + "hindi_dubbed": {"type": "movie", "name": "Hindi Dubbed Movies"}, + "hindi_series": {"type": "series", "name": "Hindi Series"}, + "kannada_tcrip": {"type": "movie", "name": "Kannada TCRip Movies"}, + "kannada_hdrip": {"type": "movie", "name": "Kannada HD Movies"}, + "kannada_old": {"type": "movie", "name": "Kannada Old Movies"}, + "kannada_dubbed": {"type": "movie", "name": "Kannada Dubbed Movies"}, + "kannada_series": {"type": "series", "name": "Kannada Series"}, + "english_hdrip": {"type": "movie", "name": "English HD Movies"}, + "english_tcrip": {"type": "movie", "name": "English TCRip Movies"}, + "english_series": {"type": "series", "name": "English Series"}, + "live_tv": {"type": "tv", "name": "Live TV"}, + "formula_racing": {"type": "series", "name": "Formula Racing", "genres": []}, + "motogp_racing": {"type": "series", "name": "MotoGP Racing", "genres": []}, + "american_football": {"type": "movie", "name": "American Football", "genres": []}, + "basketball": {"type": "movie", "name": "Basketball", "genres": []}, + "baseball": {"type": "movie", "name": "Baseball", "genres": []}, + "football": {"type": "movie", "name": "Football", "genres": []}, + "hockey": {"type": "movie", "name": "Hockey", "genres": []}, + "rugby": {"type": "movie", "name": "Rugby/AFL", "genres": []}, + "fighting": {"type": "movie", "name": "Fighting (WWE, UFC)", "genres": ["WWE", "UFC"]}, + "other_sports": {"type": "movie", "name": "Other Sports", "genres": []}, + "live_sport_events": {"type": "events", "name": "Live Sport Events", "genres": ["Afl", "American Football", "Baseball", "Basketball", "Billiards", "Cricket", "Dart", "Fighting", "Football", "Golf", "Hockey", "Motor Sport", "Other Sports", "Rugby", "Tennis"]}, + "prowlarr_movies": {"type": "movie", "name": "Prowlarr Scraped Movies"}, + "prowlarr_series": {"type": "series", "name": "Prowlarr Scraped Series"}, + "arabic_movies": {"type": "movie", "name": "Arabic Movies"}, + "arabic_series": {"type": "series", "name": "Arabic Series"} + } %} + {% for catalog_id in selected_catalogs %} + {% set catalog = catalog_definitions[catalog_id] %} + {% if catalog %} + {% set genres = catalog.genres | default(genres[catalog.type]) | default([]) %} + {{ comma() }} + { + "id": "{{ catalog_id }}", + "type": "{{ catalog.type }}", + "name": "{{ catalog.name }}", + "extra": [ + {% if catalog.is_search %} + {"name": "search", "isRequired": true} + {% else %} + {"name": "skip", "isRequired": false} + {% endif %} + {% if genres %} + , {"name": "genre", "isRequired": false, "options": {{ genres | tojson }}} + {% endif %} + ] + } + {% endif %} + {% endfor %} + {% endif %} + ] +} \ No newline at end of file diff --git a/utils/parser.py b/utils/parser.py index 3706053..09f662c 100644 --- a/utils/parser.py +++ b/utils/parser.py @@ -1,5 +1,6 @@ import asyncio import functools +import json import logging from datetime import datetime, timezone from typing import Optional, List, Any @@ -17,7 +18,7 @@ from utils import const from utils.config import config_manager from utils.const import STREAMING_PROVIDERS_SHORT_NAMES from utils.network import encode_mediaflow_proxy_url -from utils.runtime_const import ADULT_CONTENT_KEYWORDS, TRACKERS +from utils.runtime_const import ADULT_CONTENT_KEYWORDS, TRACKERS, MANIFEST_TEMPLATE from utils.validation_helper import validate_m3u8_or_mpd_url_with_cache @@ -494,74 +495,40 @@ async def fetch_downloaded_info_hashes( return [] -async def generate_manifest(manifest: dict, user_data: UserData) -> dict: - from db.crud import get_genres - - resources = manifest.get("resources", []) - manifest["name"] = settings.addon_name - manifest["id"] += f".{settings.addon_name.lower().replace(' ', '')}" - manifest["logo"] = settings.logo_url - - # Ensure catalogs are enabled - if user_data.enable_catalogs: - # Reorder catalogs based on the user's selection order - ordered_catalogs = [] - for catalog_id in user_data.selected_catalogs: - for catalog in manifest.get("catalogs", []): - if catalog["id"] == catalog_id: - if catalog_id == "live_tv": - # Add the available genres to the live TV catalog - catalog["extra"][1]["options"] = await get_genres( - catalog_type="tv" - ) - ordered_catalogs.append(catalog) - break - - manifest["catalogs"] = ordered_catalogs - if not user_data.enable_imdb_metadata: - # Remove IMDb metadata if disabled - resources[-1]["idPrefixes"].remove("tt") - else: - # If catalogs are not enabled, clear them from the manifest - manifest["catalogs"] = [] - # Define a default stream resource if catalogs are disabled - resources = [ - { - "name": "stream", - "types": ["movie", "series", "tv", "events"], - "idPrefixes": ["tt", "mf", "dl"], - } - ] - - # Adjust manifest details based on the selected streaming provider +async def generate_manifest(user_data: UserData, genres: dict) -> dict: + streaming_provider_name = None + streaming_provider_short_name = None + enable_watchlist_catalogs = False if user_data.streaming_provider: - provider_name = user_data.streaming_provider.service.title() - manifest["name"] += f" {provider_name}" - manifest["id"] += f".{provider_name.lower()}" + streaming_provider_name = user_data.streaming_provider.service + streaming_provider_short_name = STREAMING_PROVIDERS_SHORT_NAMES.get( + user_data.streaming_provider.service + ) + enable_watchlist_catalogs = ( + user_data.streaming_provider.enable_watchlist_catalogs + ) - # Include watchlist catalogs if enabled - if user_data.streaming_provider.enable_watchlist_catalogs: - watchlist_catalogs = [ - { - "id": f"{provider_name.lower()}_watchlist_movies", - "name": f"{provider_name} Watchlist", - "type": "movie", - "extra": [{"name": "skip", "isRequired": False}], - }, - { - "id": f"{provider_name.lower()}_watchlist_series", - "name": f"{provider_name} Watchlist", - "type": "series", - "extra": [{"name": "skip", "isRequired": False}], - }, - ] - # Prepend watchlist catalogs to the sorted user-selected catalogs - manifest["catalogs"] = watchlist_catalogs + manifest["catalogs"] - resources = manifest["resources"] + manifest_data = { + "addon_name": settings.addon_name, + "version": settings.version, + "contact_email": settings.contact_email, + "description": settings.description, + "logo_url": settings.logo_url, + "streaming_provider_name": streaming_provider_name, + "streaming_provider_short_name": streaming_provider_short_name, + "enable_imdb_metadata": user_data.enable_imdb_metadata, + "enable_catalogs": user_data.enable_catalogs, + "enable_watchlist_catalogs": enable_watchlist_catalogs, + "selected_catalogs": user_data.selected_catalogs, + "genres": genres, + } - # Ensure the resource list is updated accordingly - manifest["resources"] = resources - return manifest + manifest_json = MANIFEST_TEMPLATE.render(manifest_data) + try: + return json.loads(manifest_json) + except json.JSONDecodeError as e: + logging.exception(f"Failed to parse manifest JSON: {e}") + return {} @functools.lru_cache(maxsize=1024) diff --git a/utils/runtime_const.py b/utils/runtime_const.py index 5e6992d..4447c43 100644 --- a/utils/runtime_const.py +++ b/utils/runtime_const.py @@ -20,6 +20,7 @@ PRIVATE_CIDR = re.compile( ) TEMPLATES = Jinja2Templates(directory="resources") +MANIFEST_TEMPLATE = TEMPLATES.get_template("templates/manifest.json.j2") DELETE_ALL_META = schemas.Meta( **const.DELETE_ALL_WATCHLIST_META,