diff --git a/gen-list-html.py b/gen-list-html.py deleted file mode 100755 index 31ba3d0..0000000 --- a/gen-list-html.py +++ /dev/null @@ -1,166 +0,0 @@ -#!/usr/bin/env python3 - -import sqlite3 -import os - - -# 获取数据库中所有表的数据 -def fetch_table_data(db: str) -> dict: - conn = sqlite3.connect(db) - conn.row_factory = sqlite3.Row # 使得查询结果可以通过列名访问 - cursor = conn.cursor() - - # 获取数据库中的所有表 - cursor.execute("SELECT name FROM sqlite_master WHERE type='table';") - tables = cursor.fetchall() - - # 获取每个表的内容 - table_data = {} - for table in tables: - table_name = table["name"] - cursor.execute(f"SELECT * FROM '{table_name}'") - table_data[table_name] = cursor.fetchall() - - conn.close() - return table_data - - -# 生成静态 HTML 页面 -def generate_html(table_data, filename): - html = """ - - - - - - 仓库内容 - - - -
""" - - # 创建标签栏 - for table_name in table_data.keys(): - html += f'' - - html += "
\n " - - # 渲染每个表格的内容 - for table_name, rows in table_data.items(): - html += f'
' - html += f"

{table_name}

" - - # 表格外层包裹 div,启用水平滚动 - html += '
' - html += "" - - # 表头 - if rows: - html += "" - for column in rows[0].keys(): - html += f"" - html += "" - - # 表格数据 - for row in rows: - html += "" - for column in row.keys(): - html += f"" - html += "" - - html += "
{column}
{row[column]}
" - html += "
" # 结束 .table-wrapper - html += "
" - - # 添加 JavaScript 以实现标签切换功能 - html += """ - - - -""" - - dir = os.path.dirname(filename) - if not os.path.exists(dir): - os.makedirs(dir) - # 保存为静态 HTML 文件 - with open(filename, "w", encoding="utf-8") as f: - f.write(html) - - -if __name__ == "__main__": - db = "data/deb.db" - filename="deb/list/index.html" - table_data = fetch_table_data(db) - generate_html(table_data, filename) 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