Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import subprocess
- import tkinter as tk
- from tkinter import ttk
- class EntryEx(ttk.Entry):
- """
- Extended entry widget that includes a context menu
- with Copy, Cut and Paste commands.
- """
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self.menu = tk.Menu(self, tearoff=False)
- self.menu.add_command(label="Copy", command=self.popup_copy)
- self.menu.add_command(label="Cut", command=self.popup_cut)
- self.menu.add_separator()
- self.menu.add_command(label="Paste", command=self.popup_paste)
- self.bind("<Button-3>", self.display_popup)
- def display_popup(self, event):
- self.menu.post(event.x_root, event.y_root)
- def popup_copy(self):
- self.event_generate("<<Copy>>")
- def popup_cut(self):
- self.event_generate("<<Cut>>")
- def popup_paste(self):
- self.event_generate("<<Paste>>")
- def download():
- url = str(url_entry.get())
- start_time = str(start_entry.get())
- end_time = str(end_entry.get())
- time_args = ''
- if start_time or end_time:
- time_args = ' --external-downloader-args "ffmpeg_i:'
- if start_time:
- time_args += f' -ss {start_time}'
- if end_time:
- time_args += f' -to {end_time}'
- time_args += '"'
- cmd = f'yt-dlp -f "(bestvideo+bestaudio/best)[protocol!*=dash]" --external-downloader ffmpeg{time_args} "{url}"'
- # print(cmd)
- subprocess.run(cmd)
- # create main window
- root = tk.Tk()
- root.title("yt-dlp-gui")
- # add labels and entries
- tk.Label(root, text="Enter URL").grid(row=0, column=0, padx=10, pady=5)
- url_entry = EntryEx(root)
- url_entry.grid(row=0, column=1, padx=10, pady=5)
- tk.Label(root, text="Start (hh:mm:ss)").grid(row=1, column=0, padx=10, pady=5)
- start_entry = EntryEx(root)
- start_entry.grid(row=1, column=1, padx=10, pady=5)
- tk.Label(root, text="End (hh:mm:ss)").grid(row=2, column=0, padx=10, pady=5)
- end_entry = EntryEx(root)
- end_entry.grid(row=2, column=1, padx=10, pady=5)
- # add button to download video
- tk.Button(root, text="Download", command=download).grid(row=3, column=0, padx=10, pady=5)
- # run GUI
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement