From 8ea92ea842387ace43242f40a4ba5e9037dc896f Mon Sep 17 00:00:00 2001 From: David Kifer Date: Mon, 12 Jan 2026 12:18:42 -0500 Subject: [PATCH] added --- .../__pycache__/main.cpython-313.pyc | Bin 17926 -> 18409 bytes .../recover_and_fix_v2.cpython-313.pyc | Bin 11252 -> 11376 bytes .../__pycache__/tracker.cpython-313.pyc | Bin 4699 -> 4827 bytes .../__pycache__/translator.cpython-313.pyc | Bin 11777 -> 12051 bytes video_transcription/ai_transcriber_v2/main.py | 4 +++- .../ai_transcriber_v2/recover_and_fix_v2.py | 4 +++- .../ai_transcriber_v2/tracker.py | 8 ++++++-- .../ai_transcriber_v2/translator.py | 15 +++++++++++++++ 8 files changed, 27 insertions(+), 4 deletions(-) diff --git a/video_transcription/ai_transcriber_v2/__pycache__/main.cpython-313.pyc b/video_transcription/ai_transcriber_v2/__pycache__/main.cpython-313.pyc index bb494c424d0b645aa338d203a6b4420420311e1a..d2d6ac2c8194a962ff8f5446d3ce4df5a6db1cd5 100644 GIT binary patch delta 4240 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 W|EBOcBlkS_XqUd3|DEaEVEQlJVN5pw diff --git a/video_transcription/ai_transcriber_v2/__pycache__/tracker.cpython-313.pyc b/video_transcription/ai_transcriber_v2/__pycache__/tracker.cpython-313.pyc index c43eb17bc0732ebc536164e644917e76e4ee90cf..9aaa6cfe172f3b90d9cbb6e93d6e28ace72f3163 100644 GIT binary patch delta 1523 zcmZ`(-A^1<6u)<7zh^&K+Aa%a*=4&djBPNwrGY|GOe>WQ)XtS^;xy}0M!HCudS;0c zP1sZuH6|*#HffATUrbE&#gLfBKKL&zVgi{(``|y&g!p27@Z1?jYCk5~-#s6{d(ZEj zJF~4qt8aEM7K;#khKfe*548Rij`xK3jlC}tMw_Aw3x9^3pLigx6YXi&z8~}a zYuYiuqL@8(f84cEXxcju8N>Wtn!Oks!D*m(`jPw|j}KWrmM25|B*?M2BR)}*p*KzP zgtc`Mmedp4VLlN$v?jYm$UC`q%pKBmLtgZl?#CU6_1-usN&i(S=s9ibVHMi+!!fWK*7(XWQ)PqB&Q& zTC?gVyj@w9`TOz(n&rRA-_mZr>g$iBurLV7^6!1wfVg@{Z8UvBO8fYZf2=f!5mf?l zadyaDUb#MBts9UQyl#XUwG%SJ=@F0>kmHkqQvv7TUjAO-ot{1s6=ZOZ?-!QpK_Bl9 ze(u&)H+~AfMQMo-hEr7K=fdNIC8XIw%do7PxopeWj3ow~%jG~EV+R+EdIh5(hC0lD z4Bw!|jgyfcx;BmhH3HAz0?!I?DozONIRPgTY}u*nj$_Ame#L_@+{!MgCOuA6H4}u}VaHxD|ywsKE|fb>n(v zxq8iT(>RpBV;yu&G_8goDaE<30_JVGy0qks!Wo1r zyJf}aZPUg7k3S*C|9Z8yWXy{hSa1nhui(#m8KFUT<3~QOH70kI_D|1zbmmL`Szb_Je z-)+mUITtH#-I=)4v{U_o7tIchT{GubmW*+D6UpMA#u`JsCsRsWB;F$77K!~%GIt5v zCTx?iyJVzAlzRaZZQoWhzbct6CEEz0uOu769U^_8+)zH8JGZ4=;a?>$Dbe(;^sUG@$C{BM|0_A?6W_tV#i=PL delta 1336 zcmZ`(O>7%g5Pomh>-FzCasHjyv5gb6Qb|HX082?gQBxPY6xi1vgjQINvKU8B+|D{e zfkPq?2ZRKT9=&nl&=WUufGZp-!~v!1p=b@N5GS|*Dn|~?tYdzv@}&Ld&Ckv^GwPl6qD4=A?rdHKT00I>a zv`P?y6&>_S2tt)Ggewt<_%VTMv=W0@B@S_4kMgPkhR`5k^TQ8D^L9c6gTBgI6*Hms!l zF*GFSmC*XMZy!MWpq*Y)d#^y&4q$ZB&KPV_`8#XQPFrVAlKx9rW$N*%Tt5zH5yxtB zVyMKSAcj*6X2iG{NwF;svtktWq8LMbw86~@c}uw=UsW&0-!!(`8@1P)Zl?`<@+;1I2oxj3NC*Uz^5?*Gu;8mlhNg3#lcT}q#Zzc86?hDV7i#b9UfryB92ljz z6v72_0wzhBB1jWtpeHjgA1XfVMDuG|ZGqih_;534#x*dQ;Qr8I95ljt;wCC3xfHuHcGL#Wq4FSoC zUj7~()6S#5CgZU>FUWT6&wZaY^uMgsN~hjI(g*pxu-kF2)^_UKj!*q?PGs|X0aKPj*@#k>>Pa9)=pBgm74=u$%Ec(nmwccv^ZTn4|YLC_=7vK8ts1r2m z*Xqrdvq=+o;UY%S<6c2HVBZ@f?>7(1-$j!juDrMMvHUi1$uK>=)owJJI}J~1yRtNJ zN!}cQJl!BKNFE2gz*^mPJpIgC?d)^s*Zs?hhhG}Z+y2?n!2-4D_v({AaJjtD@^*W3 zx8W44=jC;iMvePX5t<)*t&e2yK*P`vK&rcRw606o7@P{Mg9w*W)dj? diff --git a/video_transcription/ai_transcriber_v2/__pycache__/translator.cpython-313.pyc b/video_transcription/ai_transcriber_v2/__pycache__/translator.cpython-313.pyc index 0940c9251a7c54a0a4e9e790028e6d4ad88f6381..08628846598b1835020e7ae37410db8f729e2d60 100644 GIT binary patch delta 3427 zcmeHJeQaA-6~Fh{e$Vgu`zx`XICi{zInBq~B((05HeXG)6n7(U4_e~Jb(5FW!?Ck# zM3^Rx7R9&h&X-X>~udT{d zPr63+CM_hG4ywK|>Z_O_5>ox(Ev$xW)Bty1r-s!U&ehN3L>-OeZ?q+_VgKaNsc~&+ z{6r=-^vH~9*PJ~h__O)j9RmHgZG<|6p!{uw3TDkbX{Fzld~{2wr@xVGVzvn(%|f5D z*DGzz62`2H-jZq`Fdy|Ilob$4O)!-`DO*tyQY{*GB30BZPSj&Ahz)4UU9m@qt_S_} zhF}Rvny6a4gl??LNueNVlB!rhNwv|R2?H*OD0Lkn8;T*#G+9e;*?rxRt0ZnhjcCeW z^(LXL4Puw0kk^7dB&S{i51gCBbj?whl&3;fUDc(@5RXvJaSTBL~sXk6VGhV(lLZ30r1A@LM5eq|35(pUC)xh4Eb`#vfEh zeWtAkoTEDan4`0};9K<>0fmr#_EY%#T;(xF7 zJ#D0;-`qvVEJ6){k4Yb^pU0}oeJr6c3L;cBK-X)1H0Wq?T!m_1+pV@h-wFm+6xFs{ zYnEF+pw?ytc!;9ZPY|kB3ed1$BM82&Q*~7v)vj6Zs=1?J9kR|lRQ{a9RZj`$6Kl#? zHlIJAouRV)y+&S2RzL!1N4Yyt#dn4DDFep{0~HC=U&);-PEyY%5k?vqVcmiNDgg$J z#29I0Bo4%oh`yN5&gh0*CfPzMpDpX8nMqq1X$7(&6IK?IV5A+0p;T3iWEWp-)lnpX z!gwK@&y@Agmq{nn?*dYifyAnVbki$Jqjvz-4l&_BfdCklF#V-6{4rp(*-l7xDDWWO zX`-L8Jv=zfF!qYFJTK0A0iOuJHM=(y)H~pzYXJI)ZRKAgIx`c_GW=@nvl7oF!&grGfUfO#FO$Qn* z8PK`9xe|ESjECtH;U1jcd?EZpjJ-5l{}p_e-mY(k4{$~5S9tc=%ir$;hEghLNx8(L zGc2XWe6C#S3FgO&xq@LTl}W;G*h-|FnJE^^dI9Fl!3+z`^f`T*hseVsXPAKHfOIga zeI~DG3;HbY1coJ_qu-A-gm_vU)#jmRz%y9_^&fBEii`_E5!l_E07BDf8c&<2ozt!> z^w&6Ah@(fbimUy4!KImdu`0kt!@A(qoEp+_uSqqrdBMWxE|{D7T-=je_*?>QSFfOo zd}i&2^I9`iPoC^CxIxJDV548qB>Gk?G$2p1E6Rt)X}x>j!Ts&aHodeWJo6p^Z8uq zf+6Pf*@bKmeELN$A>V<=DJTbfj*Xp4M94gFBuAg`7{>MVc1LvOKDNLxXIPfXxqPYe z`8@M1e`Ju6hZtdv%CPfhnOQ96b2F8mNm#4n=piiZ4MbR2l}>BzUntHl<@ICad02x} z3YFG@?3ggd+eqF<3cb`Bta%eP+))~_|IQeW0v*Qf*#Eb4^tsMQyxWoSd0@J9y delta 3311 zcmeHJ>u+2~6`#5Ly8HINy!Lv%>sM@V{HkI*iA|iuc48+5CzYqS4Y9F%V_&b=*@u~3 zqd28n!v`WBDov-fASB2qP=HDSR|q6Nfc=?@fR25MOYilpo<(2+m^_xIshH@cuZXv4t@3Ls-gbbGrrCU?-_%y?o?jEGI!n6`yGr>*t#w_zW_^iY+#e*q61hPSP)H?BwJ1SnZH`70gpV|#aghVFj zPLuEl>&0ou$t#|5EBQrGMcQy`tXtWNhJoMec8ycp)^R)Xr)(Y}vsa=i?kUj|_TkqE(J{Iw2uTnP_OWNY$1n#| z2Y21(?HC);>l`YtfK_%kUdnWIPkoPJPUhN;7aopm5HBl%2q($Zmk2o!p@SM2A$6v{ zYQx-`iV=D&K%Tn1I;y5U%!A+kV5hv|-_9S#WeD)#GY{d)JW^&anY4-HB6*$om8+-h z7bX(t@NF$XzFIL;eU7 zxF*DORaFao7Y!)&7I-F|$?MtqQloLB#8aq$6iCqtq^a6?m-v>uIXDb5girAgKma8wMYN(FKkv^rEmQZqXU>a^gr2x-%`s z^`dDtZe&UvJ(%|KY{tl!Dih+GcJHltFA=2!;)6t@P2NXc8ecco<#OZ_`17caTjQN# zIN4t>55~KH*hOCAMHv3h<`i}hLsJ?2>ulY5i(E$tdU>|ZU_G_T;#r|<9npFj# zR8Zxx!u+!5>?3)XX6f9WPd`nF=9;#MmDa>3G-Xc=6&1u-bPu&FpXoc0TQ5KJ1g*5V z-_khszjz2f$-}{Us!J>*b7)1-)tvk3eg-gJX_~7l4Ur3dgsee8R)40sS&b}Ya7SnG z_Q}Qqnj0P~!G25C1|Alkmc93ow7svjdaEZS>mp>_EB6PKqS8d#iN`*Jowl1Y? zDofl{jH0P58m5vdnaV2s`I@P$=r?UQmwU!9rJSbYd_JAc6qil=1UK>v%cg^^>Uk-c zGXEVUKo+aMrnSbuxK3gcE59kIz>D+D7{@1Z>2)^iZ}7g zR4k0ui^GHLu@!un8l`?Qa&$o2)Qc}4JvoSzo9fj1l#wg&b&f7zEm!~{i^#Re&Ag7T z5G$}5*vkh;&(nxF-PHk}mby-;(#*zhiSKnKy{%{**gXXCyRKyNiy$%8te#KL=k!(n zDs=f9NWO{W+rrhI=*L&5Y0nv@<-%fR|8h=z6ut05Qxp8E?d(}DvqoI}y)%A>e;+jd z0{@~7g7q(`)-5DlcW2<j=s*7thqcDOabd?rLJe)C8^H0j_-@Y_jfubYB#k5r z+(_iPT{nbJ?v#`!((!~5Lu_L!|mvCH0WozoGTw!r7Yn DeepTranslate") - recovery_log_file = os.path.join(folder_path, "recovery_status.log") + hostname = socket.gethostname() + recovery_log_file = os.path.join(folder_path, f"recovery_status_{hostname}.log") print(f"Logging actions to: {recovery_log_file}") # Ensure Ollama is ready diff --git a/video_transcription/ai_transcriber_v2/tracker.py b/video_transcription/ai_transcriber_v2/tracker.py index 504d890..a24aa8d 100644 --- a/video_transcription/ai_transcriber_v2/tracker.py +++ b/video_transcription/ai_transcriber_v2/tracker.py @@ -1,14 +1,18 @@ import logging import os +import socket from datetime import datetime from sqlalchemy import create_engine, Column, Integer, String, DateTime, Enum, Text from sqlalchemy.orm import declarative_base, sessionmaker import enum +# Get Hostname for namespacing +HOSTNAME = socket.gethostname() + # Setup Logging log_dir = "logs" os.makedirs(log_dir, exist_ok=True) -log_file = os.path.join(log_dir, f"transcriber_{datetime.now().strftime('%Y%m%d')}.log") +log_file = os.path.join(log_dir, f"transcriber_{HOSTNAME}_{datetime.now().strftime('%Y%m%d')}.log") logging.basicConfig( level=logging.INFO, @@ -22,7 +26,7 @@ logger = logging.getLogger(__name__) # Database Setup Base = declarative_base() -DB_FILE = "job_history.db" +DB_FILE = f"job_history_{HOSTNAME}.db" class JobStatus(enum.Enum): PENDING = "pending" diff --git a/video_transcription/ai_transcriber_v2/translator.py b/video_transcription/ai_transcriber_v2/translator.py index c3823d3..8fbbff1 100644 --- a/video_transcription/ai_transcriber_v2/translator.py +++ b/video_transcription/ai_transcriber_v2/translator.py @@ -22,6 +22,11 @@ def translate_via_ollama(source_srt_content, target_language="English", model="l # Using tqdm for progress bar for line in tqdm(subs, desc=" Ollama Progress", unit="line"): text = line.text.strip() + + # Skip empty, numeric-only, or extremely short non-word text + if not text or text.isdigit() or len(text) < 2: + continue + if text: prompt = ( f"Translate this subtitle text to {target_language}. Output ONLY the translation.\n" @@ -54,6 +59,11 @@ def translate_fallback_mymemory(source_srt_content, target_language="en"): for line in tqdm(subs, desc=" MyMemory Progress", unit="line"): text = line.text.strip() + + # Skip empty, numeric-only, or extremely short non-word text + if not text or text.isdigit() or len(text) < 2: + continue + if text: if len(text) > 500: # MyMemory has stricter limits often continue @@ -89,6 +99,11 @@ def translate_fallback_free(source_srt_content, target_language="en"): # Simple line-by-line translation for line in tqdm(subs, desc=" DeepTranslate Progress", unit="line"): text = line.text.strip() + + # Skip empty, numeric-only, or extremely short non-word text + if not text or text.isdigit() or len(text) < 2: + continue + if text: # Sanity check: Skip lines that are too long if len(text) > 4000: