Я пытаюсь написать приложение, которое позволит вам одновременно загружать множество видео (или аудио) с Youtube, используя Python, в частности библиотеки tkinter и pytube. Когда я запускаю его как файл .py, все идет идеально. Однако, когда я превращаю его в .exe (с помощью auto-py-to-exe), возникает проблема, хотя все остальное работает, кнопка «Загрузить» абсолютно ничего не делает.
Хочу уточнить, при нажатии кнопки "Скачать" никакой ошибки не выскакивает, просто это не работает.
Вот весь код. п>
# importing packages
from pytube import YouTube
import tkinter as tk
from tkinter import filedialog, messagebox
WIDTH = "500"
HEIGHT = "300"
dir = ""
url_list = []
root = tk.Tk()
root.geometry(WIDTH + "x" + HEIGHT)
root.resizable(False, True)
root.title("Youtube Downloader")
audio = tk.BooleanVar()
single_song = tk.BooleanVar()
def download(url, dir, audio):
yt = YouTube(url=url)
if audio.get():
video = yt.streams.filter(only_audio=True).first()
else:
video = yt.streams.get_highest_resolution()
video.download(output_path=dir)
if single_song.get():
messagebox.showinfo("Done", yt.title + " has been successfully downloaded.")
def change_value(var):
if var:
var = False
else:
var = True
def get_dir():
global dir
dir = filedialog.askdirectory()
def add(url):
global url_list
url_list.append(url)
def display():
global url_list
for child in frm_disp.winfo_children():
child.destroy()
for url in url_list:
label = tk.Label(frm_disp, text=url)
label.pack()
def clear():
global url_list
url_list = []
for child in frm_disp.winfo_children():
child.destroy()
def download_all(dir, audio):
global url_list
if len(url_list) == 0:
messagebox.showwarning("URL","Please write a URL")
return
if dir == "":
messagebox.showwarning("Directory", "Please select a directory")
return
for url in url_list:
download(url, dir, audio)
messagebox.showinfo("Done", "All songs downloaded correctly")
frm = tk.Frame(root, width=480, height=480)
frm.pack()
lbl = tk.Label(root, text="List of songs to be donwloaded (Press \"Display\" to refresh):", pady=10)
lbl.pack()
frm_disp = tk.Frame(root, width=480, height=100, highlightthickness=2,highlightbackground="black")
frm_disp.pack()
btsingle_song = tk.Checkbutton(root, variable=single_song, text="Warn when each song has been downloaded")
btsingle_song.pack()
guide = tk.Label(frm, text="Write the URL of the Youtube video:")
guide.grid(row=0, column=0, columnspan=3,pady=10)
bturl = tk.Entry(frm, width=75)
bturl.grid(row=1, column=0, columnspan=3)
dwn = tk.Button(frm, command= lambda: download_all(dir, audio), width=15, text="Download")
dwn.grid(row=2, column=1)
btdir = tk.Button(frm, command=get_dir, width=15, text="Directory")
btdir.grid(row=2, column=0)
btadd = tk.Button(frm, command= lambda: add(bturl.get()), width=15, text="Add")
btadd.grid(row=3, column=0)
disp = tk.Button(frm, command=display, width=15, text="Display")
disp.grid(row=3, column=1)
clr = tk.Button(frm, command=clear, width=15, text="Clear")
clr.grid(row=3, column=2)
only_audio = tk.Checkbutton(frm, text="Only audio (as mp3)", variable=audio)
only_audio.grid(row=2, column=2)
root.update()
root.mainloop()
Я пытался прикрепить папки в auto-py-to-exe, чтобы проверить, не связаны ли проблемы с модулями, но это не сработало. Я также пробовал запустить его в виртуальной среде с установленным pytube (поскольку он не установлен на моем компьютере, он установлен в среде окружения), но это тоже не сработало.
Поскольку единственной проблемой является кнопка «Загрузить», я подумал, что, возможно, проблема в pytube, но понятия не имею.
Обновление:
Я сохранил тестирую код, и всякий раз, когда я пытаюсь загрузить видео или аудио, выдается следующая ошибка:
Traceback (most recent call last):
File "tkinter\__init__.py", line 1892, in __call__
File "DonwloadYoutube.py", line 93, in
File "DonwloadYoutube.py", line 71, in download_all
File "DonwloadYoutube.py", line 27, in download
File "pytube\__main__.py", line 296, in streams
File "pytube\__main__.py", line 181, in fmt_streams
File "pytube\extract.py", line 409, in apply_signature
File "pytube\cipher.py", line 30, in __init__
File "re.py", line 252, in compile
File "re.py", line 304, in _compile
File "sre_compile.py", line 764, in compile
File "sre_parse.py", line 950, in parse
File "sre_parse.py", line 443, in _parse_sub
File "sre_parse.py", line 668, in _parse
re.error: nothing to repeat at position 2
Я также тестировал исполняемый файл на других машинах, и он тоже выдает эту ошибку, хотя когда я запускаю код, он всегда работает.
Я пытаюсь написать приложение, которое позволит вам одновременно загружать множество видео (или аудио) с Youtube, используя Python, в частности библиотеки tkinter и pytube. Когда я запускаю его как файл .py, все идет идеально. Однако, когда я превращаю его в .exe (с помощью auto-py-to-exe), возникает проблема, хотя все остальное работает, кнопка «Загрузить» абсолютно ничего не делает. Хочу уточнить, при нажатии кнопки "Скачать" никакой ошибки не выскакивает, просто это не работает. Вот весь код. п> [code]# importing packages from pytube import YouTube import tkinter as tk from tkinter import filedialog, messagebox
def download(url, dir, audio): yt = YouTube(url=url) if audio.get(): video = yt.streams.filter(only_audio=True).first() else: video = yt.streams.get_highest_resolution() video.download(output_path=dir)
if single_song.get(): messagebox.showinfo("Done", yt.title + " has been successfully downloaded.")
def change_value(var): if var: var = False else: var = True
def get_dir(): global dir dir = filedialog.askdirectory()
def add(url): global url_list url_list.append(url)
def display(): global url_list for child in frm_disp.winfo_children(): child.destroy() for url in url_list: label = tk.Label(frm_disp, text=url) label.pack()
def clear(): global url_list url_list = [] for child in frm_disp.winfo_children(): child.destroy()
def download_all(dir, audio): global url_list if len(url_list) == 0: messagebox.showwarning("URL","Please write a URL") return if dir == "": messagebox.showwarning("Directory", "Please select a directory") return
for url in url_list: download(url, dir, audio)
messagebox.showinfo("Done", "All songs downloaded correctly")
[/code] Я пытался прикрепить папки в auto-py-to-exe, чтобы проверить, не связаны ли проблемы с модулями, но это не сработало. Я также пробовал запустить его в виртуальной среде с установленным pytube (поскольку он не установлен на моем компьютере, он установлен в среде окружения), но это тоже не сработало. Поскольку единственной проблемой является кнопка «Загрузить», я подумал, что, возможно, проблема в pytube, но понятия не имею. Обновление: Я сохранил тестирую код, и всякий раз, когда я пытаюсь загрузить видео или аудио, выдается следующая ошибка: [code]Traceback (most recent call last): File "tkinter\__init__.py", line 1892, in __call__ File "DonwloadYoutube.py", line 93, in File "DonwloadYoutube.py", line 71, in download_all File "DonwloadYoutube.py", line 27, in download File "pytube\__main__.py", line 296, in streams File "pytube\__main__.py", line 181, in fmt_streams File "pytube\extract.py", line 409, in apply_signature File "pytube\cipher.py", line 30, in __init__ File "re.py", line 252, in compile File "re.py", line 304, in _compile File "sre_compile.py", line 764, in compile File "sre_parse.py", line 950, in parse File "sre_parse.py", line 443, in _parse_sub File "sre_parse.py", line 668, in _parse re.error: nothing to repeat at position 2 [/code] Я также тестировал исполняемый файл на других машинах, и он тоже выдает эту ошибку, хотя когда я запускаю код, он всегда работает.
Я использую pydantic для загрузки данных из файлов JSON, которые могут иметь разные параметры, в этом примере — x или y. Я использую класс Loader для загрузки их в модели pydantic, чтобы иметь возможность проверять их во время выполнения, но я не...
Я пытаюсь подключиться к другому компьютеру с помощью функций PHP ssh2. Я знаю, что ключи ssh были созданы без паролей и распределены правильно, я могу подключиться к серверу через терминал user@host через терминал на моем компьютере.
class Solution
{
private:
void helper(Node* root,vector& ans){
if(root == nullptr){
return;
}
helper(root->left,ans);
ans.push_back(root->data);
helper(root->right,ans);
}
public:
//Function to check if two trees are identical.
bool isIdentical(Node...