From b6bf0b360b8653182f205b77d12f6fd84b4a1af6 Mon Sep 17 00:00:00 2001 From: odysseusmax Date: Sat, 17 Jul 2021 08:51:54 +0530 Subject: [PATCH] fix file name being urlencoded in index and info pages --- app/util.py | 4 ++-- app/views/download.py | 2 +- app/views/index_view.py | 6 +++--- app/views/info_view.py | 3 ++- app/views/middlewhere.py | 1 + 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/util.py b/app/util.py index 91a2cbb..e903f8f 100644 --- a/app/util.py +++ b/app/util.py @@ -1,13 +1,13 @@ from urllib.parse import quote -def get_file_name(message): +def get_file_name(message, quote_name=True): if message.file.name: name = message.file.name else: ext = message.file.ext or "" name = f"{message.date.strftime('%Y-%m-%d_%H:%M:%S')}{ext}" - return quote(name) + return quote(name) if quote_name else name def get_human_size(num): diff --git a/app/views/download.py b/app/views/download.py index 499e60b..33180d0 100644 --- a/app/views/download.py +++ b/app/views/download.py @@ -42,7 +42,7 @@ class Download: media = message.media size = message.file.size - file_name = get_file_name(message) + file_name = get_file_name(message, quote_name=False) mime_type = message.file.mime_type try: diff --git a/app/views/index_view.py b/app/views/index_view.py index da34f6a..5ca86e7 100644 --- a/app/views/index_view.py +++ b/app/views/index_view.py @@ -1,7 +1,7 @@ import logging +from urllib.parse import quote import aiohttp_jinja2 - from telethon.tl import types from app.config import results_per_page, block_downloads @@ -51,7 +51,7 @@ class IndexView: for m in messages: entry = None if m.file and not isinstance(m.media, types.MessageMediaWebPage): - filename = get_file_name(m) + filename = get_file_name(m, quote_name=False) insight = m.text[:60] if m.text else filename entry = dict( file_id=m.id, @@ -62,7 +62,7 @@ class IndexView: insight=insight, human_size=get_human_size(m.file.size), url=f"/{alias_id}/{m.id}/view", - download=f"{alias_id}/{m.id}/{filename}", + download=f"{alias_id}/{m.id}/{quote(filename)}", ) elif m.message: entry = dict( diff --git a/app/views/info_view.py b/app/views/info_view.py index e275f8b..f5850dc 100644 --- a/app/views/info_view.py +++ b/app/views/info_view.py @@ -1,4 +1,5 @@ import logging +from urllib.parse import unquote import aiohttp_jinja2 from telethon.tl import types @@ -68,7 +69,7 @@ class InfoView: return_val.update( { "found": True, - "name": file_name, + "name": unquote(file_name), "file_id": file_id, "human_size": human_file_size, "media": media, diff --git a/app/views/middlewhere.py b/app/views/middlewhere.py index a6350bd..937040c 100644 --- a/app/views/middlewhere.py +++ b/app/views/middlewhere.py @@ -62,6 +62,7 @@ def middleware_factory(): if request.app["is_authenticated"] and str(request.rel_url.path) not in [ "/login", "/logout", + "/favicon.ico", ]: url = request.app.router["login_page"].url_for() if str(request.rel_url) != "/":