好友
阅读权限20
听众
最后登录1970-1-1
|
本帖最后由 gongsui 于 2021-11-28 23:31 编辑
去年学习python时随便玩玩自用的, 然后放在吃灰, 重装系统后懒得再弄.
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
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|