列表精简: 序号+文件名(加密名截断)+大小; 下载/删除支持序号 (file_id 兼容); TUI 提示改序号

This commit is contained in:
lou
2026-08-10 18:51:04 +08:00
parent 461edaddf1
commit f9cbae76ac
7 changed files with 49 additions and 19 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ Source: 7z-encrypt-client
Version: 1.0.0
Architecture: amd64
Maintainer: edgevoid <edgevoid@users.noreply.gitee.com>
Installed-Size: 51858
Installed-Size: 51870
Depends: p7zip-full
Conflicts: 7z-encrypt-client
Replaces: 7z-encrypt-client
+3 -3
View File
@@ -1,6 +1,6 @@
b7ec4ffff510e79070edf4685f0ba9a1 usr/bin/sz-backup
a7346d13df51c26822c41489cfbbd106 usr/bin/sz-backup
61901c8e9af062eef5c386c715f5f3bb usr/bin/sz-config
02b57eea9c5ca54c63fd82da1d6d960b usr/bin/sz-transfer
8f9902ebfd228e08f7691abe6d471d86 usr/bin/sz-tui
c1b6ac06ad3d991b6ad61ecff97a91d1 usr/bin/sz-transfer
ae6b68e345a0f5f3397aa8ead8a199f1 usr/bin/sz-tui
198943ad7a94f6ba0995cf2d326f66d4 usr/share/doc/7z-encrypt-client-bin/changelog.gz
fadf3972cc61c7c76d0ccc20b29a804c usr/share/doc/7z-encrypt-client-bin/copyright
+1 -1
View File
@@ -2,7 +2,7 @@ Package: 7z-encrypt-client
Version: 1.0.0
Architecture: all
Maintainer: edgevoid <edgevoid@users.noreply.gitee.com>
Installed-Size: 117
Installed-Size: 118
Depends: python3 (>= 3.10), python3-venv, p7zip-full
Section: utils
Priority: optional
+2 -2
View File
@@ -8,7 +8,7 @@ dcb31e74e0a6ee8073337fc4fb2acf99 usr/share/7z-encrypt/config.py
21062e04f8c7f4471881a39c489dfa73 usr/share/7z-encrypt/metadata.py
3478ac8277b4b1a38694ad0cc8cdbcdb usr/share/7z-encrypt/splitter.py
b90b8c950f99e1439bc273f50a2ee0a6 usr/share/7z-encrypt/state.py
342458cd8e61337d5ee659fc24ccac8b usr/share/7z-encrypt/transfer.py
12cb430b890a6ef5a532dbb8523b0f54 usr/share/7z-encrypt/tui.py
c922430309b2a680ff757f3b02561ec9 usr/share/7z-encrypt/transfer.py
67d4b90265abf5a72af959f66679dd0f usr/share/7z-encrypt/tui.py
198943ad7a94f6ba0995cf2d326f66d4 usr/share/doc/7z-encrypt-client/changelog.gz
fadf3972cc61c7c76d0ccc20b29a804c usr/share/doc/7z-encrypt-client/copyright
+17 -2
View File
@@ -384,6 +384,17 @@ def _load_keyring_path() -> Path:
return DEFAULT_KEYRING
def _resolve_id(client: TransferClient, ref: str) -> str:
"""文件引用解析: 纯数字 = 列表序号 (1-based), 否则视为 file_id"""
if ref.isdigit():
files = client.list_files()
idx = int(ref) - 1
if not 0 <= idx < len(files):
raise TransferError(f"序号越界: {ref} (共 {len(files)} 个文件)")
return files[idx]["file_id"]
return ref
def main() -> int:
ap = argparse.ArgumentParser(description="传输客户端: 上传 / 文件列表 / 下载")
ap.add_argument("--server", default=None, help="服务端地址 (默认读配置 server.url)")
@@ -454,14 +465,17 @@ def main() -> int:
print(f"[错误] {e}")
return 1
print(f"[文件] 共 {len(files)} 个:")
for f in files:
for i, f in enumerate(files, 1):
size_mb = f["size"] / 1048576
name = _decrypt_name(f["file_name"]) or f["file_name"]
print(f" {f['file_id']} {name} ({size_mb:.1f} MB) {f['created_at']}")
if name.startswith("enc:"):
name = name[:22] + "..." # 加密名截断 (keyring 无对应密钥)
print(f" {i:>2}. {name} ({size_mb:.1f} MB)")
return 0
if args.download:
try:
args.download = _resolve_id(client, args.download)
dest_arg = Path(args.out) if args.out else None
if args.decrypt:
# 密文先落临时 .enc, 本地解密后删
@@ -549,6 +563,7 @@ def main() -> int:
if args.delete:
try:
args.delete = _resolve_id(client, args.delete)
client.delete_file(args.delete)
except TransferError as e:
print(f"[错误] {e}")
+8 -8
View File
@@ -239,7 +239,7 @@ def files_list() -> None:
def download() -> None:
"""下载: 先列文件, 再选 file_id, 本地解密还原"""
"""下载: 先列文件, 再选序号, 本地解密还原"""
print("--- 下载文件 ---")
server = _clean(input(f"服务器 [{_default_server()}]: ")) or _default_server()
if not server.startswith(("http://", "https://")):
@@ -248,11 +248,11 @@ def download() -> None:
if code != 0:
print("[失败] 获取列表出错, 无法下载")
return
file_id = _clean(input("file_id: "))
if not file_id:
ref = _clean(input("序号 (列表里的编号, 如 3): "))
if not ref:
return
out = _clean(input("保存路径 [当前目录/服务端文件名]: "))
args = ["transfer.py", "--server", server, "--download", file_id, "--decrypt"]
args = ["transfer.py", "--server", server, "--download", ref, "--decrypt"]
if out:
args += ["--out", out]
code = run(args)
@@ -260,7 +260,7 @@ def download() -> None:
def delete_file() -> None:
"""删除: 先列文件, 再选 file_id 删除"""
"""删除: 先列文件, 再选序号删除"""
print("--- 删除文件 ---")
server = _clean(input(f"服务器 [{_default_server()}]: ")) or _default_server()
if not server.startswith(("http://", "https://")):
@@ -269,10 +269,10 @@ def delete_file() -> None:
if code != 0:
print("[失败] 获取列表出错, 无法删除")
return
file_id = _clean(input("要删除的 file_id: "))
if not file_id:
ref = _clean(input("要删除的序号: "))
if not ref:
return
code = run(["transfer.py", "--server", server, "--delete", file_id])
code = run(["transfer.py", "--server", server, "--delete", ref])
print("[完成]" if code == 0 else "[失败] 删除出错")