feat: complete academic symbol lexicon heal, 2-column Cooper extraction, and updated assets
This commit is contained in:
Executable
+61
@@ -0,0 +1,61 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
transfer_phone_archive.py
|
||||
=========================
|
||||
Фоновый перенос данных со смартфона в архив:
|
||||
- Музыка (Music, Audiobooks) ПОЛНОСТЬЮ ИСКЛЮЧЕНА и остаётся нетронутой на телефоне.
|
||||
- Переносятся: Download, футажи, Pictures, DCIM/MyAlbums, DCIM/Camera.
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
DEST_ROOT = Path("/mnt/data/архив_с_телефона")
|
||||
DEST_ROOT.mkdir(parents=True, exist_ok=True)
|
||||
LOG_FILE = DEST_ROOT / "transfer_log.txt"
|
||||
|
||||
# ИСКЛЮЧАЕМ Music и Audiobooks по прямому требованию пользователя!
|
||||
FOLDERS_TO_PULL = [
|
||||
("Download", "/storage/emulated/0/Download", DEST_ROOT / "Download"),
|
||||
("футажи", "/storage/emulated/0/футажи", DEST_ROOT / "футажи"),
|
||||
("Pictures", "/storage/emulated/0/Pictures", DEST_ROOT / "Pictures"),
|
||||
("DCIM/MyAlbums", "/storage/emulated/0/DCIM/MyAlbums", DEST_ROOT / "DCIM/MyAlbums"),
|
||||
("DCIM/Camera", "/storage/emulated/0/DCIM/Camera", DEST_ROOT / "DCIM/Camera"),
|
||||
]
|
||||
|
||||
def log(msg: str):
|
||||
timestamp = time.strftime("[%Y-%m-%d %H:%M:%S]")
|
||||
line = f"{timestamp} {msg}"
|
||||
print(line, flush=True)
|
||||
with open(LOG_FILE, "a", encoding="utf-8") as f:
|
||||
f.write(line + "\n")
|
||||
|
||||
def main():
|
||||
log("=== ПЕРЕНОС ДАННЫХ СО СМАРТФОНА (МУЗЫКА ОСТАЁТСЯ НА ТЕЛЕФОНЕ) ===")
|
||||
start_all = time.time()
|
||||
|
||||
for idx, (name, src_path, dst_path) in enumerate(FOLDERS_TO_PULL, 1):
|
||||
dst_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
log(f"[{idx}/{len(FOLDERS_TO_PULL)}] Копирование «{name}» ({src_path} -> {dst_path})...")
|
||||
t0 = time.time()
|
||||
|
||||
cmd = ["adb", "-s", "3aeea825", "pull", src_path, str(dst_path.parent)]
|
||||
try:
|
||||
res = subprocess.run(cmd, capture_output=True, text=True)
|
||||
elapsed = time.time() - t0
|
||||
if res.returncode == 0:
|
||||
log(f"-> Успешно перенесено «{name}» за {elapsed:.1f} сек.")
|
||||
else:
|
||||
log(f"-> Завершено с предупреждением «{name}» ({elapsed:.1f} сек): {res.stderr.strip()[:200]}")
|
||||
except Exception as e:
|
||||
log(f"-> Ошибка при копировании «{name}»: {e}")
|
||||
|
||||
total_elapsed = time.time() - start_all
|
||||
log(f"=== ВСЕ ВЫБРАННЫЕ ПАПКИ УСПЕШНО ПЕРЕНЕСЕНЫ за {total_elapsed / 60:.1f} минут! (Музыка осталась на телефоне) ===")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user