AIlib2/utils/get_offline_url.py

107 lines
4.1 KiB
Python
Raw Normal View History

2025-04-26 10:35:59 +08:00
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)