1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
import sqlite3 from tkinter import * from tkinter.filedialog import askopenfilename from tkinter.filedialog import asksaveasfilename from tkinter.ttk import *
def select_db_file(): db_file = askopenfilename(title="请选择BaiduYunCacheFileV0.db文件", filetypes=[('db', '*.db')]) db.set(db_file)
def select_save_file(): save_file = asksaveasfilename(filetypes=[('文件', '*.txt')]) f.set(save_file + ".txt")
def write_file(file_dict, f, item, gap=""): if item == "/": f.write("━" + "/" + "\n") for i in file_dict["/"]: f.write("┣" + "━" + i + "\n") i = item + i + "/" if i in file_dict: write_file(file_dict, f, i, gap="┣━") else: gap = "┃ " + gap for i in file_dict[item]: f.write(gap + i + "\n") i = item + i + "/" if i in file_dict: write_file(file_dict, f, i, gap)
def create_baiduyun_filelist(): file_dict = {} conn = sqlite3.connect(db.get()) cursor = conn.cursor() cursor.execute("select * from cache_file") while True: value = cursor.fetchone() if not value: break path = value[2] name = value[3] size = value[4] isdir = value[6] if path not in file_dict: file_dict[path] = [] file_dict[path].append(name) else: file_dict[path].append(name) with open(f.get(), "w", encoding='utf-8') as fp: write_file(file_dict, fp, "/")
root = Tk() root.title('百度云文件列表生成工具') db_select = Button(root, text=' 选择DB文件 ', command=select_db_file) db_select.grid(row=1, column=1, sticky=W, padx=(2, 0), pady=(2, 0)) db = StringVar() db_path = Entry(root, width=80, textvariable=db) db_path['state'] = 'readonly' db_path.grid(row=1, column=2, padx=3, pady=3, sticky=W + E) save_path = Button(root, text='选择保存地址', command=select_save_file) save_path.grid(row=2, column=1, sticky=W, padx=(2, 0), pady=(2, 0)) f = StringVar() file_path = Entry(root, width=80, textvariable=f) file_path['state'] = 'readonly' file_path.grid(row=2, column=2, padx=3, pady=3, sticky=W + E) create_btn = Button(root, text='生成文件列表', command=create_baiduyun_filelist) create_btn.grid(row=3, column=1, columnspan=2, pady=(0, 2)) root.columnconfigure(2, weight=1) root.mainloop()
|