欢迎光临UUpython
最大、最新、最全的Python代码收集站

[GUI]下载抖音分享出来的链接的视频

这段代码是一个基于 wxPython 的简单的图形界面程序,用于从抖音视频链接中下载视频。用户可以在界面中输入抖音视频链接,然后点击按钮进行下载,下载的结果会显示在界面上。

以下是代码的主要部分:

  1. download_video 函数:该函数用于下载视频文件。它通过请求指定的视频链接,将视频内容保存到指定的文件路径。
  2. get_mid_string 函数:用于从给定的 HTML 内容中提取指定起始字符串和结束字符串之间的内容。
  3. remove_special_characterskeep_characters_before_hash 函数:用于处理视频标题,分别用于去除特殊字符和保留哈希字符前的部分。
  4. download_with_multiprocessing 函数:用于多进程下载视频,获取视频标题和视频链接,并调用 download_video 函数进行下载。
  5. Frame 类:wxPython 程序的主窗口。包括一个文本输入框用于输入视频链接,一个按钮用于触发下载,以及一个用于显示下载结果的文本框。
  6. 按钮1_按钮被单击 方法:按钮点击事件的处理函数。它从编辑框中获取输入的视频链接,使用正则表达式找出链接,然后使用多进程进行视频下载,并将下载结果显示在另一个编辑框中。
  7. myApp 类:wxPython 的应用类,用于启动和运行程序。
  8. if __name__ == '__main__':启动 wxPython 应用程序的入口点。

需要注意的是,代码中使用了 wxPython、requests 和 multiprocessing 模块,确保你已经安装了这些库。此外,多进程下载可以加速下载过程,但也需要根据网络连接和计算机性能来适当调整。

import wx
import re
import requests
from multiprocessing import Pool
 
req=requests.session()
 
def download_video(url, save_path):
    response = requests.get(url, stream=True)
    if response.status_code == 200:
        with open(save_path, 'wb') as file:
            for chunk in response.iter_content(1024):
                file.write(chunk)
        t='下载成功'
    else:
        t='下载失败'
    return t
 
def get_mid_string(html, start_str, end):
    try:
        start = html.find(start_str)
        if start >= 0:
            start += len(start_str)
            end = html.find(end, start)
            if end >= 0:
                return html[start:end].strip()
    except:
        return None
 
def remove_special_characters(text):
    pattern = r'[\\/:*?"<>|]'
    cleaned_text = re.sub(pattern, '', text)
    return cleaned_text
 
def keep_characters_before_hash(text):
    parts = text.split('#', 1)
    return parts[0]
 
def download_with_multiprocessing(url):
    a=req.get('https://api.douyin.wtf/api?url={}'.format(url))
    title = get_mid_string(a.text, '"desc":"', '"')
    title1 = remove_special_characters(title)
    title2 = keep_characters_before_hash(title1)
    video_url = get_mid_string(a.text, 'nwm_video_url":"', '"')
    save_path = f'./{title2}.mp4'
    return download_video(video_url, save_path)
 
class Frame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, title='抖音下载', size=(400, 300), name='frame', style=541072960)
        self.启动窗口 = wx.Panel(self)
        self.Centre()
        self.编辑框1 =  wx.TextCtrl(self.启动窗口, size=(269, 221), pos=(7, 7), value='', name='text', style=1073741856)
        self.标签1 = wx.StaticText(self.启动窗口, size=(80, 107), pos=(292, 16), label='默认保存与\n程序相同文\n件夹', name='staticText', style=2321)
        self.标签1.SetForegroundColour((255, 0, 0, 255))
        self.按钮1 = wx.Button(self.启动窗口, size=(80, 32), pos=(287, 215), label='按钮', name='button')
        self.按钮1.Bind(wx.EVT_BUTTON, self.按钮1_按钮被单击)
        self.编辑框2 = wx.TextCtrl(self.启动窗口, size=(98, 22), pos=(282, 134), value='', name='text', style=16)
 
    def 按钮1_按钮被单击(self, event):
        c=self.编辑框1.GetValue()
        pattern = r'[a-zA-Z]+://[^"\'\s]*'
        urls = re.findall(pattern,c)
        with Pool(len(urls)) as pool:
            results = pool.map(download_with_multiprocessing, urls)
 
        s = '\n'.join(results)
        self.编辑框2.SetValue(s)
 
class myApp(wx.App):
    def OnInit(self):
        self.frame = Frame()
        self.frame.Show(True)
        return True
 
if __name__ == '__main__':
    app = myApp()
    app.MainLoop()
赞(0) 打赏
未经允许不得转载:UUpython » [GUI]下载抖音分享出来的链接的视频
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!