diff --git a/src/vk_parser_app/admin.py b/src/vk_parser_app/admin.py index 51a4f72..9f2e5fc 100644 --- a/src/vk_parser_app/admin.py +++ b/src/vk_parser_app/admin.py @@ -897,6 +897,22 @@ def parse_source_line(line: str) -> dict[str, str]: raw = (line or "").strip() if not raw: return {"name": "", "tag": "", "url": "", "error": "Пустая строка"} + delimiter = next((sep for sep in ("\t", "|", ";") if sep in raw), "") + if delimiter: + fields = [part.strip() for part in raw.split(delimiter)] + fields = [part for part in fields if part] + if len(fields) == 2: + name, url = fields + tag = name + elif len(fields) == 3: + name, tag, url = fields + else: + return {"name": "", "tag": "", "url": "", "error": "Формат: Название | тэг | ссылка"} + if url.startswith(("vk.com/", "vk.ru/", "m.vk.com/")): + url = f"https://{url}" + url = url.replace("https://vk.ru/", "https://vk.com/", 1).replace("https://m.vk.com/", "https://vk.com/", 1) + return {"name": name, "tag": normalize_hash_tag(tag, ""), "url": url, "error": ""} + parts = re.split(r"\s+", raw) url_index = next( ( diff --git a/src/vk_parser_app/templates/sources.html b/src/vk_parser_app/templates/sources.html index e4b38bf..578bed5 100644 --- a/src/vk_parser_app/templates/sources.html +++ b/src/vk_parser_app/templates/sources.html @@ -30,10 +30,10 @@
- +