婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python基于tkinter制作m3u8視頻下載工具

python基于tkinter制作m3u8視頻下載工具

熱門標簽:地圖制圖標注位置改變是移位嗎 上海機器人外呼系統哪家好 南京銷售外呼系統軟件 蓋州市地圖標注 315電話機器人廣告 浙江電銷卡外呼系統好用嗎 地圖標注的意義點 房產電銷外呼系統 地圖標注微信發送位置不顯示

這是我為了學習tkinter用python 寫的一個下載m3u8視頻的小程序,程序使用了多線程下載,下載后自動合并成一個視頻文件,方便播放。

目前的眾多視頻都是m3u8的播放類型,只要知道視頻的m3u8地址,就可以完美下載整個視頻。

m3u8地址獲取

打開瀏覽器,點開你要獲取地址的視頻

 

重要的來了,右鍵>>審查元素或者按F12也可以

根據開發或測試的實際環境選擇相應的設備,選擇iphone6 plus

選擇好了以后,刷新頁面,點擊漏斗,選擇media,一定刷新之后再點擊,沒出來的話切換幾下選項卡,就能出來了

點擊播放視頻,在下邊就可以看到地址了

程序代碼

# -*- coding: UTF-8 -*-
import sys

sys.path.append("C:\\Python36-32\\Lib\\site-packages")
import tkinter
import re
import urllib3
import threadpool
import threading
import os
import shutil
import time
import glob
from tkinter.ttk import *
from PIL import Image, ImageTk
import pyperclip
from tkinter.filedialog import askdirectory

def get_image(filename,width,height):
    im = Image.open(filename).resize((width,height))
    return ImageTk.PhotoImage(im)


def get_resource_path(relative_path):
    if hasattr(sys, '_MEIPASS'):
        return os.path.join(sys._MEIPASS, relative_path)
    return os.path.join(os.path.abspath("."), relative_path)


def getrealtask(link):
    global key
    rooturl1 = ''
    rooturl2 = ''
    pattern3 = re.compile(r'^.*[\/]', re.M)
    result11 = pattern3.findall(link)
    if result11:
        rooturl1 = result11[0]
    pattern4 = re.compile(r'^http[s]?:\/\/[^\/]*', re.M)
    result114 = pattern4.findall(link)
    if result114:
        rooturl2 = result114[0]
    res = http.request('GET', link)
    content = str(res.data, 'utf8')
    list = content.split('\n')
    reallist = []
    for one in list:
        if one.endswith('"key.key"'):
            keyurl = rooturl1 + "key.key"
            res = http.request('GET', keyurl)
            key = str(res.data, 'utf8')
        if one.endswith('.ts') or one.endswith('.image'):
            if re.match(r'http', one, re.M | re.I):
                reallist.append(one)
            elif re.match(r'\/', one, re.M | re.I):
                reallist.append(rooturl2 + one)
            else:
                reallist.append(rooturl1 + one)
        if one.endswith('.m3u8'):
            if re.match(r'\/', one, re.M | re.I):
                reallist = getrealtask(rooturl2 + one)
            else:
                reallist = getrealtask(rooturl1 + one)
            break
    return reallist

def download_ts(result):
    url = result['url']
    name = result['name']
    num = result['num']
    rootpath = result['root']
    m3u8Name = result['m3u8name']
    t= str(result['total'])
    if num % 10000 == 0:
        print(str(num)+' / '+t)
    basepath = os.path.join(rootpath,m3u8Name)
    fullpath = os.path.join(basepath,name)
    isExist = os.path.exists(fullpath)
    if not isExist:
        http = urllib3.PoolManager(timeout=10.0)
        while(1):
            try:
                f = http.request('GET', url)
                break
            except:
                print("URL ERRO: " + url)
                time.sleep(2)
        d = f.data
        with open(fullpath, "wb") as code:
            code.write(d)
        print("SAVE: " + url)
def clock2(num,path):
    global window
    global key
    v3 = tkinter.StringVar();
    v4 = tkinter.StringVar();
    l3 = tkinter.Label(window, text='', textvariable=v3, font=('Arial', 10))
    l4 = tkinter.Label(window, text='', textvariable=v4, font=('Arial', 10))
    l3.place(x=10, y=130, anchor='nw')
    l4.place(x=10, y=160, anchor='nw')
    v3.set("下載中。。。")
    while(1):
        path_file_number = len(glob.glob(path+'/*.ts'))
        mp4_file_number = len(glob.glob(path + '/*.mp4'))
        numberstr = str(path_file_number) + '/'+str(num)
        v4.set(numberstr)
        if mp4_file_number==1:
            v3.set("下載完成!")
            key = ''
            break

def clock1():
    global v
    global v2
    global rootpath
    m3u8Name = v2.get()
    url = v.get()
    print(url)
    urls = getrealtask(url)
    total = len(urls)
    i = 0
    tasks = []
    tsNames = []
    for one in urls:
        task = {}
        task['root'] = rootpath
        task['m3u8name'] = m3u8Name
        task['url'] = one
        task['num'] = i
        task['total'] = total
        task['name'] = str(i) + '.ts'
        tsNames.append(str(i) + '.ts')
        i = i + 1
        tasks.append(task)
    print('tasks: ' + str(len(tasks)))
    targetpath = os.path.join(rootpath, m3u8Name)
    if not os.path.exists(targetpath):
        os.makedirs(targetpath)
    timer2 = threading.Thread(target=clock2,args=(len(tasks),targetpath))
    timer2.daemon = True
    timer2.start()
    requests = threadpool.makeRequests(download_ts, tasks)
    [task_pool.putRequest(req) for req in requests]
    task_pool.wait()
    mp4targetfile = os.path.join(targetpath, m3u8Name + '.mp4')
    with open(mp4targetfile, 'wb') as f:
        for ts in tsNames:
            tstargetfile = os.path.join(targetpath, ts)
            with open(tstargetfile, 'rb') as mergefile:
                shutil.copyfileobj(mergefile, f)
            print(tstargetfile + ' merged.')
        for tts in tsNames:
            tstargetfile = os.path.join(targetpath, tts)
            os.remove(tstargetfile)
    print(total)

def hit_me():
    global on_hit
    timer = threading.Thread(target=clock1)
    timer.daemon = True
    timer.start()
    return

def choose_dir():
    global v5
    global rootpath
    rootpath = askdirectory()
    v5.set('文件夾: '+rootpath+'/')
    return

def about():
    window = tkinter.Toplevel()
    window.geometry('600x100')# Note Toplevel, NOT Tk.
    msg = 'Rax m3u8下載器 v1.4\n寫這個程序主要是為了學習Tk,順便滿足下自己看視頻的需求。\n家里的移動網絡看在線視頻還是有些卡頓的。 '
    label = tkinter.Label(window, text=msg,font=('Arial', 15))
    label.grid()
def update():
    window = tkinter.Toplevel()
    window.geometry('250x200')
    msg = 'Rax m3u8下載器 v1.5\n可以選擇保存的目錄了\nRax m3u8下載器 v1.4\n增加了菜單欄'
    label = tkinter.Label(window, text=msg,font=('Arial', 13))
    label.place(x=30, y=30, anchor='nw')
def donate():
    window = tkinter.Toplevel()
    window.geometry('500x400')
    msg = '軟件免費使用\n歡迎喜歡此軟件的各位大佬打賞,謝謝。'
    label = tkinter.Label(window, text=msg, font=('Arial', 20))


    i1 = tkinter.PhotoImage(file=get_resource_path("images\\wx.png"))
    i2 = tkinter.PhotoImage(file=get_resource_path("images\\zfb.png"))
    imagelabel = tkinter.Label(window, text='aaa', image=i1, font=('Arial', 10))
    imagelabel2 = tkinter.Label(window, text='vvv', image=i2, font=('Arial', 10))
    imagelabel.place(x=10, y=145, anchor='nw')
    imagelabel2.place(x=230, y=145, anchor='nw')
    label.place(x=40, y=50, anchor='nw')
    window.mainloop()
def clear():
    global v
    v.set("")
def paste():
    global v
    v.set(pyperclip.paste())

key = ''
on_hit = False
rootpath = "d:\\"
#最高50線程
task_pool = threadpool.ThreadPool(50)
http = urllib3.PoolManager(timeout=5.0)
urllib3.disable_warnings()

#主窗口初始化
window = tkinter.Tk()
window.style = Style()
window.style.theme_use("clam")
window.title("Rax m3u8視頻下載器")
window.geometry('500x300')
window.resizable(0,0)


#飛機背景圖
canvas_root = tkinter.Canvas(window,width=500,height=300)
im_root = get_image(get_resource_path('images\\feiji.jpeg'),500,300)
canvas_root.create_image(250,240,image=im_root)
canvas_root.pack()

#各控件初始狀態
l1 = tkinter.Label(window, text='m3u8地址:', font=('Arial', 10))
l1.place(x=10, y=0, anchor='nw')

#   地址欄
v = tkinter.StringVar();
e2 = tkinter.Entry(window, show=None, textvariable = v,font=('Arial', 10),width=40)
v.set('')
e2.place(x=10, y=30, anchor='nw')

#   視頻名稱
l6 = tkinter.Label(window, text = ' 視頻文件名稱:', font=('Arial', 10))
l6.place(x=0, y=90, anchor='nw')

#   視頻名稱欄
v2 = tkinter.StringVar();
e3 = tkinter.Entry(window, show=None, textvariable = v2,font=('Arial', 10),width=15)
v2.set('')
e3.place(x=105, y=90, anchor='nw')

#   保存位置
v5 = tkinter.StringVar();
l2 = tkinter.Label(window, textvariable = v5, font=('Arial', 10))
v5.set('文件夾: D:/')
l2.place(x=10, y=60, anchor='nw')

#   下載按鈕
b = tkinter.Button(window, text='下載', font=('Arial', 10), width=10, command=hit_me)
b.place(x=400, y=100, anchor='nw')

#   選擇路徑按鈕
pathselectButton = tkinter.Button(window, text='選擇路徑', font=('Arial', 10), width=10, command=choose_dir)
pathselectButton.place(x=400, y=60, anchor='nw')

#   清空按鈕
b2 = tkinter.Button(window, text='清空', font=('Arial', 10), width=10, command=clear)
b2.place(x=300, y=25, anchor='nw')

#   粘貼地址按鈕
b3 = tkinter.Button(window, text='粘貼地址', font=('Arial', 10), width=10, command=paste)
b3.place(x=400, y=25, anchor='nw')

#   求捐贈按鈕
l5 = tkinter.Label(window, text='軟件免費使用,歡迎各位喜歡此軟件的大佬打賞,謝謝。\nQQ討論群:519565890', font=('Arial', 10))
l5.place(x=100, y=160, anchor='nw')

window.option_add('*tearOff', False)

#菜單欄
menubar = tkinter.Menu(window)
window['menu'] = menubar
help_menu = tkinter.Menu(menubar)
menubar.add_command(label='捐助作者',command=lambda: donate())
menubar.add_cascade(menu=help_menu, label='幫助')

#幫助 下拉菜單
help_menu.add_command(label='更新內容',command=lambda: update())
help_menu.add_command(label='關于',command=lambda: about())

# 進入消息循環
window.mainloop()

項目地址

https://github.com/raxar81/rax_m3u8_downloader

以上就是python基于tkinter制作m3u8視頻下載工具的詳細內容,更多關于python m3u8視頻下載的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • python用tkinter開發的掃雷游戲
  • python tkinter Entry控件的焦點移動操作
  • python3.7.2 tkinter entry框限定輸入數字的操作
  • python使用tkinter實現透明窗體
  • Python基于Tkinter開發一個爬取B站直播彈幕的工具
  • Python基礎之tkinter圖形化界面學習
  • Python實戰之用tkinter庫做一個鼠標模擬點擊器
  • Python中tkinter的用戶登錄管理的實現
  • python tkinter實現定時關機
  • 上帝為你開了一扇窗之Tkinter常用函數詳解

標簽:金華 臨汾 貴州 赤峰 陽泉 日照 雙鴨山 克拉瑪依

巨人網絡通訊聲明:本文標題《python基于tkinter制作m3u8視頻下載工具》,本文關鍵詞  python,基于,tkinter,制作,m3u8,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python基于tkinter制作m3u8視頻下載工具》相關的同類信息!
  • 本頁收集關于python基于tkinter制作m3u8視頻下載工具的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲天堂精品在线观看| 亚洲国产va精品久久久不卡综合| 亚洲男人的天堂一区二区| 日韩一卡二卡三卡四卡| 在线日韩国产精品| 99久久精品国产精品久久| 国模娜娜一区二区三区| 久久99久久精品欧美| 亚洲综合图片区| 亚洲欧洲无码一区二区三区| 精品成人一区二区三区| 亚洲精品中文在线| 中文字幕不卡一区| 亚洲一区二区三区影院| 亚洲一级二级三级| 日本成人超碰在线观看| 久久精品国产免费看久久精品| 五月婷婷综合激情| 蜜桃av一区二区在线观看| 国产久卡久卡久卡久卡视频精品| 成人av资源在线观看| 欧美视频一区二区三区四区| 91精品国产综合久久久久久久| 久久综合九色综合97婷婷女人| 国产人妖乱国产精品人妖| 国产精品视频一区二区三区不卡| 日韩和的一区二区| av在线综合网| 亚洲欧美日韩综合aⅴ视频| 91看片淫黄大片一级在线观看| 2020国产精品自拍| 不卡的av电影| 亚洲欧洲制服丝袜| 国产精品一色哟哟哟| 亚洲视频在线观看三级| 欧美精品久久久久久久多人混战| 国精产品一区一区三区mba桃花| 亚洲综合在线观看视频| 中文av一区二区| 久久国产尿小便嘘嘘| 在线观看亚洲成人| 久久久国产一区二区三区四区小说 | 日韩电影在线免费| 国产精品福利一区二区三区| 亚洲激情一二三区| 欧美日韩亚洲综合一区| 亚洲国产中文字幕在线视频综合| 91国产丝袜在线播放| 亚洲一区二区三区在线播放| 欧美性受xxxx黑人xyx| 亚洲一区二区三区四区在线观看| 91福利社在线观看| 亚洲成年人影院| 欧美一级黄色录像| 国精品**一区二区三区在线蜜桃| 26uuu色噜噜精品一区二区| 国产激情精品久久久第一区二区| 在线电影欧美成精品| 国产一区二区三区香蕉| 国产精品日产欧美久久久久| 色综合咪咪久久| 久久 天天综合| 欧美激情综合网| 在线影院国内精品| 亚洲va欧美va人人爽午夜| 欧美成人猛片aaaaaaa| 成人晚上爱看视频| 捆绑变态av一区二区三区| 国产亚洲精品久| 日韩视频免费观看高清完整版在线观看 | 在线免费观看日本欧美| 国产在线麻豆精品观看| 亚洲人成7777| 久久精品这里都是精品| 91精选在线观看| av电影天堂一区二区在线| 麻豆精品一区二区综合av| 亚洲黄色在线视频| 国产精品久久久久aaaa| 久久婷婷综合激情| 日韩欧美国产午夜精品| 欧美亚洲禁片免费| 色屁屁一区二区| 99久久综合狠狠综合久久| 国产精品一区二区男女羞羞无遮挡| 亚洲国产成人av网| 一二三区精品福利视频| 亚洲免费观看在线观看| 亚洲精品成人a在线观看| 亚洲日本在线a| 亚洲伦理在线精品| 中文字幕av一区 二区| 国产日本欧美一区二区| 中文文精品字幕一区二区| 久久精品在这里| 日韩美女啊v在线免费观看| 亚洲同性同志一二三专区| 日韩美女视频一区| 亚洲自拍偷拍九九九| 午夜欧美大尺度福利影院在线看| 午夜电影一区二区三区| 婷婷国产在线综合| 精品一区二区三区的国产在线播放| 蜜桃视频第一区免费观看| 国产99久久久国产精品免费看| jlzzjlzz亚洲日本少妇| 717成人午夜免费福利电影| 国产午夜精品一区二区三区视频| 成人欧美一区二区三区| 青青草伊人久久| 在线观看一区二区视频| 久久麻豆一区二区| 亚洲永久免费视频| 菠萝蜜视频在线观看一区| 欧美va亚洲va香蕉在线| 夜夜揉揉日日人人青青一国产精品 | 国产精品天美传媒沈樵| 全国精品久久少妇| 欧美日韩久久久一区| 久久久91精品国产一区二区精品| 亚洲三级小视频| youjizz国产精品| 久久免费看少妇高潮| 玖玖九九国产精品| 91麻豆精品国产91久久久久久久久| 国产精品夫妻自拍| 成人app网站| 亚洲三级在线免费| 欧美在线一区二区| 亚洲综合免费观看高清完整版在线 | 亚洲图片欧美一区| 欧美羞羞免费网站| 亚洲成人精品在线观看| 91精品国产综合久久久久久| 日本免费新一区视频| 日韩女优电影在线观看| 国产露脸91国语对白| 1024国产精品| 欧美电影精品一区二区| 国产成人免费高清| 亚洲综合精品久久| 欧美变态凌虐bdsm| 99免费精品在线| 首页国产欧美日韩丝袜| 2020国产精品久久精品美国| 99久久久精品| 免费观看久久久4p| 午夜日韩在线观看| 欧美日韩卡一卡二| 欧美tickling网站挠脚心| 石原莉奈一区二区三区在线观看 | 国产精品888| 亚洲国产一二三| 久久精品免费在线观看| 欧美图区在线视频| 不卡一区二区三区四区| 久久狠狠亚洲综合| 午夜精品久久久久久久久久| 国产精品久线观看视频| 久久―日本道色综合久久| 欧美肥妇bbw| 欧美日韩一级大片网址| 95精品视频在线| 高清免费成人av| 国产精品一品二品| 日韩不卡一区二区| 视频在线观看一区| 日韩电影免费在线| 日本不卡视频在线观看| 性欧美大战久久久久久久久| 亚洲成a人v欧美综合天堂| 亚洲精品欧美二区三区中文字幕| 国产欧美一区二区精品婷婷| 久久久久国产精品厨房| 精品1区2区在线观看| 国产日韩av一区二区| 久久色成人在线| 中文字幕制服丝袜成人av| 亚洲精品中文字幕乱码三区| 亚洲自拍偷拍麻豆| 日本伊人午夜精品| 懂色av噜噜一区二区三区av| 国产伦精一区二区三区| 久久人人爽人人爽| 久久精品人人做人人爽人人| 久久久久久久综合狠狠综合| 国产亚洲精品bt天堂精选| 国产精品美女久久久久aⅴ | 无码av免费一区二区三区试看| 美女诱惑一区二区| 色综合天天天天做夜夜夜夜做| 欧美大度的电影原声| 亚洲激情图片小说视频| 麻豆国产欧美一区二区三区| 99久久伊人久久99| 久久亚洲一级片| 亚洲成av人**亚洲成av**| 91色在线porny| 经典三级视频一区| 一区二区三区视频在线看|