科技 · 實用指南
將 qBittorrent 的 Content 檔案清單匯出為 CSV,不改下載設定
保存單一工作的檔案回應,保留索引、略過下載項目和進度比例,再核對試算表紀錄。

種子工作名稱列表,不等於某個工作內部的檔案清單。想在試算表搜尋龐大的 Content 目錄樹,並包含「不要下載」的項目,應使用逐檔案回應;資料夾列表可能漏掉尚未下載的檔案。
以下方法讀取已設定、已正常登入的本機 WebUI 中的現有工作,再離線轉換保存的 JSON 副本。它不新增工作、不改優先順序、不下載內容,也不核驗磁碟檔案。
保存單一工作的正確回應
僅用於你自己的 qBittorrent 5,以及已經能正常登入的本機 WebUI。保留正常驗證與保護。若同一電腦的位址為 http://127.0.0.1:8080,開啟並正常登入;實際連接埠不同就使用實際連接埠。尚未設定 WebUI 時停止本方法,不要為此公開暴露服務或關閉驗證。
在同一已登入瀏覽器開啟 http://127.0.0.1:8080/api/v2/torrents/info,找到目標工作並複製其 hash 欄位;名稱重複時核對正確紀錄。接著開啟 http://127.0.0.1:8080/api/v2/torrents/files?hash=YOUR_HASH,把 YOUR_HASH 換成準確雜湊。主機和連接埠與登入位址相同,不加 indexes,以免縮小為部分檔案。
將完整 JSON 回應保存為本機 files.json,或把全部原始回應複製到 UTF-8 純文字檔。它必須是檔案物件陣列,不是登入頁、HTML 檢視器標記或工作摘要陣列。另記工作身分與擷取時間。空陣列可能表示中繼資料尚不可用;工作不存在或驗證失敗,不等於有效的空清單。
轉換已保存的檔案紀錄
已安裝 Python 3 時,在該資料夾開啟終端機;Windows 用 py -3 取代 python3。將命令複製為一整行,保留直引號,選擇新的 CSV 名稱,不使用 Python 的 -O 選項。驗證在開啟輸出前結束,獨占建立會拒絕已有目標。
python3 -c "import csv,json,math,sys; r=json.load(open(sys.argv[1],encoding='utf-8-sig')); ok=lambda b:isinstance(b,dict) and type(b.get('index')) is int and b['index']>=0 and isinstance(b.get('name'),str) and type(b.get('size')) is int and b['size']>=0 and type(b.get('progress')) in (int,float) and math.isfinite(b['progress']) and 0<=b['progress']<=1 and type(b.get('priority')) is int and b['priority'] in (0,1,6,7); assert isinstance(r,list) and r and all(ok(b) for b in r) and len({b['index'] for b in r})==len(r), 'Expected nonempty unfiltered files array with unique indexes'; f=open(sys.argv[2],'x',encoding='utf-8-sig',newline=''); w=csv.writer(f); w.writerow(['index','name','size_bytes','progress_fraction','priority']); w.writerows([[b[k] for k in ('index','name','size','progress','priority')] for b in r]); f.close(); print(len(r),'file records exported')" "files.json" "content-files.csv"
五欄依序為 index、name、size_bytes、progress_fraction、priority。index 是原檔案索引,不是新列號,排序後不要重新編號;name 包含相對路徑。進度 0.25 表示 25%,不是 0.25%;優先順序 0 為不要下載、1 為普通、6 為高、7 為最高。所有回傳項目都會保留,包括略過的檔案、零位元組檔案和重複的基本檔名。
以文字匯入並核對紀錄
在 LibreOffice Calc 選擇「檔案 > 開啟」和「文字 CSV」,設 UTF-8、逗號分隔、直雙引號文字分隔符號。關閉「合併分隔符號」「修剪空格」和「計算公式」,預覽中五欄全部設為「文字」。視窗不出現時,開啟檔案時啟用「編輯篩選器設定」。這樣能保留名稱和值,避免以 = 開頭的檔名變成公式。
比較命令印出的數量與 CSV 資料列數,不含標題列。帶引號的檔名可能有換行,因此實體文字行數不是紀錄數。對照未篩選的 Content 檢視檢查多個完整相對路徑與原索引,包含略過項目。圖示索引 0 和 1 是模擬例子;索引 0 是第一個檔案,不是 CSV 標題列或新的試算表列號。製作排序或篩選副本前,保留未改動的主 CSV。
正確理解錯誤與範圍
驗證錯誤表示檔案為空、格式錯誤、索引重複,或缺少合要求的名稱、大小、進度、優先順序。重新檢查準確的 files 回應與中繼資料是否就緒,不要刪除驗證來強行輸出。目標已存在時換新檔名。磁碟或寫入故障可能留下不完整 CSV;成功重跑並核對解析後的列數之前,不要使用。
這只是擷取時的用戶端中繼資料清單,不證明檔案存在、位元組完整、對等端可用,也不是可復原的續傳備份。項目和進度之後會變化,相對名稱不是獨立的絕對磁碟路徑。我們實際執行了 13 項模擬轉換檢查,涵蓋 Unicode、逗號、引號、多行名稱、非連續索引、重複項目、零值、無效輸入與拒絕覆寫;未執行真實 qBittorrent、瀏覽器或 Calc 介面。保留 JSON 和擷取備註,只分享你確實願意揭露的中繼資料。
