吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1912|回复: 49
收起左侧

[Python 原创] 三次改进,用python分享链接多进程下载,添加打包下载防止重启

[复制链接]
qianaonan 发表于 2023-7-28 11:57
本帖最后由 qianaonan 于 2023-8-9 13:33 编辑

先上效果图
微信截图_20230728115424.png
下载速度是根据自身网速来,网速慢程序会未响应,静等下载好后就恢复正常了。
在此感谢Evil0ctal在GitHub提供的项目,项目地址:https://github.com/Evil0ctal/Douyin_TikTok_Download_API
接下来上代码
[Python] 纯文本查看 复制代码
import wx
import re
import requests
import multiprocessing
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(10) as pool:#如果报错修改为len(urls)
            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__':
    multiprocessing.freeze_support()#添加防止多进程打包后重启
    app = myApp()
    app.MainLoop()

在这个代码中我加了wx的ui界面,直接粘贴抖音分享链接到文本框,然后点击按钮,按钮上边会提示下载成功还是下载失败。(就是粘贴出来是像这个样子的1.74 qrr:/ 上班不摸鱼,脑袋有问题# 职场# 办公室# 摸鱼# 双标# 剧情  https://v.douyin.com/iE1hcfY/ 复制此链接,打开Dou音搜索,直接观看视频!别复制错了,复制错了会卡死重启程序就解决了。
二次修改:在上一次代码中加入下载多进程,提高下载速度。

三次修改:添加代码multiprocessing.freeze_support()防止打包后多进程下载无响应重启见有的论友,不会打包使用,这里打包链接:https://wwkr.lanzout.com/ivdiP14uzxod
QQ录屏20230809103754.gif
成品试验
1690515727881.jpg

免费评分

参与人数 2吾爱币 +6 热心值 +1 收起 理由
zhuzhang + 1 谢谢@Thanks!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| qianaonan 发表于 2023-7-30 12:41
lovlss 发表于 2023-7-29 11:58
pyinstaller库我装好了。现在不知道py文件是哪个。。。是github上那个项目中某个文件吗?还是说把你的代 ...

你安装了requests、wxpython库了么?打包是打包我发的这几行代码,不是项目,如果这个都听不懂,那我就没办法了
 楼主| qianaonan 发表于 2023-7-29 11:49
lovlss 发表于 2023-7-28 19:13
大佬,我在打包的时候,图中的“merge.py”我应该填哪个啊?

这搜的教程,安装pyinstaller这个库,然后把这个py文件复制到某个文件夹里,在文件夹路径哪儿把路径删掉输入cmd,跳出cmd命令窗,输入pyinstaller -F 你的py文件名称包括你的后缀。
 楼主| qianaonan 发表于 2023-7-28 18:01
lovlss 发表于 2023-7-28 17:41
好吧,,对小白来说有点难哎

你看一下pyinstaller的教程吧,很简单的。
 楼主| qianaonan 发表于 2023-7-28 12:09
wasm2023 发表于 2023-7-28 12:07
收费的那种可以不

你看看有没有分享功能,你可以试试,我没买过所以不太清楚
wasm2023 发表于 2023-7-28 12:07
收费的那种可以不
shengeriji 发表于 2023-7-28 12:09
不错不错,大哥能不能帮我看看这个代码问题出现在哪里吗?https://www.52pojie.cn/thread-1814374-1-1.html
 楼主| qianaonan 发表于 2023-7-28 12:12
shengeriji 发表于 2023-7-28 12:09
不错不错,大哥能不能帮我看看这个代码问题出现在哪里吗?https://www.52pojie.cn/thread-1814374-1-1.html

打不开打不开
ckrwsx 发表于 2023-7-28 12:19
为啥子我打不开啊
andy512 发表于 2023-7-28 12:19
是不是无水印的啊,下载看看
shengeriji 发表于 2023-7-28 12:27

现在可以了,刚才帖子在审核
bohong65 发表于 2023-7-28 12:31
这个好像不可以换行实现批量下载
VGT-dy 发表于 2023-7-28 12:37

不是无水印的啊,下载看看先
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表