From 6192252d1097f4975b68650d41900f7a9f4ec293 Mon Sep 17 00:00:00 2001 From: benexl Date: Wed, 31 Dec 2025 18:31:40 +0300 Subject: [PATCH] feat: enhance shell_safe function to support Python string literals and escape triple quotes --- viu_media/core/utils/formatter.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/viu_media/core/utils/formatter.py b/viu_media/core/utils/formatter.py index cdc0778..1ac3c11 100644 --- a/viu_media/core/utils/formatter.py +++ b/viu_media/core/utils/formatter.py @@ -184,13 +184,22 @@ def format_score(score: Optional[float]) -> str: def shell_safe(text: Optional[str]) -> str: """ - Escapes a string for safe inclusion in a shell script, - specifically for use within double quotes. It escapes backticks, - double quotes, and dollar signs. + Escapes a string for safe inclusion in a Python script string literal. + This is used when generating Python cache scripts with embedded text content. + + For Python triple-quoted strings, we need to: + - Escape backslashes first (so existing backslashes don't interfere) + - Escape triple quotes (to not break the string literal) + - Remove or replace problematic characters """ if not text: return "" - return text.replace("`", "\\`").replace('"', '\\"').replace("$", "\\$") + # Escape backslashes first + result = text.replace("\\", "\\\\") + # Escape triple quotes (both types) + result = result.replace('"""', '\\"\\"\\"') + result = result.replace("'''", "\\'\\'\\'") + return result def extract_episode_number(title: str) -> Optional[float]: