Advertisement
Guest User

yt-dlp helper

a guest
Apr 1st, 2025
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.19 KB | None | 0 0
  1. import subprocess
  2. import tkinter as tk
  3. from tkinter import ttk
  4.  
  5.  
  6. class EntryEx(ttk.Entry):
  7.     """
  8.    Extended entry widget that includes a context menu
  9.    with Copy, Cut and Paste commands.
  10.    """
  11.  
  12.     def __init__(self, *args, **kwargs):
  13.         super().__init__(*args, **kwargs)
  14.         self.menu = tk.Menu(self, tearoff=False)
  15.         self.menu.add_command(label="Copy", command=self.popup_copy)
  16.         self.menu.add_command(label="Cut", command=self.popup_cut)
  17.         self.menu.add_separator()
  18.         self.menu.add_command(label="Paste", command=self.popup_paste)
  19.         self.bind("<Button-3>", self.display_popup)
  20.  
  21.     def display_popup(self, event):
  22.         self.menu.post(event.x_root, event.y_root)
  23.  
  24.     def popup_copy(self):
  25.         self.event_generate("<<Copy>>")
  26.  
  27.     def popup_cut(self):
  28.         self.event_generate("<<Cut>>")
  29.  
  30.     def popup_paste(self):
  31.         self.event_generate("<<Paste>>")
  32.  
  33.  
  34. def download():
  35.     url = str(url_entry.get())
  36.     start_time = str(start_entry.get())
  37.     end_time = str(end_entry.get())
  38.     time_args = ''
  39.     if start_time or end_time:
  40.         time_args = ' --external-downloader-args "ffmpeg_i:'
  41.         if start_time:
  42.             time_args += f' -ss {start_time}'
  43.         if end_time:
  44.             time_args += f' -to {end_time}'
  45.         time_args += '"'
  46.  
  47.     cmd = f'yt-dlp -f "(bestvideo+bestaudio/best)[protocol!*=dash]" --external-downloader ffmpeg{time_args} "{url}"'
  48.     # print(cmd)
  49.     subprocess.run(cmd)
  50.  
  51.  
  52. # create main window
  53. root = tk.Tk()
  54. root.title("yt-dlp-gui")
  55.  
  56. # add labels and entries
  57. tk.Label(root, text="Enter URL").grid(row=0, column=0, padx=10, pady=5)
  58. url_entry = EntryEx(root)
  59. url_entry.grid(row=0, column=1, padx=10, pady=5)
  60.  
  61. tk.Label(root, text="Start (hh:mm:ss)").grid(row=1, column=0, padx=10, pady=5)
  62. start_entry = EntryEx(root)
  63. start_entry.grid(row=1, column=1, padx=10, pady=5)
  64.  
  65. tk.Label(root, text="End (hh:mm:ss)").grid(row=2, column=0, padx=10, pady=5)
  66. end_entry = EntryEx(root)
  67. end_entry.grid(row=2, column=1, padx=10, pady=5)
  68.  
  69. # add button to download video
  70. tk.Button(root, text="Download", command=download).grid(row=3, column=0, padx=10, pady=5)
  71.  
  72. # run GUI
  73. root.mainloop()
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement