超火的github项目you-get编写GUI界面并打包为exe文件

超⽕的github项⽬you-get编写GUI界⾯并打包为exe⽂件
前⾔
对于通⽤的下载下载⼯具,you-get是⾮常好⽤的。但是you-get是通过命令⾏进⾏下载的,并且需要配置python环境,对于新⼿有⼀定的⼊⼿困难。
因此我⽤tkinter写了⼀个gui界⾯供⼤家使⽤,并打包成exe⽂件⽅便⼤家使⽤
使⽤⽅法
下载压缩包并解压,其中含有四个⽂件夹
百度云链接
链接:pan.baidu/s/1IEbZtVK_NKC3pqGhbfrJsQ
提取码:love
github地址
github/gudu12306/GUI-for-you-get/releases
<(点这个开始下载)
<(打包的you-get,不⽤理会)
3cookies.sqlite(⾃⼰的会员cookies可以下载b站和腾讯会员视频
4使⽤前必看.md(使⽤教程,可以⽤记事本打开)
开始使⽤
1.打开⽂件
2.在第⼀个输⼊框填⼊视频链接,视频链接可在⽹页中直接复制,其他⽹站也是这样复制
3.选择视频保存位置,这是必须要选的
4.如果下载的是会员视频,需要加载cookies.sqlite⽂件(选填!!)。压缩包中是我的会员cookies⽂件(腾讯与b站会员),其他会员可以⽤⾃⼰电脑上的替换。不知道在哪到cookies.sqlite可以参考
C:\Users\gudu12306\AppData\Roaming\Mozilla\Firefox\Profiles\igqzkax3.default-release\cookies.sqlite
5.点击下载,等⼤约⼀两分钟可以看到开始下载。下载时进度有误差,具体进度可以看看保存⽂件夹下载了多少
6.下载完成之后,可以在保存路径中看到下载完成的视频。
以上即为使⽤⽅法,以下主要记录开发过程中难点
1、打包you-get为exe⽂件
pyinstaller -F --path=src you-get --hidden-import=actors --hidden-import=you_get.cli_wrapper --hidden-import=you_get.processor --hidden-import=you_get.utilaaaaaaaaaaaaaaaaaa
2、设置tkinter窗⼝图标
这段程序可将图标1.ico转换成base64数据
#base64file.py
#将1.ico转换为base64数据,⽣成的数据在icon.py中
import base64
open_icon =open("1.ico","rb")
b64str = base64.b64encode(ad())
open_icon.close()
write_data ="img = '%s'"% b64str
f =open("icon.py","w+")
f.write(write_data)
f.close()
将转换后的base64数据替换到download.py中即可
#随后将base64编码写⼊并⽣成图标
img=b'AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAlJSX/KSkp/y0tLf8wMDD/NjY2/0 RERP+Dg4P/Pz8//x4eHv8hISH/IiIi/x0dHf8rKyv/Ly8v/4SEhP+jo6P/HBwc/yEhIf8mJib/KCgo/yEhIf9gYWH/PT4+/x4eHv8gICD/RERE/0xMTP8rKyv/ICAg/zExMf+ QkJD/qKio/xoaGv8cHBz/HBwc/x4eHv8gICD/LS0t/x8fH/8fHx//LS0t/3l5ef9qamr/SkpK/yQkJP8oKSj/kZGQ/6ysrP8bGxv/HBwc/x0dHf8cHBz/Hx8f/yAgIP8hISH/N TY2/4OFhf+Xl5f/ampq/2JiYv8zNDL/Jycn/5OTk/+wsLD/Gxsb/xwcHP8dHR3/HR0d/x4eHv8hISH/RUVF/6Ghof/BwcH/tLS0/21ubP9FRkX/TU1N/yoqKv+VlZX/s7 Oz/xwcHP8dHR3/HR0d/x0dHf8fHx//Pj4+/66urv/CwsL/ycnJ/7Gxsf89PT3/Nzc3/1tbW/89PT3/eXl5/7e3t/8cHBz/HR0d/x8fH/8fHx//JiYm/4qKiv/MzMz/w8PD/8rKy v+mpqb/QEBA/zs7O/9hYWH/VlZW/1tbW/+5ubn/HBwc/x0dHf8eHh7/ICAg/y0uLv/FxcX/1dXV/9XV1f/W1tb/1NTU/7Ozs/+Kior/bGxs/2JiYv9OTk3/t7e3/xwcHP8 cHBz/HR0d/x8fH/8jJCT/ampp/8rKyv+Xl5b/i4yK/87Ozv/Dw8P/dnZ2/2hoaP9qamr/Q0ND/7e3t/8dHR3/Hh4e/x4eHv8fHx//KSkp/yoqKv9aWlr/dnZ2/4WFhf+np6f /iYmJ/y0tLf9LS0v/Y2Nj/1JSUv+/v7//MzQ0/zExMf8vLy//MzMz/6SkpP86Ojr/Jycn/3Nzc/+3t7b/r6+v/8zMzP9FRUX/MDAw/ysrK/9dXV3/v7+//0hJSf9FRUX/QkND /21ubv9nZ2f/RERE/yIiIv8nJyf/NDQ0/2tra/+en5//Ly8v/yMjI/8qKir/lJSU/729vf9ERUX/QENC/z4/P/9fYGD/V1dX/2lpaf8kJCT/Hx8f/yMjI/8pKSn/LCws/yIiIv8lJSX/ Wlpa/66urv+6urr/MzMz/zExMf8uLi7/RkZG/15eXv8yMjL/KSkp/yoqKv8uLi7/KSkp/ycnJ/88Pj3/MjIy/2hoaP+mpqb/sLCw/yEhIf8gICD/Hx8f/x4eHv8dHR3/NjY2/y YmJv8cHBz/Hx8f/ycnJ/8mJib/aWpp/z4+Pv9tbW3/np6e/6Wlpf8vLy//MzQ0/y8vL/80NTX/MDAw/zU1Nf8gICD/Ghoa/xoaGv8aGhr/Kysr/0dHR/9BQUH/a2tr/5W Ulf+bm5v/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
#设置窗⼝图标
tmp =open("tmp.ico","wb+")
tmp.write(base64.b64decode(img))
tmp.close()
top.iconbitmap("tmp.ico")
3、tkinter控件的定位(主要使⽤pack与place)
3.1pack是⼀种相对布局⽅式,指定控件的相对位置,精确位置由系统完成
3.2place是⼀种绝对定位⽅式,坐标定位,窗⼝左上⾓即为原点
3.3grid布局即为单元格布局⽅式,窗体就像是⼀个表格,横向、纵向划分若⼲格
4、subprocess.Popen()实时输出stdout(正确管道写法)
#将cmd结果重定向到tkinterGUI,即将命令⾏的结果显⽰ScrolledText(滚动⽂本框)控件⾥
p = sub.Popen(cmd,stdin=sub.PIPE,stdout=sub.PIPE, stderr=sub.PIPE,shell=True)
for line in iter(adline, b''):
stext.insert(END,line.decode('UTF-8'))
stext.yview_moveto(1)
if not sub.Popen.poll(p)is None:
if line =="":
break
p.stdout.close()
5、创建线程函数
#为避免在下载时tkinter界⾯卡死,创建线程函数
def thread_it(func,*args):
# 创建
t = threading.Thread(target=func, args=args)
# 守护
t.setDaemon(True)
# 启动
t.start()
6、源代码地址
总结
选择清晰度功能未完成

本文发布于:2024-09-23 03:18:14,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/360817.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:下载   视频   完成   位置
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议