亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python 使用tkinter+you-get實現(xiàn)視頻下載器

 更新時間:2020年11月17日 16:36:22   作者:gudu12306  
這篇文章主要介紹了python 使用tkinter+you-get實現(xiàn)視頻下載器,幫助大家方便的下載視頻資源,感興趣的朋友可以了解下

運行效果:

完整代碼

from tkinter import *
import tkinter.messagebox
import base64
from tkinter import filedialog
from tkinter.scrolledtext import ScrolledText
import subprocess as sub
import threading
import os

top = Tk()
top.title("歡迎關(guān)注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"])

#獲取屏幕尺寸以計算布局參數(shù),使窗口居屏幕中央,其中width和height為界面寬和高
width=700
height=700
screenwidth = top.winfo_screenwidth() 
screenheight = top.winfo_screenheight() 
alignstr = '%dx%d+%d+%d' % (width, height, (screenwidth-width)/2, (screenheight-height)/2)  
top.geometry(alignstr)

#阻止窗口調(diào)整大小
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=='
#設(shè)置窗口圖標
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)

#下載函數(shù)
def download():
  tkinter.messagebox.showinfo(title='Hi', message='已經(jīng)開始下載,耐性等待請勿重復點擊')
  #從輸入框獲取視頻鏈接
  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結(jié)果重定向到tkinterGUI,即將命令行的結(jié)果顯示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界面卡死,創(chuàng)建線程函數(shù)
def thread_it(func, *args):
  # 創(chuàng)建
  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實現(xiàn)視頻下載器的詳細內(nèi)容,更多關(guān)于python視頻下載器的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python中的yeild關(guān)鍵字提高代碼執(zhí)行效率場景實例探究

    Python中的yeild關(guān)鍵字提高代碼執(zhí)行效率場景實例探究

    在Python編程語言中,yeild是一個非常實用的關(guān)鍵字,它不僅可以幫助你編寫更加簡潔的代碼,還可以提高代碼的執(zhí)行效率,本文將詳細介紹yeild在Python中的使用方法,并通過示例代碼進行演示,讓我們一起來探索這個強大的關(guān)鍵字吧
    2024-01-01
  • python自動打開瀏覽器下載zip并提取內(nèi)容寫入excel

    python自動打開瀏覽器下載zip并提取內(nèi)容寫入excel

    這篇文章主要給大家介紹了關(guān)于python自動打開瀏覽器下載zip并提取內(nèi)容寫入excel的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • 簡單了解python協(xié)程的相關(guān)知識

    簡單了解python協(xié)程的相關(guān)知識

    這篇文章主要介紹了簡單了解python協(xié)程的相關(guān)知識,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • 詳解如何用python實現(xiàn)一個簡單下載器的服務端和客戶端

    詳解如何用python實現(xiàn)一個簡單下載器的服務端和客戶端

    這篇文章主要介紹了詳解如何用python實現(xiàn)一個簡單下載器的服務端和客戶端,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • 使用TensorFlow實現(xiàn)簡單線性回歸模型

    使用TensorFlow實現(xiàn)簡單線性回歸模型

    這篇文章主要為大家詳細介紹了使用TensorFlow實現(xiàn)簡單線性回歸模型,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 在pycharm中文件取消用 pytest模式打開的操作

    在pycharm中文件取消用 pytest模式打開的操作

    這篇文章主要介紹了在pycharm中文件取消用 pytest模式打開的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Python常用基礎(chǔ)模塊之os.path模塊詳解

    Python常用基礎(chǔ)模塊之os.path模塊詳解

    這篇文章主要介紹了Python常用基礎(chǔ)模塊之os.path模塊詳解,os模塊的子模塊os.path 是專門用于進行路徑操作的模塊,常用的路徑操作主要有判斷目錄是否存在、創(chuàng)建目錄、刪除目錄和遍歷目錄等,需要的朋友可以參考下
    2023-08-08
  • python進度條庫tqdm的基本操作方法

    python進度條庫tqdm的基本操作方法

    這篇文章主要介紹了python進度條庫tqdm的基本操作方法,tqdm實時輸出處理進度而且占用的CPU資源非常少,支持windows、Linux、mac等系統(tǒng),支持循環(huán)處理、多進程、遞歸處理、還可以結(jié)合linux的命令來查看處理情況等優(yōu)點,下面對其更多內(nèi)容詳細介紹,需要的朋友可以參考一下
    2022-03-03
  • Python heapq使用詳解及實例代碼

    Python heapq使用詳解及實例代碼

    這篇文章主要介紹了Python heapq使用詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • OpenCV?讀取圖像imread的使用詳解

    OpenCV?讀取圖像imread的使用詳解

    這篇文章主要介紹了OpenCV?讀取圖像imread的使用詳解,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-09-09

最新評論