decouple format from mimetype
This commit is contained in:
parent
abe521927e
commit
e2443d1513
1 changed files with 8 additions and 1 deletions
|
@ -29,11 +29,17 @@ def get_format(path: str, request: Request) -> str:
|
||||||
# XXX: add some logic involving Accept, user-agent, etc.
|
# XXX: add some logic involving Accept, user-agent, etc.
|
||||||
return path.split(".")[-1]
|
return path.split(".")[-1]
|
||||||
|
|
||||||
|
def get_mimes_from_format(fmt: str) -> list[str]:
|
||||||
|
if fmt == 'mp3':
|
||||||
|
return ['audio/mpeg']
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
@app.get("/dl/{path:path}")
|
@app.get("/dl/{path:path}")
|
||||||
async def get_file(request: Request, path: str, fmt: str = "auto"):
|
async def get_file(request: Request, path: str, fmt: str = "auto"):
|
||||||
if fmt == "auto":
|
if fmt == "auto":
|
||||||
fmt = get_format(path, request)
|
fmt = get_format(path, request)
|
||||||
|
mimes = get_mimes_from_format(fmt)
|
||||||
with session_pool() as conn:
|
with session_pool() as conn:
|
||||||
original = (
|
original = (
|
||||||
conn.query(database.Original)
|
conn.query(database.Original)
|
||||||
|
@ -57,7 +63,8 @@ async def get_file(request: Request, path: str, fmt: str = "auto"):
|
||||||
return 404
|
return 404
|
||||||
|
|
||||||
# look for the "best" archived version
|
# look for the "best" archived version
|
||||||
right_format = [arc for arc in original.archived if arc.format == fmt]
|
right_format = [arc for arc in original.archived if arc.format in mimes]
|
||||||
if right_format:
|
if right_format:
|
||||||
return RedirectResponse(right_format[0].link)
|
return RedirectResponse(right_format[0].link)
|
||||||
|
# XXX: if we have at least one upload from archive, let's assume there is an mp3 available
|
||||||
return RedirectResponse(original.archived[0].link)
|
return RedirectResponse(original.archived[0].link)
|
||||||
|
|
Loading…
Reference in a new issue