Show file sizes in list

Include mp3 size display in API responses and render it in the list; remove obsolete Apache config.
This commit is contained in:
dsyoon
2026-01-30 20:47:52 +09:00
parent e240153e3f
commit 7ee89d0629
3 changed files with 22 additions and 22 deletions

View File

@@ -1,21 +0,0 @@
<VirtualHost *:80>
ServerName tts.ncue.net
Redirect permanent / https://tts.ncue.net/
</VirtualHost>
<VirtualHost *:443>
ServerName tts.ncue.net
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/ncue.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ncue.net/privkey.pem
# 선택: 체인 파일이 필요하면 아래 경로 사용
# SSLCertificateChainFile /etc/letsencrypt/live/ncue.net/chain.pem
ProxyRequests Off
ProxyPreserveHost On
# 전체 프록시 (FastAPI가 정적/템플릿 포함 제공)
ProxyPass / http://127.0.0.1:8019/
ProxyPassReverse / http://127.0.0.1:8019/
</VirtualHost>

View File

@@ -84,7 +84,9 @@ function renderList() {
} }
const label = document.createElement("span"); const label = document.createElement("span");
label.textContent = item.display_time; label.textContent = item.size_display
? `${item.display_time} (${item.size_display})`
: item.display_time;
label.className = "item-label"; label.className = "item-label";
li.appendChild(label); li.appendChild(label);

View File

@@ -64,6 +64,23 @@ def ensure_resources_dir():
RESOURCES_DIR.mkdir(parents=True, exist_ok=True) RESOURCES_DIR.mkdir(parents=True, exist_ok=True)
def format_size(bytes_size: int) -> str:
if bytes_size < 1024:
return f"{bytes_size}B"
if bytes_size < 1024 * 1024:
return f"{bytes_size / 1024:.1f}KB"
return f"{bytes_size / (1024 * 1024):.1f}MB"
def get_file_size_display(filename: str | None) -> str | None:
if not filename:
return None
file_path = RESOURCES_DIR / filename
if not file_path.exists():
return None
return format_size(file_path.stat().st_size)
@app.on_event("startup") @app.on_event("startup")
def on_startup(): def on_startup():
ensure_resources_dir() ensure_resources_dir()
@@ -84,6 +101,7 @@ def api_list_tts():
"created_at": row["created_at"].isoformat(), "created_at": row["created_at"].isoformat(),
"display_time": format_display_time(row["created_at"]), "display_time": format_display_time(row["created_at"]),
"filename": row["filename"], "filename": row["filename"],
"size_display": get_file_size_display(row["filename"]),
} }
for row in rows for row in rows
] ]
@@ -117,6 +135,7 @@ def api_create_tts(payload: TtsCreateRequest):
"created_at": created_at.isoformat(), "created_at": created_at.isoformat(),
"display_time": format_display_time(created_at), "display_time": format_display_time(created_at),
"filename": filename, "filename": filename,
"size_display": get_file_size_display(filename),
} }