From f8f104af1be9ac5a2d30413cd42435076c6379f2 Mon Sep 17 00:00:00 2001 From: wcbing Date: Sat, 14 Dec 2024 23:04:27 +0800 Subject: [PATCH] fix: update check_downloader.py --- check_downloader.py | 47 ++++++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/check_downloader.py b/check_downloader.py index e32cb99..31d5e24 100755 --- a/check_downloader.py +++ b/check_downloader.py @@ -4,41 +4,51 @@ import os import sqlite3 -def download(url, file_type): - file_dir = os.path.join(file_type, "/".join(url.split("/")[:-1])) +def download(url, base_dir): + file_dir = os.path.join(base_dir, "/".join(url.split("/")[:-1])) if not os.path.exists(file_dir): os.makedirs(file_dir) - file_path = os.path.join(file_type, url.split("?")[0]) + file_path = os.path.join(base_dir, url.split("?")[0]) # 用 curl 模拟 apt 下载文件,User-Agent 来自 Debian 12 - subprocess.run(["curl", "-H", "User-Agent: Debian APT-HTTP/1.3 (2.6.1)", "-fsLo", file_path, url]) + subprocess.run( + [ + "curl", + "-H", + "User-Agent: Debian APT-HTTP/1.3 (2.6.1)", + "-fsLo", + file_path, + url, + ] + ) -def check_download(name, version, url, arch, file_type="deb"): - conn = sqlite3.connect(file_type + ".db") +def check_download(name, version, url, arch, base_dir="deb"): + conn = sqlite3.connect(base_dir + ".db") cur = conn.cursor() res = cur.execute( "SELECT version, url FROM " + arch + " WHERE name = ?", (name,) ).fetchall() if len(res): - db_version = res[0][0] - db_url = res[0][1] - print(name + ": " + db_version) - if db_version != version: - print("└ Update: " + db_version + " -> " + version) - download(url, file_type) + local_version = res[0][0] + local_url = res[0][1] + print(name + ": " + local_version) + if local_version != version: + print("└ Update: " + local_version + " -> " + version) + download(url, base_dir) # wirte to db cur.execute( "UPDATE " + arch + " SET version = ?, url = ? WHERE name = ?", (version, url, name), ) # remove old version - old_file_path = os.path.join(file_type, db_url.split("?")[0]) - if os.path.exists(old_file_path): - os.remove(old_file_path) + if local_url != url: # 针对固定下载链接 + old_file_path = os.path.join(base_dir, local_url.split("?")[0]) + if os.path.exists(old_file_path): + os.remove(old_file_path) else: print(name + "\n└ Add: " + version) - download(url, file_type) + download(url, base_dir) # wirte to db cur.execute( "INSERT INTO " + arch + "(name, version, url) VALUES (?, ?, ?)", @@ -57,5 +67,6 @@ if __name__ == "__main__": elif len(args) == 4: check_download(args[1], args[2], args[3], "x86_64") else: - print("Usage: check.py [arch]\n") - print("arch: x86_64, arm64. default is x86_64") + print(f"Usage: {args[0]} [arch]") + print("options:") + print(" arch: x86_64, arm64. default is x86_64")