107 lines
4.1 KiB
Python
107 lines
4.1 KiB
Python
from PIL import Image
|
||
import numpy as np
|
||
import cv2
|
||
import base64
|
||
import io,os
|
||
import requests
|
||
import time,json
|
||
import string,random
|
||
import glob
|
||
##for CeKanYuan
|
||
def get_offlineUrls(taskUrl,offlineFile,jsonfile='SendLog/platformQueryOfftask.json'):
|
||
with open(offlineFile,'r') as fp:
|
||
lines=fp.readlines()
|
||
doneCodes=[line.strip().split(' ')[2] for line in lines]
|
||
try:
|
||
res = requests.get(taskUrl,timeout=10).json()
|
||
offlines=res['data'] ##offlines[0]['code'],offlines[0]['videoUrl']
|
||
with open(jsonfile,'w') as fp:
|
||
json.dump(res,fp, ensure_ascii=False)
|
||
except Exception as ee:
|
||
timestr=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
|
||
print('###line43 %s read taskUrl:%s error:%s '%(timestr,taskUrl,ee))
|
||
offlines=[]
|
||
outOfflines=[]
|
||
for off in offlines:
|
||
off['port']=1935;
|
||
off.update({'name':'off-' +off.pop("code")})
|
||
if off['name'] in doneCodes:
|
||
continue
|
||
off.update({'url': off.pop("videoUrl")})
|
||
outOfflines.append(off)
|
||
#off['url']=off['videoUrl']
|
||
|
||
return outOfflines
|
||
def platurlToJsonfile(taskUrl,jsonfile='SendLog/platformQuery.json'):
|
||
try:
|
||
res = requests.get(taskUrl,timeout=10).json()
|
||
offlines=res['data'] ##offlines[0]['code'],offlines[0]['videoUrl']
|
||
with open(jsonfile,'w') as fp:
|
||
json.dump(res,fp, ensure_ascii=False)
|
||
except Exception as ee:
|
||
timestr=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
|
||
print('###line43 %s read taskUrl:%s error:%s '%(timestr,taskUrl,ee))
|
||
|
||
def get_websource_fromTxt(txtfile):
|
||
with open(txtfile,'r') as fp:
|
||
lines = fp.readlines()
|
||
sources=[ ]
|
||
for line in lines:
|
||
sous={}
|
||
try:
|
||
sps = line.strip().split(' ')
|
||
sous['url']=sps[0];sous['port']=sps[1]
|
||
|
||
#webs.append(sps[0])
|
||
if 'rtmp' in sps[0]:
|
||
name = sps[0].split('/')[4]
|
||
|
||
else:
|
||
name = sps[0][-3:]
|
||
sous['name']='live-'+name.replace('_','')
|
||
sous['port']=sps[1]
|
||
sources.append(sous)
|
||
except Exception as ee:
|
||
|
||
print('####format error : %s, line:%s , in file:%s#####'%(ee,line,txtfile))
|
||
assert len(sources)>0
|
||
return sources
|
||
|
||
def update_websource_offAndLive(platform_query_url,sourceFile,offlineFile,jsonfile='SendLog/platformQuery.json'):
|
||
|
||
#platform_query_url='http://47.96.182.154:9051/api/suanfa/getPlatformInfo'
|
||
txtSource=get_websource_fromTxt(sourceFile)
|
||
try:
|
||
res = requests.get(platform_query_url,timeout=10).json()
|
||
questionUrl = res['data']['questionUrl'] ###直播流时,问题图片的推送地址
|
||
offlineUrl = res['data']['offlineUrl'] ###http离线视频时,问题图片的推送地址
|
||
taskUrl = res['data']['taskUrl'] ###http离线视频时,离线视频存放的地址
|
||
with open(jsonfile,'w') as fp:
|
||
json.dump(res,fp, ensure_ascii=False)
|
||
except Exception as ee:
|
||
timestr=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
|
||
print('######line83: %s: file:geturlPlatform: error %s ,url:%s #####'%(timestr,ee,platform_query_url))
|
||
taskUrl='http://121.40.249.52:9050/api/analyse/getAiInspectionList'
|
||
if taskUrl:
|
||
offlines=get_offlineUrls(taskUrl,offlineFile)
|
||
txtSource.extend(offlines)
|
||
#[{'url': 'rtmp://demoplay.yunhengzhizao.cn/live/THSA_HD5M', 'port': '1935', 'name': 'live-THSAHD5M'}]
|
||
outlist=[]
|
||
for sourss in txtSource :
|
||
source_url = sourss['url']
|
||
vid = cv2.VideoCapture(source_url)
|
||
if vid.isOpened():
|
||
outlist.append( sourss )
|
||
return outlist
|
||
#print('##line65:',txtSource)
|
||
|
||
|
||
|
||
if __name__=='__main__':
|
||
platform_query_url='http://47.96.182.154:9051/api/suanfa/getPlatformInfo'
|
||
sourceFile='../config/source.txt'
|
||
offlineFile='../mintors/offlines/doneCodes.txt'
|
||
jsonfile='../SendLog/platformQuery.json'
|
||
txtSource=update_websource_offAndLive(platform_query_url,sourceFile,offlineFile,jsonfile=jsonfile)
|
||
print(txtSource)
|