吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3391|回复: 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] 纯文本查看 复制代码
# -*- 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, 2024-11-25 07:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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