Fix parse_artist_title (ANS.* bug) + unify station naming na FOLX SLO
PROBLEMS: 1. parse_artist_title je uporabljal Path(s).stem za stripping ext-a, kar je pri YT title 'ANS.NAVEZA - SREČA OPOTEČA' vrnilo 'ANS' (Path smatra '.NAVEZA - SREČA OPOTEČA' kot extension). Posledica: parser failed → ACR fallback → 'Folx' kot artist na 15+ jobih. 2. tv_station je imel dva imena: 'FOLX SLOVENIJA' (frontend default) in 'FOLX SLO' (qnet match output) — UI tabi niso seštevali pravilno. FIXES: - parse_artist_title: ext stripping samo za znane ekstenzije (.mp4, .mp3, .m4a, .webm, .mkv, .avi, .mov, .wav, .flac, .aac, .opus, .ogg, .wmv, .mxf), NE za naključne pike v YT title. - Vsi defaultni 'FOLX SLOVENIJA' → 'FOLX SLO' v Pydantic modelih + templates + filter tabi. - Nextcloud mapping STATION_TO_NEXTCLOUD_FOLDER ostane nespremenjen (FOLX SLO → mapa 'FOLX SLOVENIJA', kjer pač zaplane). BACKFILL (že apliciran prek scripte): - 15 jobov z parsed_artist='Folx' popravljenih na pravi izvajalec iz youtube_title (ANS.NAVEZA, ANS.BITENC, ANS. ROKA ŽLINDRE, ipd.). - 86 jobov tv_station 'FOLX SLOVENIJA' → 'FOLX SLO'.
This commit is contained in:
+17
-7
@@ -333,8 +333,18 @@ def parse_artist_title(filename_or_title):
|
||||
if not filename_or_title:
|
||||
return (None, None)
|
||||
|
||||
# Odstrani extension
|
||||
name = Path(filename_or_title).stem if "." in filename_or_title else filename_or_title
|
||||
# Odstrani extension SAMO če je dejansko file extension (kratko, brez presledka).
|
||||
# Path("ANS.NAVEZA - SREČA OPOTEČA").stem vrne "ANS" — narobe za YT title.
|
||||
# Pravilno: samo če je string brez presledkov ali se konča na običajno ext.
|
||||
_COMMON_EXT = {".mp4", ".mp3", ".m4a", ".webm", ".mkv", ".avi", ".mov",
|
||||
".wav", ".flac", ".aac", ".opus", ".ogg", ".wmv", ".mxf"}
|
||||
name = filename_or_title
|
||||
if "." in name:
|
||||
# Vzemi zadnjo piko in preveri ali je to znana ext
|
||||
last_dot = name.rfind(".")
|
||||
ext = name[last_dot:].lower()
|
||||
if ext in _COMMON_EXT and last_dot > 0:
|
||||
name = name[:last_dot]
|
||||
|
||||
# Odstrani noise patterns
|
||||
for pat in _NOISE_PATTERNS:
|
||||
@@ -1032,7 +1042,7 @@ def process_job(job_id):
|
||||
if final_job.get("auto_upload_to_nextcloud") and _nextcloud_configured():
|
||||
update_job(job_id, nextcloud_status="uploading", nextcloud_error=None)
|
||||
download_name = build_download_filename(final_job)
|
||||
tv_station = final_job.get("tv_station", "FOLX SLOVENIJA")
|
||||
tv_station = final_job.get("tv_station", "FOLX SLO")
|
||||
nc_folder = _nextcloud_folder_for_station(tv_station)
|
||||
target_subdir = f"folxspeed/REELS/{nc_folder}"
|
||||
print(f"☁️ Avto-upload v Nextcloud: /{target_subdir}/{download_name}", flush=True)
|
||||
@@ -1300,7 +1310,7 @@ class YouTubeJobIn(BaseModel):
|
||||
subtitle_style: str = "reels"
|
||||
whisper_model: str = "large-v3"
|
||||
quality: str = "medium"
|
||||
tv_station: str = "FOLX SLOVENIJA" # za Nextcloud target mapo
|
||||
tv_station: str = "FOLX SLO" # za Nextcloud target mapo
|
||||
|
||||
|
||||
class StartJobIn(BaseModel):
|
||||
@@ -1325,7 +1335,7 @@ class StartJobIn(BaseModel):
|
||||
# Batch tracking za multi-upload (Telegram summary)
|
||||
batch_id: Optional[str] = None
|
||||
# TV postaja — določa Nextcloud target mapo
|
||||
tv_station: str = "FOLX SLOVENIJA"
|
||||
tv_station: str = "FOLX SLO"
|
||||
|
||||
|
||||
# ────────────────────────────────────────────────────────────────
|
||||
@@ -1333,7 +1343,7 @@ class StartJobIn(BaseModel):
|
||||
# ────────────────────────────────────────────────────────────────
|
||||
class DedupCheckRequest(BaseModel):
|
||||
filenames: list[str]
|
||||
tv_station: str = "FOLX SLOVENIJA"
|
||||
tv_station: str = "FOLX SLO"
|
||||
|
||||
|
||||
@app.post("/api/dedup/check")
|
||||
@@ -2308,7 +2318,7 @@ async def upload_nextcloud(job_id: str, user: str = Depends(check_auth)):
|
||||
download_name = build_download_filename(job)
|
||||
|
||||
# TV postaja določa target mapo (mapping Qnet -> Nextcloud folder)
|
||||
tv_station = job.get("tv_station", "FOLX SLOVENIJA")
|
||||
tv_station = job.get("tv_station", "FOLX SLO")
|
||||
nc_folder = _nextcloud_folder_for_station(tv_station)
|
||||
target_subdir = f"folxspeed/REELS/{nc_folder}"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user