From 612536ca518533dc3809011235cbee0c5357a0d6 Mon Sep 17 00:00:00 2001 From: wcbing Date: Thu, 6 Nov 2025 15:45:37 +0800 Subject: [PATCH] refactor: list page --- merge-apt-repo.py | 13 +++++++++++-- run.sh | 3 --- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/merge-apt-repo.py b/merge-apt-repo.py index 7f7abfc..5c989e1 100755 --- a/merge-apt-repo.py +++ b/merge-apt-repo.py @@ -18,7 +18,7 @@ from apt_pkg import version_compare apt_pkg.init() # 初始化 apt_pkg USER_AGENT = "Debian APT-HTTP/1.3 (3.0.3)" # from Debian 13 -arch_List = ["all", "amd64", "arm64", "i386"] +arch_List = ["amd64", "arm64", "all", "i386"] lock = {arch: Lock() for arch in arch_List} packages = {arch: {} for arch in arch_List} # 存放用于生成 Packages 的内容 """ packages format: @@ -26,6 +26,7 @@ packages = {arch: {} for arch in arch_List} # 存放用于生成 Packages 的内 "arch": { "package1": { "version": "1.0.0", + "url": "https://example.com/package1.deb", "package": "" } } @@ -99,6 +100,7 @@ def split_latest(packages_file_content: bytes): find_name = re.compile(rb"Package:[ ]*(.+)") find_arch = re.compile(rb"Architecture:[ ]*(.+)") + find_url = re.compile(rb"Filename:[ ]*(.+)") find_version = re.compile(rb"Version:[ ]*(.+)") for package in package_list: @@ -106,6 +108,7 @@ def split_latest(packages_file_content: bytes): try: name = find_name.search(package).group(1).decode() arch = find_arch.search(package).group(1).decode() + url = find_url.search(package).group(1).decode() tmp_version = find_version.search(package).group(1).decode() with lock[arch]: # 使用 apt_pkg 进行版本比较 @@ -113,7 +116,7 @@ def split_latest(packages_file_content: bytes): name not in packages[arch] or version_compare(tmp_version, packages[arch][name]["version"]) > 0 ): - packages[arch][name] = {"package": package, "version": tmp_version} + packages[arch][name] = {"version": tmp_version, "url": url, "package": package} except Exception as e: logging.error(f"Error processing package {name}: {e}") return @@ -170,3 +173,9 @@ if __name__ == "__main__": f.write(i["package"]) for i in packages["all"].values(): f.write(i["package"]) + + # 输出 packages.json,用于展示仓库内容 + for arch in arch_List: + for i in packages[arch].values(): + i.pop("package") + json.dump(packages, open("deb/list/packages.json", "w"), indent=4) diff --git a/run.sh b/run.sh index 42e84ab..672ce3d 100755 --- a/run.sh +++ b/run.sh @@ -4,9 +4,6 @@ ./get-github-releases.py find get -type f -name "*.sh" -exec sh {} \; -# generate the html -./gen-list-html.py - ## merge the Packages file from local package cat $(find packages -name "*.package") > deb/tmpPackages