python 使用tkinter+you-get實現視頻下載器
運行效果:
完整代碼
from tkinter import *import tkinter.messageboximport base64from tkinter import filedialogfrom tkinter.scrolledtext import ScrolledTextimport subprocess as subimport threadingimport ostop = Tk()top.title('歡迎關注gudu12306知乎')path1=os.path.dirname(os.path.abspath(__file__))# print(path1)# print(os.environ['Path'])os.environ['PATH'] += os.pathsep + path1# print(os.environ['Path'])#獲取屏幕尺寸以計算布局參數,使窗口居屏幕中央,其中width和height為界面寬和高width=700height=700screenwidth = top.winfo_screenwidth() screenheight = top.winfo_screenheight() alignstr = ’%dx%d+%d+%d’ % (width, height, (screenwidth-width)/2, (screenheight-height)/2) top.geometry(alignstr)#阻止窗口調整大小top.resizable(0,0)img=b’AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAlJSX/KSkp/y0tLf8wMDD/NjY2/0RERP+Dg4P/Pz8//x4eHv8hISH/IiIi/x0dHf8rKyv/Ly8v/4SEhP+jo6P/HBwc/yEhIf8mJib/KCgo/yEhIf9gYWH/PT4+/x4eHv8gICD/RERE/0xMTP8rKyv/ICAg/zExMf+QkJD/qKio/xoaGv8cHBz/HBwc/x4eHv8gICD/LS0t/x8fH/8fHx//LS0t/3l5ef9qamr/SkpK/yQkJP8oKSj/kZGQ/6ysrP8bGxv/HBwc/x0dHf8cHBz/Hx8f/yAgIP8hISH/NTY2/4OFhf+Xl5f/ampq/2JiYv8zNDL/Jycn/5OTk/+wsLD/Gxsb/xwcHP8dHR3/HR0d/x4eHv8hISH/RUVF/6Ghof/BwcH/tLS0/21ubP9FRkX/TU1N/yoqKv+VlZX/s7Oz/xwcHP8dHR3/HR0d/x0dHf8fHx//Pj4+/66urv/CwsL/ycnJ/7Gxsf89PT3/Nzc3/1tbW/89PT3/eXl5/7e3t/8cHBz/HR0d/x8fH/8fHx//JiYm/4qKiv/MzMz/w8PD/8rKyv+mpqb/QEBA/zs7O/9hYWH/VlZW/1tbW/+5ubn/HBwc/x0dHf8eHh7/ICAg/y0uLv/FxcX/1dXV/9XV1f/W1tb/1NTU/7Ozs/+Kior/bGxs/2JiYv9OTk3/t7e3/xwcHP8cHBz/HR0d/x8fH/8jJCT/ampp/8rKyv+Xl5b/i4yK/87Ozv/Dw8P/dnZ2/2hoaP9qamr/Q0ND/7e3t/8dHR3/Hh4e/x4eHv8fHx//KSkp/yoqKv9aWlr/dnZ2/4WFhf+np6f/iYmJ/y0tLf9LS0v/Y2Nj/1JSUv+/v7//MzQ0/zExMf8vLy//MzMz/6SkpP86Ojr/Jycn/3Nzc/+3t7b/r6+v/8zMzP9FRUX/MDAw/ysrK/9dXV3/v7+//0hJSf9FRUX/QkND/21ubv9nZ2f/RERE/yIiIv8nJyf/NDQ0/2tra/+en5//Ly8v/yMjI/8qKir/lJSU/729vf9ERUX/QENC/z4/P/9fYGD/V1dX/2lpaf8kJCT/Hx8f/yMjI/8pKSn/LCws/yIiIv8lJSX/Wlpa/66urv+6urr/MzMz/zExMf8uLi7/RkZG/15eXv8yMjL/KSkp/yoqKv8uLi7/KSkp/ycnJ/88Pj3/MjIy/2hoaP+mpqb/sLCw/yEhIf8gICD/Hx8f/x4eHv8dHR3/NjY2/yYmJv8cHBz/Hx8f/ycnJ/8mJib/aWpp/z4+Pv9tbW3/np6e/6Wlpf8vLy//MzQ0/y8vL/80NTX/MDAw/zU1Nf8gICD/Ghoa/xoaGv8aGhr/Kysr/0dHR/9BQUH/a2tr/5WUlf+bm5v/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==’#設置窗口圖標tmp = open('tmp.ico','wb+')tmp.write(base64.b64decode(img))tmp.close()top.iconbitmap('tmp.ico')os.remove('tmp.ico')#框架布局frame_root=Frame(top)frame_left=Frame(frame_root)frame_left.pack(side=LEFT)# frame_right.pack(side=RIGHT,anchor=N)frame_root.pack()#github源地址tip0_0= Label(frame_left, text=’github源地址:https://github.com/soimort/you-get’,font = (’楷體’,15))tip0_0.pack(padx=10,anchor=W)tip0_1= Label(frame_left, text=’僅用于學習研究使用,用于非法用途概不負責’,font = (’楷體’,15))tip0_1.pack(padx=10,anchor=W)#輸入視頻鏈接tip1= Label(frame_left, text=’請輸入視頻鏈接: ’,font = (’楷體’,25))tip1.pack(padx=10,anchor=W)#視頻鏈接輸入框input_url= Entry(frame_left,bg=’#F7F3EC’)input_url.pack(ipadx=159,ipady=8,padx=20,anchor=W)#請選擇保存位置:tip2=Label(frame_left, text=’請選擇保存位置(必填!): ’,font = (’楷體’,25))tip2.pack(padx=10,anchor=W)#保存地址輸入框input_save_address= Entry(frame_left,bg=’#F7F3EC’)input_save_address.pack(ipadx=159,ipady=8,padx=20,anchor=W)#加載會員cookies:tip3=Label(frame_left, text=’加載會員cookies(下載會員視頻選填!!!):’,bg='red',font = (’楷體’,18))tip3.pack(padx=10,pady=5,anchor=W)tip4=Label(frame_left, text=’cookies文件為火狐瀏覽器的cookies.sqlite文件’,bg='red',font = (’楷體’,18))tip4.pack(padx=10,pady=2,anchor=W)#會員cookies輸入框input_cookies_address= Entry(frame_left,bg=’#F7F3EC’)input_cookies_address.pack(ipadx=159,ipady=8,padx=20,anchor=W)#瀏覽本地文件夾,選擇保存位置def browse_folder(): #瀏覽選擇本地文件夾 save_address = filedialog.askdirectory() #把獲得路徑,插入保存地址輸入框(即插入input_save_address輸入框) input_save_address.insert(0,save_address)#瀏覽本地文件夾,選擇保存位置def browse_cookies(): #瀏覽選擇本地文件夾 cookies_address = filedialog.askopenfilename() #把獲得路徑,插入保存地址輸入框(即插入input_save_address輸入框) input_cookies_address.insert(0,cookies_address)#下載函數def download(): tkinter.messagebox.showinfo(title=’Hi’, message=’已經開始下載,耐性等待請勿重復點擊’) #從輸入框獲取視頻鏈接 url=input_url.get() # 從輸入框獲取保存地址 if input_cookies_address.get()==’’: cookies_address=’’ else: cookies_address='-c '+input_cookies_address.get() save_address=input_save_address.get() cmd = f’you {cookies_address} -o {save_address} {url}’ print(cmd) input_url.delete(0,END) input_save_address.delete(0,END)#將cmd結果重定向到tkinterGUI,即將命令行的結果顯示ScrolledText(滾動文本框)控件里 p = sub.Popen(cmd,stdin=sub.PIPE,stdout=sub.PIPE, stderr=sub.PIPE,shell=True) for line in iter(p.stdout.readline, b’’): stext.insert(END,line.decode(’UTF-8’)) stext.yview_moveto(1) if not sub.Popen.poll(p) is None: if line == '':break p.stdout.close() # while p.poll() is None: # output=p.stdout.readline().decode(’UTF-8’) # stext.insert(END,output) # stext.yview_moveto(1) # if p.poll()!=0: # errors=p.stderr.read().decode(’UTF-8’) # stext.insert(END,errors) # stext.yview_moveto(1)#為避免在下載時tkinter界面卡死,創建線程函數def thread_it(func, *args): # 創建 t = threading.Thread(target=func, args=args) # 守護 !!! t.setDaemon(True) # 啟動 t.start()# “瀏覽文件夾”按鈕browse_folder_button = Button(top, text=’瀏覽’,font = (’楷體’,15),bg='green',command=lambda :thread_it(browse_folder))browse_folder_button.place(relx=0.81,rely=0.24,anchor='nw')#cookies文件按鈕browse_folder_cookies = Button(top, text=’瀏覽’,font = (’楷體’,15),bg='green',command=lambda :thread_it(browse_cookies))browse_folder_cookies.place(relx=0.81,rely=0.40,anchor='nw')# “下載”按鈕download_button = Button(frame_left, text=’下載’,font = (’楷體’,15),command=lambda :thread_it(download))download_button.pack( padx=20,pady=6,anchor=W)# ScrolledText組件(滾動文本框)stext = ScrolledText(frame_left, width=60, height=23, background=’#F7F3EC’)stext.pack(padx=20,anchor=W)top.mainloop()
以上就是python 使用tkinter+you-get實現視頻下載器的詳細內容,更多關于python視頻下載器的資料請關注好吧啦網其它相關文章!
相關文章: