From a05e1f48930c6825b66a302619a8e102ef1d6cf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Mon, 29 Jun 2026 15:44:34 +0400 Subject: [PATCH] fix: fail-safe imports for docx/pdfplumber, threaded Flask --- deploy/services/drhider.py | 12 ++++++++++-- site/app.py | 2 +- site/services/drhider.py | 12 ++++++++++-- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/deploy/services/drhider.py b/deploy/services/drhider.py index b30ecd7..8f788d6 100644 --- a/deploy/services/drhider.py +++ b/deploy/services/drhider.py @@ -283,7 +283,11 @@ class TwoPassObfuscator: ext = os.path.splitext(fname)[1].lower() if ext == '.docx': - from docx import Document + try: + from docx import Document + except ImportError: + text = content.decode('utf-8', errors='replace') + return text, None doc = Document(io.BytesIO(content)) text = "\n".join(p.text for p in doc.paragraphs) for table in doc.tables: @@ -291,7 +295,11 @@ class TwoPassObfuscator: text += "\n" + " | ".join(cell.text for cell in row.cells) elif ext == '.pdf': - import pdfplumber + try: + import pdfplumber + except ImportError: + text = content.decode('utf-8', errors='replace') + return text, None with pdfplumber.open(io.BytesIO(content)) as pdf: for page in pdf.pages: t = page.extract_text() diff --git a/site/app.py b/site/app.py index d9200fe..ab35a07 100644 --- a/site/app.py +++ b/site/app.py @@ -138,7 +138,7 @@ def health(): if __name__ == "__main__": - app.run(host="0.0.0.0", port=5000) + app.run(host="0.0.0.0", port=5000, threaded=True) # ── Совместимость с Lucee-путями ────────────────────────────── diff --git a/site/services/drhider.py b/site/services/drhider.py index b30ecd7..8f788d6 100644 --- a/site/services/drhider.py +++ b/site/services/drhider.py @@ -283,7 +283,11 @@ class TwoPassObfuscator: ext = os.path.splitext(fname)[1].lower() if ext == '.docx': - from docx import Document + try: + from docx import Document + except ImportError: + text = content.decode('utf-8', errors='replace') + return text, None doc = Document(io.BytesIO(content)) text = "\n".join(p.text for p in doc.paragraphs) for table in doc.tables: @@ -291,7 +295,11 @@ class TwoPassObfuscator: text += "\n" + " | ".join(cell.text for cell in row.cells) elif ext == '.pdf': - import pdfplumber + try: + import pdfplumber + except ImportError: + text = content.decode('utf-8', errors='replace') + return text, None with pdfplumber.open(io.BytesIO(content)) as pdf: for page in pdf.pages: t = page.extract_text()