forked from masoudtestdeploy/MyStreaner
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit a995905
Showing
22 changed files
with
1,368 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
# Auto detect text files and perform LF normalization | ||
* text=auto |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
# Byte-compiled / optimized / DLL files | ||
__pycache__/ | ||
*.py[cod] | ||
*$py.class | ||
|
||
# C extensions | ||
*.so | ||
|
||
# Distribution / packaging | ||
.Python | ||
build/ | ||
develop-eggs/ | ||
dist/ | ||
downloads/ | ||
eggs/ | ||
.eggs/ | ||
lib/ | ||
lib64/ | ||
parts/ | ||
sdist/ | ||
var/ | ||
wheels/ | ||
*.egg-info/ | ||
.installed.cfg | ||
*.egg | ||
MANIFEST | ||
|
||
# PyInstaller | ||
# Usually these files are written by a python script from a template | ||
# before PyInstaller builds the exe, so as to inject date/other infos into it. | ||
*.manifest | ||
*.spec | ||
|
||
# Installer logs | ||
pip-log.txt | ||
pip-delete-this-directory.txt | ||
|
||
# Unit test / coverage reports | ||
htmlcov/ | ||
.tox/ | ||
.nox/ | ||
.coverage | ||
.coverage.* | ||
.cache | ||
nosetests.xml | ||
coverage.xml | ||
*.cover | ||
.hypothesis/ | ||
.pytest_cache/ | ||
|
||
# Translations | ||
*.mo | ||
*.pot | ||
|
||
# Django stuff: | ||
*.log | ||
local_settings.py | ||
db.sqlite3 | ||
|
||
# Flask stuff: | ||
instance/ | ||
.webassets-cache | ||
|
||
# Scrapy stuff: | ||
.scrapy | ||
|
||
# Sphinx documentation | ||
docs/_build/ | ||
|
||
# PyBuilder | ||
target/ | ||
|
||
# Jupyter Notebook | ||
.ipynb_checkpoints | ||
|
||
# IPython | ||
profile_default/ | ||
ipython_config.py | ||
|
||
# pyenv | ||
.python-version | ||
|
||
# celery beat schedule file | ||
celerybeat-schedule | ||
|
||
# SageMath parsed files | ||
*.sage.py | ||
|
||
# Environments | ||
.env | ||
.venv | ||
env/ | ||
venv/ | ||
ENV/ | ||
env.bak/ | ||
venv.bak/ | ||
|
||
# Spyder project settings | ||
.spyderproject | ||
.spyproject | ||
|
||
# Rope project settings | ||
.ropeproject | ||
|
||
# mkdocs documentation | ||
/site | ||
|
||
# mypy | ||
.mypy_cache/ | ||
.dmypy.json | ||
dmypy.json | ||
|
||
# Pyre type checker | ||
.pyre/ | ||
|
||
#session files | ||
*.session |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
language = "bash" | ||
run = "pip3 install -r requirements.txt; python3 -m WebStreamer" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
web: python -m WebStreamer |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
<h1 align="center">FileStreamBot</h1> | ||
<p align="center"> | ||
<a href="https://github.com/Avipatilpro/FileStreamBot"> | ||
<img src="https://socialify.git.ci/avipatilpro/FileStreamBot/image?description=1&descriptionEditable=Telegram%20File%20to%20Link%20Fastest%20Bot%20%2C%20also%20used%20for%20Movies%20streaming%20Generate%20Direct%20Links&font=KoHo&forks=1&logo=https%3A%2F%2Fi.ibb.co%2FZJzJ9Hq%2Flink-3x.png&pattern=Brick%20Wall&stargazers=1&theme=Dark" alt="Cover Image" width="550"> | ||
</a> | ||
|
||
<p align="center"> | ||
A Telegram bot to all media and documents files to web link . | ||
<br /> | ||
</strong></a> | ||
<br /> | ||
<a href="https://github.com/Avipatilpro/FileStreamBot/issues">Report a Bug</a> | ||
| | ||
<a href="https://github.com/Avipatilpro/FileStreamBot/issues">Request Feature</a> | ||
</p> | ||
</p> | ||
|
||
|
||
## 🍁 About This Bot : | ||
|
||
<p align="center"> | ||
<a href="https://github.com/Avipatilpro/FileStreamBot"> | ||
<img src="https://i.ibb.co/ZJzJ9Hq/link-3x.png" height="100" width="100" alt="FileStreamBot Logo"> | ||
</a> | ||
</p> | ||
<p align='center'> | ||
This bot will give you stream links for Telegram files without the need of waiting till the download completes | ||
</p> | ||
|
||
|
||
## ♢ How to make your own : | ||
|
||
<i>Either you could locally host or deploy on [Heroku](https://heroku.com)</i> | ||
|
||
#### ♢ Click on This Drop-down and get more details | ||
|
||
<br> | ||
<details> | ||
<summary><b>Deploy on Heroku :</b></summary> | ||
|
||
|
||
1. Fork This Repo | ||
2. Click on Deploy Easily | ||
|
||
<h4> So Follow Above Steps 👆 and then also deply other wise not work</h4> | ||
|
||
Press the below button to Fast deploy on Heroku | ||
|
||
[](https://heroku.com/deploy) | ||
|
||
then goto the <a href="#mandatory-vars">variables tab</a> for more info on setting up environmental variables. </details> | ||
|
||
|
||
<details> | ||
<summary><b>Host it on VPS Locally :</b></summary> | ||
|
||
|
||
```py | ||
git clone https://github.com/avipatilpro/FileStreamBot | ||
cd FileStreamBot | ||
virtualenv -p /usr/bin/python3 venv | ||
. ./venv/bin/activate | ||
pip install -r requirements.txt | ||
python3 -m WebStreamer | ||
``` | ||
|
||
and to stop the whole bot, | ||
do <kbd>CTRL</kbd>+<kbd>C</kbd> | ||
|
||
Setting up things | ||
|
||
If you're on Heroku, just add these in the Environmental Variables | ||
or if you're Locally hosting, create a file named `.env` in the root directory and add all the variables there. | ||
An example of `.env` file: | ||
|
||
```py | ||
API_ID=12345 | ||
API_HASH=esx576f8738x883f3sfzx83 | ||
BOT_TOKEN=55838383:yourtbottokenhere | ||
BIN_CHANNEL=-100 | ||
PORT=8080 | ||
FQDN=your_server_ip | ||
OWNER_ID=your_user_id | ||
DATABASE_URL=mongodb_uri | ||
``` | ||
</details> | ||
|
||
<details> | ||
<summary><b>Vars and Details :</b></summary> | ||
|
||
`API_ID` : Goto [my.telegram.org](https://my.telegram.org) to obtain this. | ||
|
||
`API_HASH` : Goto [my.telegram.org](https://my.telegram.org) to obtain this. | ||
|
||
`BOT_TOKEN` : Get the bot token from [@BotFather](https://telegram.dog/BotFather) | ||
|
||
`BIN_CHANNEL` : Create a new channel (private/public), add [@missrose_bot](https://telegram.dog/MissRose_bot) as admin to the channel and type /id. Now copy paste the ID into this field. | ||
|
||
`OWNER_ID` : Your Telegram User ID | ||
|
||
`DATABASE_URL` : MongoDB URI for saving User IDs when they first Start the Bot. We will use that for Broadcasting to them. I will try to add more features related with Database. If you need help to get the URI you can ask in [Me Telegram](https://t.me/Avishkarpatil). | ||
|
||
Option Vars | ||
|
||
`UPDATES_CHANNEL` : Put a Public Channel Username, so every user have to Join that channel to use the bot. Must add bot to channel as Admin to work properly. | ||
|
||
`BANNED_CHANNELS` : Put IDs of Banned Channels where bot will not work. You can add multiple IDs & separate with <kbd>Space</kbd>. | ||
|
||
`SLEEP_THRESHOLD` : Set a sleep threshold for flood wait exceptions happening globally in this telegram bot instance, below which any request that raises a flood wait will be automatically invoked again after sleeping for the required amount of time. Flood wait exceptions requiring higher waiting times will be raised. Defaults to 60 seconds. | ||
|
||
`WORKERS` : Number of maximum concurrent workers for handling incoming updates. Defaults to `3` | ||
|
||
`PORT` : The port that you want your webapp to be listened to. Defaults to `8080` | ||
|
||
`WEB_SERVER_BIND_ADDRESS` : Your server bind adress. Defauls to `0.0.0.0` | ||
|
||
`NO_PORT` : If you don't want your port to be displayed. You should point your `PORT` to `80` (http) or `443` (https) for the links to work. Ignore this if you're on Heroku. | ||
|
||
`FQDN` : A Fully Qualified Domain Name if present. Defaults to `WEB_SERVER_BIND_ADDRESS` </details> | ||
|
||
<details> | ||
<summary><b>How to Use :</b></summary> | ||
|
||
:warning: **Before using the bot, don't forget to add the bot to the `BIN_CHANNEL` as an Admin** | ||
|
||
`/start` : To check if the bot is alive or not. | ||
|
||
To get an instant stream link, just forward any media to the bot and boom, its fast af. | ||
|
||
### Channel Support | ||
Bot also Supported with Channels. Just add bot Channel as Admin. If any new file comes in Channel it will edit it with **Get Download Link** Button. </details> | ||
|
||
|
||
--- | ||
<h4 align='center'>© 2022 Aνιѕнкαя Pαтιℓ</h4> | ||
|
||
<!-- DO NOT REMOVE THIS CREDIT 🤬 🤬 --> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# This file is a part of avipatilpro/FileStreamBot |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
|
||
import os | ||
import sys | ||
import glob | ||
import asyncio | ||
import logging | ||
import importlib | ||
from pathlib import Path | ||
from pyrogram import idle | ||
from .bot import StreamBot | ||
from .vars import Var | ||
from aiohttp import web | ||
from .server import web_server | ||
from .utils.keepalive import ping_server | ||
|
||
ppath = "WebStreamer/bot/plugins/*.py" | ||
files = glob.glob(ppath) | ||
|
||
loop = asyncio.get_event_loop() | ||
|
||
|
||
async def start_services(): | ||
print('\n') | ||
print('------------------- Initalizing Telegram Bot -------------------') | ||
await StreamBot.start() | ||
print('\n') | ||
print('---------------------- DONE ----------------------') | ||
print('\n') | ||
print('------------------- Importing -------------------') | ||
for name in files: | ||
with open(name) as a: | ||
patt = Path(a.name) | ||
plugin_name = patt.stem.replace(".py", "") | ||
plugins_dir = Path(f"WebStreamer/bot/plugins/{plugin_name}.py") | ||
import_path = ".plugins.{}".format(plugin_name) | ||
spec = importlib.util.spec_from_file_location(import_path, plugins_dir) | ||
load = importlib.util.module_from_spec(spec) | ||
spec.loader.exec_module(load) | ||
sys.modules["WebStreamer.bot.plugins." + plugin_name] = load | ||
print("Imported => " + plugin_name) | ||
print('\n') | ||
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('\n') | ||
print('----------------------- Service Started -----------------------') | ||
print(' bot =>> {}'.format((await StreamBot.get_me()).first_name)) | ||
print(' server ip =>> {}:{}'.format(bind_address, Var.PORT)) | ||
if Var.ON_HEROKU: | ||
print(' app runnng on =>> {}'.format(Var.FQDN)) | ||
if Var.ON_HEROKU: | ||
print('------------------ Starting Keep Alive Service ------------------') | ||
print('\n') | ||
await asyncio.create_task(ping_server()) | ||
print('---------------------------------------------------------------') | ||
await idle() | ||
|
||
if __name__ == '__main__': | ||
try: | ||
loop.run_until_complete(start_services()) | ||
except KeyboardInterrupt: | ||
print('----------------------- Service Stopped -----------------------') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
|
||
from pyrogram import Client | ||
from ..vars import Var | ||
|
||
StreamBot = Client( | ||
name='Web Streamer', | ||
api_id=Var.API_ID, | ||
api_hash=Var.API_HASH, | ||
bot_token=Var.BOT_TOKEN, | ||
sleep_threshold=Var.SLEEP_THRESHOLD, | ||
workers=Var.WORKERS | ||
) |
Oops, something went wrong.