|
import os |
|
import jinja2 |
|
import aiohttp |
|
import urllib.parse |
|
from FileStream.config import Telegram, Server |
|
from FileStream.Database import Database |
|
from FileStream.Tools.file import humanbytes |
|
|
|
db = Database(Telegram.DATABASE_URL, Telegram.SESSION_NAME) |
|
|
|
|
|
|
|
static_folder = os.path.join(os.path.dirname(__file__), '..','template') |
|
|
|
|
|
async def render_page(db_id): |
|
file_data = await db.get_file(db_id) |
|
src = urllib.parse.urljoin(Server.URL, f'api/dl/{file_data["_id"]}') |
|
file_size = humanbytes(file_data['file']['file_size']) |
|
file_name = file_data['file']['file_name'].replace("_", " ") |
|
|
|
if str((file_data['file']['mime_type']).split('/')[0].strip()) == 'video': |
|
|
|
template_file = os.path.join(static_folder, "play.html") |
|
|
|
|
|
else: |
|
|
|
template_file = os.path.join(static_folder, "dl.html") |
|
|
|
async with aiohttp.ClientSession() as s: |
|
async with s.get(src) as u: |
|
file_size = humanbytes(int(u.headers.get('Content-Length'))) |
|
|
|
with open(template_file) as f: |
|
template = jinja2.Template(f.read()) |
|
|
|
|
|
return template.render(file_name=file_name, file_url=src, file_size=file_size, static_url='/static/') |
|
|
|
|
|
async def render_upload(): |
|
|
|
template_file = "FileStream/server/template/upload.html" |
|
|
|
with open(template_file) as f: |
|
template = jinja2.Template(f.read()) |
|
return template.render() |
|
|