吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3698|回复: 5
收起左侧

[Python 原创] python调用you-get加wxpython做gui界面最后pyinstaller打包exe

[复制链接]
gongsui 发表于 2021-4-25 09:59
本帖最后由 gongsui 于 2021-11-28 23:31 编辑

去年学习python时随便玩玩自用的, 然后放在吃灰,  重装系统后懒得再弄.

截图.jpg




you-get调用方法有两种:(我现在自己都看不懂了)

you-get的调用方法:sys.argv + you_get.main()

you-get的python调用方法:you_get.any_download


you-get的参数自己调哈(清晰度\ 下载单个 还是下载列表等等)  .
难点在打包exe ,当时碰到很多问题  ,以下是笔记

pyinstaller打包方法:
pyinstaller -F xx.py --hidden-import=you_get.extractors --hidden-import=you_get.cli_wrapper --hidden-import=you_get.processor --hidden-import=you_get.utl
注:多进程打包后还是有问题 (这个备注我也不知道是什么意思, 可能已经解决 ,可能没解决)
pyinstaller打包 multiprocessing codes时会出现exe多次运行问题

解决方法:
在__main__中添加 multiprocessing.freeze_support()





wx模块请看 https://www.52pojie.cn/forum.php?mod=viewthread&tid=1290699&highlight=wxpython








注: url是每行一个 ,不是用空格隔开(代码写的是每行一个 ,界面文字没改过来)
文件夹也写死在 d:\1文件夹了.  当时是随便写的 ,大家自己改哈
源码如下:

[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# -*- coding:utf-8 -*-
"""
you-get的gui的多进程(process)版本。
 
pyinstaller打包方法:
pyinstaller -F xx.py --hidden-import=you_get.extractors --hidden-import=you_get.cli_wrapper --hidden-import=you_get.processor --hidden-import=you_get.utl
注:多进程打包后还是有问题
"""
 
import wx
import sys
import multiprocessing
from you_get import common as you_get
 
# you-get主程序
def process(url):
    directory = r'D:\1'  # 设置下载目录
    #print(f'Process:{url}')
    sys.argv = ['you_get', '-o', directory, url]  # sys传递参数执行下载,就像在命令行一样 ‘-o’后面跟保存目录。
    you_get.main()
 
# 可视化代码,大部分是用小强wxpython工具自动生成的。
class Frame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, title='you-get-gui', size=(400, 300),name='frame',style=541072384)
        self.启动窗口 = wx.Panel(self)
        self.Centre()
        self.编辑框1 = wx.TextCtrl(self.启动窗口,size=(300, 230),pos=(5, 25),value='',name='text',style=1073741856)
        self.按钮1 = wx.Button(self.启动窗口,size=(119, 50),pos=(314, 125),label='按钮',name='button')
        self.按钮1.Bind(wx.EVT_BUTTON,self.按钮1_按钮被单击)
        self.标签1 = wx.StaticText(self.启动窗口, size=(200, 20), pos=(-25, 5), label='Urls:(多个用空格隔开)', name='staticText', style=2321)
 
 
 
    def 按钮1_按钮被单击(self,event):
        print('按钮1,按钮被单击')
        #url = ['https://v.qq.com/x/page/e0907ffjn2i.html?','https://v.qq.com/x/page/v0907no9vxe.html?']
 
        # 编辑框每个链接一行,可多行。# 按换行符分割
        urls = self.编辑框1.Value
        url = urls.split('\n')
        for i in range(len(url)):
            # 多线程调用 process函数,参数url[i] 传入进去。url[i]即每个链接
            p = multiprocessing.Process(target=process, args=(url[i],))  # target是函数名; args是函数的参数,注:是元组,要用()
            p.start()
 
class myApp(wx.App):
    def  OnInit(self):
        self.iDmfbdvaNk = Frame()
        self.iDmfbdvaNk.Show(True)
        return True
 
if __name__ == '__main__':
    multiprocessing.freeze_support()
    app = myApp()
    app.MainLoop()
# 可视化代码end

免费评分

参与人数 1热心值 +1 收起 理由
Tony2009 + 1 我很赞同!

查看全部评分

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

大兵马元帅 发表于 2021-4-25 10:33
太麻烦了,Python真的好麻烦
Cool_Breeze 发表于 2021-4-25 10:44
老道创 发表于 2021-4-25 10:55
xq2581 发表于 2022-4-9 16:40
WX 是什么
JJ11840131 发表于 2022-4-9 18:02
谢谢 真的太好用了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-7-14 15:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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