ZxLbni / Surf-TG

Python Web App which Indexes a Your Telegram Channel and Serves its Files for Download and Stream.

Home Page:https://surftg-d5bc40cb110d.herokuapp.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Surf_TG

Python Web App which Indexes a Your Telegram Channel and Serves its Files for Download and Stream.

Features πŸ“‘

  • Multi Channel Index πŸ“‘
  • Thumbnail Support πŸ–ΌοΈ
  • Search Support πŸ”
  • Login support πŸ”
  • Faster Resumeable Download Link ⏩
  • Stream Video Support πŸ“Ί
  • 25 Website Theme (Bootswatch) 🎨

To-Do

  • API Support πŸ› οΈ
  • Database Support πŸ’Ύ
  • Playlist Creator Support πŸ“€

Screenshots

Demo Url https://surftg-d5bc40cb110d.herokuapp.com/
(username: admin | password: admin)

Setting Up Environment Variables

To run this Surf-TG, you will need to add the following environment variables to your config.env file.

Note

First, rename the sample_config.env to config.env.

Variable Name Value
API_ID (required) Telegram api_id obtained from https://my.telegram.org/apps. int
API_HASH (required) Telegram api_hash obtained from https://my.telegram.org/apps. str
BOT_TOKEN (required) The Telegram Bot Token that you got from @BotFather str
AUTH_CHANNEL (required) Chat_ID of the Channel you are using for index (Seperate Multiple Channel By , eg- -100726731829, -10022121832). int
SESSION_STRING (required) Use same account which is a participant of the AUTH_CHANNEL. str
BASE_URL (required) Valid BASE URL where the bot is deployed. Format of URL should be http://myip, where myip is the IP/Domain(public) of your bot. For Heroku use App Url. str
PORT Port on which app should listen to, defaults to 8080. int
USERNAME default username is admin. str
PASSWORD default password is admin. str
SLEEP_THRESHOLD Set a sleep threshold for flood wait exceptions, defaut is 60. int
WORKERS Number of maximum concurrent workers for handling incoming updates, default is 10. int
MULTI_CLIENT Enable multi bot token for handing incoming updates, default is False. bool
THEME Choose any Bootswatch theme for UI, Default is flatly. str

Themes

  • There are 25 Themes from bootswatch official Bootstrap Themes.
  • You can check Theme from bootswatch.com before selecting.
  • To Change theme, Set Appropriate Theme name in Theme Variable.
Themes
cerulean cosmo cyborg darkly flatly journal
litera lumen lux materia minty pulse
sandstone simplex sketchy slate solar spacelab
superhero united yeti vapor morph quartz
zephyr

Use Multiple Bots to speed up

Note

What it multi-client feature and what it does?
This feature shares the Telegram API requests between worker bots to speed up download speed when many users are using the server and to avoid the flood limits that are set by Telegram.

Note

You can add up to 50 bots since 50 is the max amount of bot admins you can set in a Telegram Channel.

To enable multi-client, generate new bot tokens and add it as your config.env with the following key names.

MULTI_TOKEN1: Add your first bot token here.

MULTI_TOKEN2: Add your second bot token here.

you may also add as many as bots you want. (max limit is 50) MULTI_TOKEN3, MULTI_TOKEN4, etc.

Warning

Don't forget to add all these worker bots to the AUTH_CHANNEL for the proper functioning

Generate Session String

Note

Why Session String is needed?
The session string is required to fetch files from the AUTH_CHANNEL due to a restriction in the Telegram API. Only users are allowed to fetch files from channels; bots cannot do so.

Note

Make Sure that you have to Generate the Pyrogram Session String

To generate the Session String use this Colab Tool

Deployment

Either you could locally host, VPS, or deploy on Heroku

Deploy Locally:

git clone https://github.com/weebzone/Surf-TG
cd Surf-TG
python3 -m venv ./venv
. ./venv/bin/activate
pip install -r requirements.txt
python3 -m bot
  • To stop the whole server, do CTRL+C

  • If you want to run this server 24/7 on the VPS, follow these steps.

sudo apt install tmux -y
tmux
python3 -m bot
  • now you can close the VPS and the server will run on it.

Deploy using Docker

  • Clone the Repository:
git clone https://github.com/weebzone/Surf-TG
cd Surf-TG
  • Start Docker daemon (SKIP if already running, mostly you don't need to do this):
sudo dockerd
  • Build own Docker image:
sudo docker build -t Surf-TG .
  • Start Container:
sudo docker run -p 8080:8080 Surf-TG
  • To stop the running image:
sudo docker ps
sudo docker stop id

Deploy on Heroku :

Easily Deploy to Heroku use this Colab Tool

Contributing

Feel free to contribute to this project if you have any further ideas

Credits

Contact me

Telegram Username

Copyright

Copyright (C) 2024 Weebzone under GNU Affero General Public License.

Surf-TG is Free Software: You can use, study share and improve it at your will. Specifically you can redistribute and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Also keep in mind that all the forks of this repository MUST BE OPEN-SOURCE and MUST BE UNDER THE SAME LICENSE.

About

Python Web App which Indexes a Your Telegram Channel and Serves its Files for Download and Stream.

https://surftg-d5bc40cb110d.herokuapp.com/

License:GNU General Public License v3.0


Languages

Language:Python 51.3%Language:HTML 48.5%Language:Dockerfile 0.2%