fix // and other logic flaws

This commit is contained in:
Danilo Reyes
2026-02-28 23:47:01 -06:00
parent 9da87b68e9
commit 3f44f710b1
3 changed files with 27 additions and 1 deletions

View File

@@ -15,6 +15,7 @@ from admin_links import cmd_rename
from admin_links import cmd_unban from admin_links import cmd_unban
from admin_links import cmd_validate_import from admin_links import cmd_validate_import
from admin_links import cmd_fix_revision 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_user_rename
from admin_users import cmd_users 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 = sub.add_parser("fix-revision")
p_fix_rev.set_defaults(func=cmd_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 = sub.add_parser("user-rename")
p_user_rename.add_argument("user") p_user_rename.add_argument("user")
p_user_rename.add_argument("site") p_user_rename.add_argument("site")

View File

@@ -218,6 +218,28 @@ def cmd_fix_revision(_: argparse.Namespace) -> None:
print("ok") 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]: def _fzf_select(lines: list[str], multi: bool) -> list[str]:
if not lines: if not lines:
return [] return []

View File

@@ -32,7 +32,7 @@ def validate_x_link(line: str) -> str:
if re.search(r"\/media$", line): if re.search(r"\/media$", line):
return line return line
# if does not contain /media at the end then add /media # 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: def parse_link(link: str) -> str: