| import sys |
| import asyncio |
| import logging |
| import traceback |
| from aiohttp import web |
| from pyrogram import idle |
| import logging.handlers as handlers |
|
|
| |
|
|
| from FileStream.bot import FileStream |
| from FileStream.Tools import Time_ISTKolNow |
| from FileStream.config import Telegram, Server |
| from FileStream.bot.clients import initialize_clients |
| from FileStream.server import web_server, clear_inactive_clients |
|
|
| |
| logging.basicConfig( |
| level=logging.INFO, |
| datefmt="%d/%m/%Y %H:%M:%S", |
| format='[%(asctime)s] {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s', |
| handlers=[ |
| logging.StreamHandler(stream=sys.stdout), |
| handlers.RotatingFileHandler("streambot.log", mode="a", maxBytes=104857600, backupCount=2, encoding="utf-8") |
| ], |
| ) |
|
|
| logging.getLogger("aiohttp").setLevel(logging.ERROR) |
| logging.getLogger("pyrogram").setLevel(logging.ERROR) |
| logging.getLogger("aiohttp.web").setLevel(logging.ERROR) |
|
|
| server = web.AppRunner(web_server()) |
| loop = asyncio.get_event_loop() |
|
|
| async def start_services(): |
| print( |
| "****\n" |
| + ( |
| "------------------ Starting as Secondary Server ------------------" |
| if Telegram.SECONDARY |
| else "------------------- Starting as Primary Server -------------------" |
| ) |
| + "\n****\n-------------------- Initializing Telegram Bot --------------------" |
| ) |
|
|
| await FileStream.start() |
| bot_info = await FileStream.get_me() |
| FileStream.id = bot_info.id |
| FileStream.username = bot_info.username |
| FileStream.fname = bot_info.first_name |
| |
| |
| print("------------------------------ DONE ------------------------------\n") |
|
|
| print("---------------------- Initializing Clients ----------------------") |
| await initialize_clients() |
| print("------------------------------ DONE ------------------------------\n\n") |
|
|
| print("--------------------- Initializing Web Server ---------------------") |
| await server.setup() |
| await web.TCPSite(server, Server.BIND_ADDRESS, Server.PORT).start() |
| print("------------------------------ DONE ------------------------------\n\n") |
|
|
| |
| |
|
|
| print( |
| f"------------------------- Service Started -------------------------\n" |
| f"Bot =>> {bot_info.first_name}\n" + |
| (f"DC ID =>> {bot_info.dc_id}\n" if bot_info.dc_id else "") + |
| f"URL =>> {Server.URL}\n" |
| "------------------------------------------------------------------" |
| ) |
|
|
| await idle() |
|
|
| async def cleanup(): |
| await server.cleanup() |
| await FileStream.stop() |
|
|
|
|
| if __name__ == "__main__": |
| try: |
| loop.run_until_complete(start_services()) |
| except KeyboardInterrupt: |
| print("\n------------------ Stopping Services KeyBoard Interrupt -----------------") |
| except Exception as err: |
| logging.error(traceback.format_exc()) |
| finally: |
| loop.run_until_complete(cleanup()) |
| loop.stop() |
| print("------------------------ Stopped Services ------------------------") |
|
|