LA_8 / app.py
Nra's picture
Update app.py
3a60318 verified
import os
import json
import uvicorn
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
# --- Part 1: Automatic File List Generation ---
# This code runs ONCE when the application starts.
DATA_DIR = "data"
OUTPUT_FILE = "filelist.json"
def generate_file_list():
"""Scans the data directory and creates a fresh filelist.json."""
print("--- Running automatic file scan ---")
if not os.path.exists(DATA_DIR):
print(f"Warning: The '{DATA_DIR}' directory was not found. Creating an empty list.")
filenames = []
else:
filenames = [f for f in os.listdir(DATA_DIR) if f.endswith(".html")]
# In a Hugging Face Space, we need to make sure we write to a writable directory.
# The root directory is writable.
with open(OUTPUT_FILE, 'w') as f:
json.dump(filenames, f)
print(f"Successfully created '{OUTPUT_FILE}' with {len(filenames)} files.")
# Run the function on startup to generate the file list
generate_file_list()
# --- Part 2: The FastAPI Web Server ---
# Create the main application instance
app = FastAPI()
# This "mounts" the static file server. It serves all files from the current
# directory ('.') and makes index.html the default page.
app.mount("/", StaticFiles(directory=".", html=True), name="static")
# --- Part 3: The Runner ---
# This is the crucial part that fixes the error. It explicitly starts the server.
if __name__ == "__main__":
# Uvicorn is the server that runs our FastAPI application.
# host="0.0.0.0" makes it accessible within the Hugging Face environment.
# port=7860 is the standard port Hugging Face Spaces expects.
uvicorn.run(app, host="0.0.0.0", port=7860)