如何打开文件对话框以选择鳗鱼中的下载目的地?
How to open files dialogue box to choose download destination in eel?
我知道在 tkinter 中可以打开文件对话框,但是有没有办法在 eel 中使用 python 或者甚至在 javascript 中做到这一点,以便下载位置可以是获取而不是硬编码每次都更改目录。
我使用了 python,
的 PyTube 库
from pytube import YouTube
link = input(" Enter YouTube video URL: ")
video = YouTube(link)
stream = video.streams.get_highest_resolution()
stream.download('local path')
我使用前端技术创建了前端,它只有一个粘贴框 url 和一个提交按钮。
单击提交按钮后,我希望 chrome 显示一个对话框以选择下载位置以将其传递到 stream.download('local path')
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Downloader</title>
<link rel="stylesheet" href="main.css">
</head>
<body>
<div class="container">
<h1>Downloader</h1>
<div class="line"></div>
<form action="">
<label for="">Enter YouTube video URL</label>
<input type="text" class="youtubeUrl" placeholder="Paste the URL here">
<button>Download</button>
</form>
</div>
</body>
</html>
没有向表单提供任何 class,因为它将成为网络应用程序中的唯一表单。
使用纯 JavaScript 选择自定义下载位置可能会很痛苦,因为出于安全原因,浏览器实现会严格限制它们提供给您的有关用户文件系统的信息(和访问权限)。在网络上搜索类似“HTML 设置自定义下载位置”的内容将显示相关结果。
这里的 好消息 是您可以委派这项工作 Python,这将使您更容易 select 下载位置(因为 Python 是 运行ning 在浏览器上下文之外)。由于您已经需要公开一个 Python 函数才能将 Python 代码转换为 运行,只需将对话框置于该上下文中...类似于:
import tkinter
import eel
from pytube import YouTube
from tkinter import filedialog
root = tkinter.Tk()
root.withdraw() # hide this root window
eel.init("web")
@eel.expose
def download(link):
download_location = filedialog.asksaveasfile() # this will open the Save As dialog
video = YouTube(link)
stream = video.streams.get_highest_resolution()
stream.download(download_location.name)
eel.start("index5.html")
您的目标浏览器 可能 支持一些 non-standard/trick 替代选项,因此如果您需要,请查看 webkitdirectory, File_and_Directory_Entries_API, FileSaver.js, and Using HTML5/JavaScript to generate and save a file 了解更多信息坚持 JavaScript.
我知道在 tkinter 中可以打开文件对话框,但是有没有办法在 eel 中使用 python 或者甚至在 javascript 中做到这一点,以便下载位置可以是获取而不是硬编码每次都更改目录。
我使用了 python,
的 PyTube 库from pytube import YouTube
link = input(" Enter YouTube video URL: ")
video = YouTube(link)
stream = video.streams.get_highest_resolution()
stream.download('local path')
我使用前端技术创建了前端,它只有一个粘贴框 url 和一个提交按钮。
单击提交按钮后,我希望 chrome 显示一个对话框以选择下载位置以将其传递到 stream.download('local path')
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Downloader</title>
<link rel="stylesheet" href="main.css">
</head>
<body>
<div class="container">
<h1>Downloader</h1>
<div class="line"></div>
<form action="">
<label for="">Enter YouTube video URL</label>
<input type="text" class="youtubeUrl" placeholder="Paste the URL here">
<button>Download</button>
</form>
</div>
</body>
</html>
没有向表单提供任何 class,因为它将成为网络应用程序中的唯一表单。
使用纯 JavaScript 选择自定义下载位置可能会很痛苦,因为出于安全原因,浏览器实现会严格限制它们提供给您的有关用户文件系统的信息(和访问权限)。在网络上搜索类似“HTML 设置自定义下载位置”的内容将显示相关结果。
这里的 好消息 是您可以委派这项工作 Python,这将使您更容易 select 下载位置(因为 Python 是 运行ning 在浏览器上下文之外)。由于您已经需要公开一个 Python 函数才能将 Python 代码转换为 运行,只需将对话框置于该上下文中...类似于:
import tkinter
import eel
from pytube import YouTube
from tkinter import filedialog
root = tkinter.Tk()
root.withdraw() # hide this root window
eel.init("web")
@eel.expose
def download(link):
download_location = filedialog.asksaveasfile() # this will open the Save As dialog
video = YouTube(link)
stream = video.streams.get_highest_resolution()
stream.download(download_location.name)
eel.start("index5.html")
您的目标浏览器 可能 支持一些 non-standard/trick 替代选项,因此如果您需要,请查看 webkitdirectory, File_and_Directory_Entries_API, FileSaver.js, and Using HTML5/JavaScript to generate and save a file 了解更多信息坚持 JavaScript.