mews.packages: fix bug and add support for outputting the total number of packages

parent 863d422d
......@@ -40,6 +40,7 @@ class PackageElementModel(BaseModel):
class PackagesModel(BaseModel):
url: str
total: int
added: List[PackageElementModel] | None = None
removed: List[RemovedPackageElementModel] | None = None
updated: List[PackageElementModel] | None = None
......@@ -66,7 +66,7 @@ async def packages_parser(html: str, url: str):
continue
match = re.match(r"^(\S+)\s+-\s+(.*)", line)
if match:
if match and not line.startswith("- "):
if current_package and current_section:
sections[current_section].append(current_package)
......@@ -88,6 +88,11 @@ async def packages_parser(html: str, url: str):
current_package["maintainer_nick"] = match.group(2).strip()
seen_changelog = True
continue
match = re.search(r'^Total (\d+) source packages\.$', line)
if match:
sections["total"] = int(match.group(1))
if current_package and current_section:
sections[current_section].append(current_package)
......
......@@ -19,12 +19,12 @@ async def format_packages(packages: PackagesModel, translate: bool | None = None
updated_messages = []
if packages.added:
added_message += "Добавлены:\n"
added_message += f"Добавлены: {len(packages.added)}\n"
for package in packages.added:
added_message += await _format_package(package, translate)
if packages.removed:
removed_message += "Удалены:\n"
removed_message += f"Удалены: {len(packages.removed)}\n"
for package in packages.removed:
removed_message += await _format_removed_package(package)
removed_message += "\n"
......@@ -33,6 +33,7 @@ async def format_packages(packages: PackagesModel, translate: bool | None = None
updated_messages = await _format_updated_packages(packages, translate)
info_message = (
f"Всего исходных пакетов: {packages.total}\n\n"
"Источник: " +
HTMLFormatter(link(packages.url, text="sisyphus-cybertalk")) +
"\n\n"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment