Download path dialog

This commit is contained in:
zhbaor 2023-03-05 00:06:04 +08:00
parent a21d60c717
commit cfb0337c69
3 changed files with 38 additions and 10 deletions

View file

@ -1,11 +1,12 @@
from bottle import request, response, Bottle, static_file
from manager import Manager
from json import dumps
from pathlib import Path
from tkinter import filedialog as fd
from queue import SimpleQueue
manager = Manager()
app = Bottle()
action_queue = SimpleQueue()
path_queue = SimpleQueue()
@app.get("/")
@ -37,8 +38,9 @@ def download():
return "OK"
@app.get("/path")
@app.post("/path")
def get_path():
path = fd.askdirectory()
manager.path = path
return path
path = request.json["path"]
action_queue.put(path)
manager.path = path_queue.get()
return manager.path

View file

@ -20,7 +20,7 @@ function sendNVList() {
}
function get_path() {
axios.get("/path").then(({ data }) => {
axios.post("/path", { path: path.value }).then(({ data }) => {
path.value = data;
input.value.focus();
});

32
main.py
View file

@ -1,10 +1,36 @@
#!/usr/bin/env python3
import webview
from backend import app
import platform
from os import _exit
from time import sleep
from backend import app, action_queue, path_queue
def select_download_path(window):
while True:
path = action_queue.get()
result = window.create_file_dialog(webview.FOLDER_DIALOG)
if result:
path_queue.put(result[0])
else:
path_queue.put(path)
def on_closed():
sleep(1)
_exit(0)
if __name__ == "__main__":
# Create a standard webview window
window = webview.create_window(
"badl - BiliBili Audio Downloader", app, width=500, height=700
)
webview.start()
window.events.closed += on_closed
if os := platform.system() == "Linux":
gui = "gtk"
elif os == "Windows":
gui = "edgehtml"
else:
gui = ""
webview.start(gui=gui, func=select_download_path, args=(window,))