From 23062aef4c5cd25a4b25b5d787e44f42999f83c7 Mon Sep 17 00:00:00 2001 From: Avishkar Patil Date: Sat, 5 Jun 2021 11:53:19 +0530 Subject: [PATCH 1/9] Initial Commit --- requirements.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 946e976..b54c967 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,4 +4,6 @@ aiohttp python-dotenv motor aiofiles -dnspython \ No newline at end of file +dnspython +apscheduler +requests From 86b959350dd7f4a76284927ebe905331906f83cd Mon Sep 17 00:00:00 2001 From: Avishkar Patil Date: Sat, 5 Jun 2021 11:54:38 +0530 Subject: [PATCH 2/9] Initial Commit --- WebStreamer/vars.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/WebStreamer/vars.py b/WebStreamer/vars.py index 0db52b1..1e01694 100644 --- a/WebStreamer/vars.py +++ b/WebStreamer/vars.py @@ -24,7 +24,9 @@ class Var(object): APP_NAME = str(getenv('APP_NAME')) else: ON_HEROKU = False - FQDN = str(getenv('FQDN', BIND_ADRESS)) if not ON_HEROKU else APP_NAME+'.herokuapp.com' + FQDN = str(getenv('FQDN', BIND_ADRESS)) if not ON_HEROKU or getenv('FQDN') else APP_NAME+'.herokuapp.com' + URL = "https://{}/".format(FQDN) if ON_HEROKU or NO_PORT else \ + "http://{}:{}/".format(FQDN, PORT) DATABASE_URL = str(getenv('DATABASE_URL')) UPDATES_CHANNEL = str(getenv('UPDATES_CHANNEL', None)) BANNED_CHANNELS = list(set(int(x) for x in str(getenv("BANNED_CHANNELS", "-1001362659779")).split())) From b09c4f69ad0a5b1b63d560987902f3c0c7973b7f Mon Sep 17 00:00:00 2001 From: Avishkar Patil Date: Sat, 5 Jun 2021 11:55:14 +0530 Subject: [PATCH 3/9] Initial Commit --- WebStreamer/__main__.py | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/WebStreamer/__main__.py b/WebStreamer/__main__.py index 1c793c7..88c7e1e 100644 --- a/WebStreamer/__main__.py +++ b/WebStreamer/__main__.py @@ -1,6 +1,3 @@ -# This file is a part of TG-FileStreamBot -# Coding: @AvishkarPatil & @EverythingSuckz & @AbirHasan2005 - import os import sys import glob @@ -13,6 +10,15 @@ from .bot import StreamBot from .vars import Var from aiohttp import web from .server import web_server +from .utils.keepalive import ping_server +from apscheduler.schedulers.background import BackgroundScheduler + +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s" +) +logging.getLogger("pyrogram").setLevel(logging.WARNING) +logging.getLogger("apscheduler").setLevel(logging.WARNING) ppath = "WebStreamer/bot/plugins/*.py" files = glob.glob(ppath) @@ -24,10 +30,9 @@ async def start_services(): print('\n') print('------------------- Initalizing Telegram Bot -------------------') await StreamBot.start() + print('----------------------------- DONE -----------------------------') print('\n') - print('---------------------- DONE ----------------------') - print('\n') - print('------------------- Importing -------------------') + print('--------------------------- Importing ---------------------------') for name in files: with open(name) as a: patt = Path(a.name) @@ -39,12 +44,18 @@ async def start_services(): spec.loader.exec_module(load) sys.modules["WebStreamer.bot.plugins." + plugin_name] = load print("Imported => " + plugin_name) - print('\n') - print('------------------- Initalizing Web Server -------------------') + if Var.ON_HEROKU: + print('------------------ Starting Keep Alive Service ------------------') + print('\n') + scheduler = BackgroundScheduler() + scheduler.add_job(ping_server, "interval", seconds=1200) + scheduler.start() + print('-------------------- Initalizing Web Server --------------------') app = web.AppRunner(await web_server()) await app.setup() bind_address = "0.0.0.0" if Var.ON_HEROKU else Var.FQDN await web.TCPSite(app, bind_address, Var.PORT).start() + print('----------------------------- DONE -----------------------------') print('\n') print('----------------------- Service Started -----------------------') print(' bot =>> {}'.format((await StreamBot.get_me()).first_name)) @@ -58,4 +69,4 @@ if __name__ == '__main__': try: loop.run_until_complete(start_services()) except KeyboardInterrupt: - print('----------------------- Service Stopped -----------------------') + logging.info('----------------------- Service Stopped -----------------------') From 72ebeeecca592e6b8bba13da2a125524daacb182 Mon Sep 17 00:00:00 2001 From: Avishkar Patil Date: Sat, 5 Jun 2021 11:55:46 +0530 Subject: [PATCH 4/9] Initial Commit --- WebStreamer/__init__.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/WebStreamer/__init__.py b/WebStreamer/__init__.py index 16aacb5..2c34819 100644 --- a/WebStreamer/__init__.py +++ b/WebStreamer/__init__.py @@ -1,3 +1,5 @@ -# This file is a part of TG-FileStreamBot -# Coding : Jyothis Jayanth [@EverythingSuckz] + # Maintained By : Avishkar Patil [ @Avishkarpatil ] [ Telegram ] + +import time +StartTime = time.time() From 3ed6c02e7e4c28ac5ca0534c5e0000d88fcf1a51 Mon Sep 17 00:00:00 2001 From: Avishkar Patil Date: Sat, 5 Jun 2021 11:56:44 +0530 Subject: [PATCH 5/9] Initial Commit --- WebStreamer/utils/keepalive.py | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 WebStreamer/utils/keepalive.py diff --git a/WebStreamer/utils/keepalive.py b/WebStreamer/utils/keepalive.py new file mode 100644 index 0000000..834e4d2 --- /dev/null +++ b/WebStreamer/utils/keepalive.py @@ -0,0 +1,11 @@ +# Bot Sleeping + +import logging +import requests +from ..vars import Var +def ping_server(): + k = requests.get(f'https://ping-pong-sn.herokuapp.com/pingback?link={Var.URL}').json() + if not k.get('error'): + logging.info('KeepAliveService: Pinged {} with status {}'.format(Var.FQDN, k.get('Status'))) + else: + logging.error('Couldn\'t Ping the Server!') From 5bfa8329d287d6c55e594094946a26255d9761a8 Mon Sep 17 00:00:00 2001 From: Avishkar Patil Date: Sat, 5 Jun 2021 11:57:21 +0530 Subject: [PATCH 6/9] Initial Commit --- WebStreamer/utils/time_format.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 WebStreamer/utils/time_format.py diff --git a/WebStreamer/utils/time_format.py b/WebStreamer/utils/time_format.py new file mode 100644 index 0000000..0bd7790 --- /dev/null +++ b/WebStreamer/utils/time_format.py @@ -0,0 +1,24 @@ +# Bot Uptime + +def get_readable_time(seconds: int) -> str: + count = 0 + readable_time = "" + time_list = [] + time_suffix_list = ["s", "m", "h", " days"] + while count < 4: + count += 1 + if count < 3: + remainder, result = divmod(seconds, 60) + else: + remainder, result = divmod(seconds, 24) + if seconds == 0 and remainder == 0: + break + time_list.append(int(result)) + seconds = int(remainder) + for x in range(len(time_list)): + time_list[x] = str(time_list[x]) + time_suffix_list[x] + if len(time_list) == 4: + readable_time += time_list.pop() + ", " + time_list.reverse() + readable_time += ": ".join(time_list) + return readable_time From ae8f597137587553684e827d97a51f11fc60e4b1 Mon Sep 17 00:00:00 2001 From: Avishkar Patil Date: Sat, 5 Jun 2021 12:00:46 +0530 Subject: [PATCH 7/9] Initial Commit --- WebStreamer/server/stream_routes.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/WebStreamer/server/stream_routes.py b/WebStreamer/server/stream_routes.py index 81622dc..f67b902 100644 --- a/WebStreamer/server/stream_routes.py +++ b/WebStreamer/server/stream_routes.py @@ -1,6 +1,4 @@ -# Taken from megadlbot_oss -# Thanks to Eyaadh - +import time import math import logging import secrets @@ -8,17 +6,18 @@ import mimetypes from ..vars import Var from aiohttp import web from ..bot import StreamBot +from WebStreamer import StartTime from ..utils.custom_dl import TGCustomYield, chunk_size, offset_fix - +from ..utils.time_format import get_readable_time routes = web.RouteTableDef() @routes.get("/", allow_head=True) async def root_route_handler(request): - bot_details = await StreamBot.get_me() return web.json_response({"status": "running", - "server_permission": "Open", - "telegram_bot": '@'+bot_details.username}) + "maintained_by": "Avishkar_Patil", + "uptime": get_readable_time(time.time() - StartTime), + "telegram_bot": '@'+(await StreamBot.get_me()).username}) @routes.get("/{message_id}") @@ -74,4 +73,4 @@ async def media_streamer(request, message_id: int): if return_resp.status == 200: return_resp.headers.add("Content-Length", str(file_size)) - return return_resp \ No newline at end of file + return return_resp From ee86d9a816446b87895ebc49b29d8d890fb34cfa Mon Sep 17 00:00:00 2001 From: Avishkar Patil Date: Sat, 5 Jun 2021 12:01:20 +0530 Subject: [PATCH 8/9] RIP --- .github/workflows/YOURACTION.yml | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 .github/workflows/YOURACTION.yml diff --git a/.github/workflows/YOURACTION.yml b/.github/workflows/YOURACTION.yml deleted file mode 100644 index 4f8df5f..0000000 --- a/.github/workflows/YOURACTION.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: Heroku Awake - -on: - schedule: - - cron: "*/30 * * * *" - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: mikeesto/heroku-awake@1.0.0 - with: - URL: "https://HEROKU_APP_NAME.herokuapp.com" - - # Put Your Heroke App Name As it is in above line - # Don't Change Any other Thing than App Name From 3b87e8a90f706f2887cc52b8e1a9a0209059521a Mon Sep 17 00:00:00 2001 From: Avishkar Patil Date: Sat, 5 Jun 2021 12:08:05 +0530 Subject: [PATCH 9/9] Initial Commit --- README.md | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 4773b28..50e3c33 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@

Telegram File to Link Bot !

- Cover Image + Cover Image +

A Telegram bot to stream files to web.
@@ -37,14 +38,7 @@ Either you could locally host or deploy on [Heroku](https://heroku.com) ### Deploy on Heroku 1. Fork This Repo -2. In .github/workflow/YOURACTION.yml -3. edit this file and at last line in file replace the app name with your heroku app name - - 4.```URL: "https://HEROKU_APP_NAME.herokuapp.com"``` - -5. change this name 😑😑😑 - -6. If You nota Do this bot will not work +2. Click on Deploy Easily ### So Follow Above Steps 👆 and then also deply other wise not work