代码碎片记录
2016-12-29 12:10
190 查看
print('--------talkShowCNParse') self.talkShowCNParse(QUrl(sourceUrl).adjusted(QUrl.RemoveQuery).toString())
@pyqtSlot()
def talkShowCNParse(self, url):
if url not in self.sourceUrl2DownloadItem.keys():
self.parseProgress.show()
self.trayIcon.showMessage('正在获取视频下载链接', '')
data = 'w#5A*q/}x% e5fe8bf6' + ' {} {}'.format(QDateTime.currentDateTime().toString('yyyy-MM-dd hh:mm'), url)
h = str(QCryptographicHash.hash(bytes(data, 'utf8'), QCryptographicHash.Md5).toHex(), 'utf8')
# if 'iqiyi.com' in url:
# queryUrl = 'http://www.apifree.net/iqiyi.jsp?id=apifree&{}&single='.format(urllib.parse.urlencode({'url' :url }))
# #'http://www.apifree.net/iqiyi.jsp?id=apifree&{}&single='.format(urllib.parse.urlencode({'url' :url }))
# else :
queryUrl = 'http://talkshowcn.sinaapp.com/api/play.php?user=63&verify={}&format=json&{}'.format(h, urllib.parse.urlencode({'url': url}))
# 解析内核切换
# queryUrl = 'http://114.215.156.204:5678/parse?user=iMath&verify={}&format=json&{}'.format(h,urllib.parse.urlencode({'url' :url }))
# queryUrl = 'http://123.57.189.110:3032/api/play.php?token=e5fe8bf6aaf6b5e728aff2660b509b75&format=json&{}'.format(urllib.parse.urlencode({'url' :url }))
# 用token
# if '56.com' in url:
# queryUrl = 'http://talkshowcn.duapp.com/api/play.php?token=e5fe8bf6aaf6b5e728aff2660b509b75&format=json&url=' + url
# else :
# queryUrl = 'http://talkshowcn.sinaapp.com/api/play.php?token=e5fe8bf6aaf6b5e728aff2660b509b75&format=json&url=' + url
request = QNetworkRequest(QUrl(queryUrl))
request.setRawHeader(b'User-Agent', bytes(userAgent, 'utf8'))
request.setRawHeader(b"referer", bytes(url, 'utf8'))
reply = self.manager.get(request)
reply.finished.connect(self.getWebPageSRC)
def processTalkShowCNResult(self, pageSrc, sourceUrl):
# 加入正在解析的,同时也加入KMUST下不断重试解析的,避免反复提示网络问题print('reply.error()--------------',reply.error())#KMUST下,这里结果同样是0
# print('-processTalkShowCNResult----------pageSrc',pageSrc)
if "success" not in pageSrc: # prevent KMUST下
print(''' "success" not in pageSrc----- talk---failed----ezvideoParse-begin --''', sourceUrl)
self.parseProgress.hide()
self.trayIcon.showMessage('不支持该页面', '可以再试一次或者向群主报告这个问题\n【点击本消息】即可加入QQ群272830154\n{}'.format(sourceUrl))
return
content = json.loads(pageSrc) # 只有"success"在里面了,才能json.loads
# print('content------------',content)
if content["success"] == False:
print(''' talk----content["success"]==False''')
self.parseProgress.hide()
self.trayIcon.showMessage('不支持该页面', '可以再试一次或者向群主报告这个问题\n【点击本消息】即可加入QQ群272830154\n{}'.format(sourceUrl))
return
try:
qualities = content["result"]
videoQualityDict = {}
for quality in qualities:
if quality["format"] != "m3u8":
videoQualityDict[quality["quality"].split('_')[1]] = quality["files"]
# print('videoQualityDict-------------------', videoQualityDict)
netFilesInfo = videoQualityDict.get('超清') or videoQualityDict.get('高清') or videoQualityDict.get('1080P') or videoQualityDict.get('720P')or videoQualityDict.get('标清') or videoQualityDict.get('低清') or videoQualityDict.popitem() # 从高清到低清晰的顺序
# print('netFilesInfo-------------------', netFilesInfo)
videoUrls = []
for fileInfo in netFilesInfo:
videoUrls.append(fileInfo["url"])
downloadInfo = (content["source"]["title"] + '.' + fileInfo["type"], videoUrls)
except Exception: # 可能会有keyerro he typeerror
print(''' talk----keyerro''')
self.parseProgress.hide()
self.trayIcon.showMessage('不支持该页面', '可以再试一次或者向群主报告这个问题\n【点击本消息】即可加入QQ群272830154\n{}'.format(sourceUrl))
else:
# print('--------downloadInfo--------------',downloadInfo)
self.prepareProcessing(downloadInfo, sourceUrl)
相关文章推荐
- label自动换行代码和DataGrid中删除最后一页的记录时出错的解决办法以及HTML小TIPS:强制HTML表格断行
- 没头没尾--项目开发笔记:异常处理与日志记录代码自动生成(工具能生成多少代码!?续一)
- 代码记录
- 由于上班需求申请博客记录常用代码
- IIS6.0日志文件分析代码_2生成访问记录到文本文件
- IIS6.0日志文件分析代码_1生成访问字段记录到数组中
- 用javascript实现记录来宾姓名的代码
- asp.net下经典数据库记录分页代码
- datalist的手写代码更新记录
- 一次代码重构记录
- 记录集内随机取记录的代码
- asp清除浏览器历史记录代码
- 经典数据库记录分页代码
- 一个用隐藏域修删除数据库记录的代码
- ASP中对两个ACCESS库里的不同表的记录拷贝代码,采用ADODB.Command
- 删除记录的代码
- 记录集内随机取记录的代码
- 用javascript实现记录来宾姓名的代码
- IIS6.0日志文件分析代码_1生成访问字段记录到数组中
- IIS6.0日志文件分析代码_2生成访问记录到文本文件