feat: add public index page with censored playlist and live reveals
Public-facing page at / shows the current show's playlist with tracks obscured until the admin marks them as announced. Tracks reveal in real-time via a new unauthenticated /ws/public WebSocket. Server-side censorship on /public/playlist strips track details from unannounced items and sanitizes announced tracks to only expose frontend-needed fields (no raw_json, track_id, etc). Past episodes are browsable with fully revealed but sanitized tracklists. Also fixes RuntimeError on backfill shutdown by closing the httpx client on the same event loop that created it. Made-with: Cursor
This commit is contained in:
@@ -49,18 +49,22 @@ def run() -> None:
|
||||
|
||||
if args.init:
|
||||
sc = SoundCloudClient()
|
||||
asyncio.run(
|
||||
run_backfill(
|
||||
db=db,
|
||||
soundcloud=sc,
|
||||
soundcloud_user=settings.soundcloud_user,
|
||||
show_day=settings.show_day,
|
||||
show_hour=settings.show_hour,
|
||||
anchor_episode=args.show,
|
||||
anchor_aired=args.aired,
|
||||
)
|
||||
)
|
||||
asyncio.run(sc.close())
|
||||
|
||||
async def _backfill_and_close():
|
||||
try:
|
||||
await run_backfill(
|
||||
db=db,
|
||||
soundcloud=sc,
|
||||
soundcloud_user=settings.soundcloud_user,
|
||||
show_day=settings.show_day,
|
||||
show_hour=settings.show_hour,
|
||||
anchor_episode=args.show,
|
||||
anchor_aired=args.aired,
|
||||
)
|
||||
finally:
|
||||
await sc.close()
|
||||
|
||||
asyncio.run(_backfill_and_close())
|
||||
logger.info("Backfill complete")
|
||||
return
|
||||
|
||||
|
||||
Reference in New Issue
Block a user