|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Python版本 3.5.2
PyQt5和pyinstaller已经检查并更新到最新版
之前曾经写的一个pyqt5的程序打包exe成功,不过那个程序很小,功能也很简单
由于图片的代码上传无意义,于是上传了百度云,共两个文件video.py 和video_img.py
链接: https://pan.baidu.com/s/1gfN8LJd 密码: fish
video.py为主代码,video_img.py为图片转py后的代码
功能就是一个主流视频网站视频解析播放的功能,借用第三方网站来跳过vip
程序运行未出现任何错误,原理也十分简单
如果有PyQt5的环境则应该可以直接运行
目前想要打包成exe,据查询应该只有pyinstaller支持python3.5,py2exe(已尝试不支持3.5)和cx_freeze(打包后仍出现相同问题)只支持到python3.4
运行命令:
pyinstaller -F -w --path C:\Users\Drug\AppData\Local\Programs\Python\Python35\Lib\site-packages\PyQt5\Qt\bin video.py
报了大量warning(之前写的一个小程序打包时也有大量warning),但成功结束了,然而打开exe自动停止运行并结束
尝试过去掉-F仍然自动停止并结束
百度谷歌了一波,未解决
看了一下论坛内的一个帖子,把__name__ = '__main__'去了,并且引用了全部的库。。仍然有问题
实在没有办法了,于是来求助
希望大家有什么建议,或者尝试成功的,给予我一些意见,我会进行尝试
环境安装好却在python下运行错误的,也可以告诉我
PS:由于程序涉及到网页访问和Flash支持,提示没有安装Flash的。。。嗯。。我找过一波没有其它方法支持flash
目前
self.browser.settings().setAttribute(QtWebEngineWidgets.QWebEngineSettings.PluginsEnabled,True)
在我电脑上可以让我显示Flash,也就是正常播放视频
如果有其它建议也可以告诉我
最次最次,有人安装好py3.4然后用其他工具打包成功的exe,发给我我留个纪念也行。。毕竟是写了一天的代码
嗯,就这样,谢谢大家了
PPS:希望不是代码低级错误导致的,,令人崩溃
video.py代码如下:
- import sys
- import video_img
- from PyQt5 import QtWidgets, QtCore, QtGui,QtWebEngineWidgets
- class Video(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.initUI()
-
- def initUI(self):
- self.setMinimumSize(160,90)
- self.resize(1120,630)
- self.setWindowTitle("视频在线播放")
- self.setWindowIcon(QtGui.QIcon(':/logo.png'))
- self.show()
-
- self.browser = QtWebEngineWidgets.QWebEngineView()
- self.ykurl=""
- self.headurl = ['http://api.baiyug.cn/vip/index.php?url=','http://api.662820.com/xnflv/index.php?url=','http://000o.cc/jx/ty.php?url=','http://tv.visionbang.com/video.php?v=','http://yun.mt2t.com/yun?url=']
- self.headindex=0
- self.html="""
- <h1>优酷视频在线播放</h1>
- <br>
- <h2>支持主流视频网站的视频在线播放,无论是否为会员视频,清晰度无法保证</h2>
- <hr>
- <h4>使用方法:主要通过左上角五个图标,分别介绍如下</h4>
- <h5>添加视频地址:按照提示输入想要观看的视频的地址,确定后自动解析播放</h5>
- <h5>刷新页面:页面加载时间过长且没有报错时,可以尝试刷新</h5>
- <h5>上一个源/下一个源:如果当前视频解析源出现问题,可切换到下一个源尝试播放</h5>
- <h5>全屏:全屏播放视频,按ESC或F进入/退出全屏,</h5>
- <br>
- <hr>
- <br>
- <h4><strong>注意:</strong></h5>
- <h5><strong>1.本产品为内部使用,禁止用作商业传播</strong></h5>
- <h5><strong>2.程序原理为引用第三方网站,并无直接窃取优酷信息的行为</strong></h5>
- <h5><strong>3.有问题可以联系作者</strong></h5>
- <p style="text-align: right;margin-right:5%;margin-top:5%;"><strong>Drug</strong></p>
- <p style="text-align: right;margin-right:5%;">2017/09/12</p>"""
- self.browser.setHtml(self.html)
- self.setCentralWidget(self.browser)
- self.browser.settings().setAttribute(QtWebEngineWidgets.QWebEngineSettings.PluginsEnabled,True)
- self.browser.settings().setAttribute(QtWebEngineWidgets.QWebEngineSettings.JavascriptEnabled,True)
- add = QtWidgets.QAction(QtGui.QIcon(":/add.png"), "添加url", self)
- add.setStatusTip("添加url")
- add.triggered.connect(self.get_url)
- refresh = QtWidgets.QAction(QtGui.QIcon(":/refresh.png"), "刷新", self)
- refresh.setStatusTip("刷新")
- refresh.triggered.connect(self.refresh)
- self.left = QtWidgets.QAction(QtGui.QIcon(":/left.png"), "上一个源", self)
- self.left.setStatusTip("上一个源")
- self.left.triggered.connect(self.change_up)
- self.left.setDisabled(True)
- self.right = QtWidgets.QAction(QtGui.QIcon(":/right.png"), "下一个源", self)
- self.right.setStatusTip("下一个源")
- self.right.triggered.connect(self.change_down)
- full = QtWidgets.QAction(QtGui.QIcon(":/Full_Screen.png"), "全屏显示", self)
- full.setStatusTip("全屏显示")
- full.triggered.connect(self.full_screen)
-
- self.statusBar()
- self.toolbar = self.addToolBar("ALL")
- self.toolbar.addAction(add)
- self.toolbar.addAction(refresh)
-
- self.toolbar.addAction(self.left)
- self.toolbar.addAction(self.right)
- self.toolbar.addAction(full)
- self.setFocus()
-
- def full_screen(self):
- if self.isFullScreen():
- self.showNormal()
- self.toolbar.show()
- self.statusBar().show()
- else:
- self.showFullScreen()
- self.statusBar().hide()
- self.toolbar.hide()
- self.browser.showFullScreen()
- def get_url(self):
- self.setFocus()
- self.ykurl, ok = QtWidgets.QInputDialog.getText(self, "获取url", "请输入视频页面的地址:")
- if ok:
- self.browser.setUrl(QtCore.QUrl(self.headurl[self.headindex]+self.ykurl))
- def refresh(self):
- self.setFocus()
- self.browser.reload()
- def change_down(self):
- self.setFocus()
- if self.headindex>=len(self.headurl)-1:
- self.headindex=len(self.headurl)-1
- self.right.setDisabled(True)
- return
- self.headindex+=1
- self.left.setDisabled(False)
- if self.ykurl!="":
- self.browser.setUrl(QtCore.QUrl(self.headurl[self.headindex]+self.ykurl))
- else:
- self.browser.setHtml(self.html)
- if self.headindex==len(self.headurl)-1:
- self.right.setDisabled(True)
- def change_up(self):
- self.setFocus()
- if self.headindex<=0:
- self.left.setDisabled(True)
- self.headindex=0
- return
- self.headindex-=1
- self.right.setDisabled(False)
- if self.ykurl!="":
- self.browser.setUrl(QtCore.QUrl(self.headurl[self.headindex]+self.ykurl))
- else:
- self.browser.setHtml(self.html)
- if self.headindex==0:
- self.left.setDisabled(True)
- def keyPressEvent(self, event):
- self.setFocus()
- if event.key() == QtCore.Qt.Key_Escape or event.key() == QtCore.Qt.Key_F:
- if self.isFullScreen():
- self.showNormal()
- self.toolbar.show()
- self.statusBar().show()
- else:
- self.showFullScreen()
- self.statusBar().hide()
- self.toolbar.hide()
- def focusOutEvent(self,event):
- self.setFocus()
-
- app=QtWidgets.QApplication(sys.argv)
- Vi=Video()
- app.exit(app.exec_())
-
复制代码
本帖最后由 wei_Y 于 2017-9-13 17:44 编辑
有几个文件没有打包进去,
去PyQt5目录把 QtWebEngineProcess.exe和 resources文件夹里的文件都丢到目录里(这个文件夹里的 文件,不是丢这个目录)。
关于如何调试:
0.不带任何模式。
1. 在cmd下看报错。
比如打包完刚打开它会提示这个错误。
就找QtWebEngineProcess.exe这个文件丢进去。
之后又报错
大概意思就是尝试在C:/Qt/5.6.0/resources里找文件没找到,
C:/Qt/5.6.0里找还是没找到。
在我们打包的目录里还是没找到,于是可能就不能运行了。
剩下的是说translations这个也没找到,这个功能可能就不能运行了。
那我们只要去Qt目录里找resources里的文件把它放到上面三个提到的任意一个位置就行啦。
可看下 http://bbs.fishc.com/thread-82937-1-1.html 其他注意点。
|
|