AIlib2/utils/get_offline_url.py

107 lines
4.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)