From 53eb7faf06aebd350f03c870e51c8d92a03e1e85 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 22 Dec 2025 06:00:31 +0000 Subject: [PATCH] Add fallback for MONGO_DB_NAME from MONGO_URI Co-authored-by: mathieumoran1 --- .../__pycache__/server.cpython-312.pyc | Bin 12094 -> 12923 bytes python_video_server/server.py | 30 +++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/python_video_server/__pycache__/server.cpython-312.pyc b/python_video_server/__pycache__/server.cpython-312.pyc index d1138afa704eb84fb65d7cfaa19d6e3a2f72236e..9f3aa7bb0b58d768f9bd77820e82cbfc107a8a8d 100644 GIT binary patch delta 4509 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 delta 3735 zcmZ`5TWlOxb?!c9-|tcKp~RUMF!LP2#pxDJ^M3A0z_04Xnm{?>b}e?l^bG zacyRCK#|%?5o&rR2ueYGfKZ6ls#rpzstOcTwE{}3AW=3&(!oZ5bD%N+_z@an zc^ZZ{!t!;MMlX0PgA#Yq*ac5z=r$f-1EK(gT6fU|;6<8b0haHBK&6U@rhq$4)6&&Q z-9s}#@1Q+Qy)DlIJxY5)-p9s(7hpj)#>VO{^noudp97t7dX)Bq)c|Pa;T@FPhM!GP zLP^~%RfBX0A}!GZOK%HArA2VElMc&3c0nK`K<|bH2O#tvfKR#%P*97sW$ha7A^^=-7>&^L1axrZy^O9J*!IR%o+2-bv+7~7%NM$T2gvv+f;(P<)uz#!Gpb8m=OqyJ!+V#LN3Vwp z?|BN+K)f3G(|rXr9{}LEYs=K}ab_Bgb8NfYc=eo4nNh9l4Q5uU&iNj&DTp_MGo&a! z3;rtYD676%rg6p#H+>*0xp`i^AL`q=S32j~vWdl6D0FrksV-{VWYvxdzXwF4A{~C1 z6gN(X50jBwWa<_<5py-JdfBx@mgdDIV^5OGQ%=~JyqSTnp&Mz zIcsQ^evZj-`7zMmEqbChL@J`M4B>7ex(DIU@z$)BMdpyI=?1cZ(FrZq=Y0gIBVsK! z1@XKR`w=12;)%q_q+Iv_$oN5NZ7w!+%W>;108PDB^7BVgcmly8@x#P)uZ%2wd$U|? z%`sj9>HXqn;++H@o8wv3tTX(pX!6v?o5=&@$dia;vPxdZV=S_k<1raq;HRWIXBu_f z4Th^djhY=(#7>L7>4_e>WKizCs#}cnIgp*&Fw(D)nQ3(4wTuNY_d33sVJzs(4l#KnI^9GEUK~y7dD2n7l?{w%g4mk z-l53_^r&{~dRqxVo$2+J+m70x*A)Ngy-CiA8-2wY6KFUlEMhL*rI0}!H5~Ww2)54OQME-l80vWD4ZX!J5SBvxIn;R`0Tw-95SIs+ z$dHH*<-9)u#&6<-i)V@POoF$F{WNcWoll<=SzYm;p^|`nG{WlXiSPB|f(! z|24lI>1MERSa#JN>Q(@E&Mf_3+dV87 z906z@l_&r^WGC%ZHyGLv!Nu1H#51E$4dx%yUx1HtHGaHxPHX72&@|5Jte{hFf}!~0 zSWbNs5I!xMV}Bq&6-UPVRs3rB74h`=jx}s#PO!GCU0Z6vzh-H(n#ml0 zU2oBH603j>ALFIzELMwte0!G83gW91)J%WY!r2+5pvS7LTE{f*^q) zi2$2#DZ{TKF8c#k9{(8v*%{r2P93$=yc`#ub-Xfj{AJK^0-dP~^VSK}ml_Rd$uKK^ ziN@rFczdGIi~Dy7zk3J($IQG~>K*J%+OTQC$Y^#3IDZSIKSzxpi$kUTNtgFwa`~YT zBB{SbCf<)sT#xJ&mrKJwFY-728^0-qT&^V|-rZFgMb;+@!doU@O}-yGKA^n3^Y}sc zI|JF{)9!Z;!qgP0-NoQ{K>9s}5{rn0cR*Bj*Vm})CHF}Xmwa6FdYWKL|` ztpcVzR=VSE8Oz)wu_deK1a#A=8@#Dmos+@4$MzeF?+nu#)|pj~C89tnns`>{l}%NN zr9^Xbbk`?7PgvblJYH2^e@cYoCtV`CqQv34#vcNT_aeAYygm6)c?D3%GiyQ-$)fVr zHPg}-bsj>UFakN3qKL)B1LZu4i)uN$wsrW9Z*fHqCytG|6MF$Myxw&to7{>Vx}I6X zXvoV7$I|Ld9a&7TAc=L6A^1?SY zxi*W6QH|1SQ>V1Smf@ZT7Y_qU0|%26fNfQ|u>`jTERfEZfQf{8OAI+}_sD9x<)3L9 zbg9Aa;~#?<$FTVpG^9;8A>>0P{-F{8ctaWgNa?+yOuny7exwZkRs3S=Q4-vU?)fKK zeuNP9gJ@#YjmXE5^rjaPIHmN!i2G5) diff --git a/python_video_server/server.py b/python_video_server/server.py index 0002acb..70fb957 100644 --- a/python_video_server/server.py +++ b/python_video_server/server.py @@ -5,6 +5,7 @@ from datetime import datetime, timezone from pathlib import Path from typing import Generator, Optional, Tuple from urllib.parse import quote +from urllib.parse import urlparse import jwt from bson import ObjectId @@ -28,6 +29,26 @@ def _mongo_uri() -> str: # Read env at runtime (important on Windows/uvicorn worker reloads). return _env_str("MONGO_URI") +def _mongo_db_name() -> str: + # Prefer explicit env var, otherwise try to parse from URI path. + explicit = _env_str("MONGO_DB_NAME") + if explicit: + return explicit + + uri = _mongo_uri() + if not uri: + return "" + + try: + parsed = urlparse(uri) + # Path is like "/dbname" + db = (parsed.path or "").lstrip("/") + # Strip any extra segments just in case + db = db.split("/")[0].strip() + return db + except Exception: + return "" + def _video_files_dir() -> Path: # Read env at runtime (important on Windows/uvicorn worker reloads). @@ -191,7 +212,13 @@ def stream_video( raise HTTPException(status_code=400, detail="Invalid movie id") with _mongo_client() as client: - db = client.get_default_database() + db_name = _mongo_db_name() + if not db_name: + raise HTTPException( + status_code=500, + detail="Mongo DB name not configured. Add it to MONGO_URI (…/dbname) or set MONGO_DB_NAME.", + ) + db = client[db_name] movie = db["movies"].find_one({"_id": oid}, {"video_file": 1}) video_file = (movie or {}).get("video_file") or "" @@ -259,5 +286,6 @@ def healthz(): "ok": True, "time": datetime.now(timezone.utc).isoformat(), "video_files_dir": str(_video_files_dir()), + "mongo_db_name": _mongo_db_name() or None, }