From 3f44f710b1a0dd25c98e9eeb27173886bf43284f Mon Sep 17 00:00:00 2001 From: Danilo Reyes Date: Sat, 28 Feb 2026 23:47:01 -0600 Subject: [PATCH] fix // and other logic flaws --- src/download/admin.py | 4 ++++ src/download/admin_links.py | 22 ++++++++++++++++++++++ src/download/functions.py | 2 +- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/download/admin.py b/src/download/admin.py index be17f77..c1840e8 100644 --- a/src/download/admin.py +++ b/src/download/admin.py @@ -15,6 +15,7 @@ from admin_links import cmd_rename from admin_links import cmd_unban from admin_links import cmd_validate_import from admin_links import cmd_fix_revision +from admin_links import cmd_fix_x_media from admin_users import cmd_user_rename from admin_users import cmd_users @@ -80,6 +81,9 @@ def build_parser() -> argparse.ArgumentParser: p_fix_rev = sub.add_parser("fix-revision") p_fix_rev.set_defaults(func=cmd_fix_revision) + p_fix_media = sub.add_parser("fix-x-media") + p_fix_media.set_defaults(func=cmd_fix_x_media) + p_user_rename = sub.add_parser("user-rename") p_user_rename.add_argument("user") p_user_rename.add_argument("site") diff --git a/src/download/admin_links.py b/src/download/admin_links.py index f9fb326..4041854 100644 --- a/src/download/admin_links.py +++ b/src/download/admin_links.py @@ -218,6 +218,28 @@ def cmd_fix_revision(_: argparse.Namespace) -> None: print("ok") +def cmd_fix_x_media(_: argparse.Namespace) -> None: + with db.connect() as conn: + rows = conn.execute( + """ + SELECT id, url_original FROM links + WHERE url_original LIKE '%x.com/%//media%' + """ + ).fetchall() + for row in rows: + fixed = row["url_original"].replace("//media", "/media") + conn.execute( + """ + UPDATE links + SET url_original = ?, url_normalized = ?, updated_at = CURRENT_TIMESTAMP + WHERE id = ? + """, + (fixed, db.normalize_url(fixed), row["id"]), + ) + conn.commit() + print("ok") + + def _fzf_select(lines: list[str], multi: bool) -> list[str]: if not lines: return [] diff --git a/src/download/functions.py b/src/download/functions.py index 33c0b74..11f0ccb 100644 --- a/src/download/functions.py +++ b/src/download/functions.py @@ -32,7 +32,7 @@ def validate_x_link(line: str) -> str: if re.search(r"\/media$", line): return line # if does not contain /media at the end then add /media - return f"{line}/media" + return f"{line.rstrip('/')}/media" def parse_link(link: str) -> str: