列表精简: 序号+文件名(加密名截断)+大小; 下载/删除支持序号 (file_id 兼容); TUI 提示改序号
This commit is contained in:
+1
-1
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 "[失败] 删除出错")
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user