|
@@ -2,33 +2,45 @@
|
|
|
# @File : VodHlsService.py
|
|
|
# @Time : 2023/2/1 15:57
|
|
|
import datetime
|
|
|
-from Model.models import VodHlsMon, VodHlsTues, VodHlsWed, VodHlsThur, VodHlsFri, VodHlsSat, VodHlsSun
|
|
|
-from Service.CommonService import CommonService
|
|
|
+
|
|
|
from django.db.models import Count
|
|
|
|
|
|
+from Model.models import VodHlsMon, VodHlsTues, VodHlsWed, VodHlsThur, VodHlsFri, VodHlsSat, VodHlsSun, VodHlsTag, \
|
|
|
+ AiService
|
|
|
+from Service.CommonService import CommonService
|
|
|
+
|
|
|
+
|
|
|
class SplitVodHlsObject:
|
|
|
# VodHls分表功能类
|
|
|
|
|
|
- def creat_vod_hls_data(self, **kwargs):
|
|
|
+ @classmethod
|
|
|
+ def creat_vod_hls_data(cls, **kwargs):
|
|
|
"""
|
|
|
分表保存云存信息数据
|
|
|
"""
|
|
|
start_time = kwargs.get('start_time')
|
|
|
week = datetime.datetime.fromtimestamp(int(start_time)).isoweekday()
|
|
|
if week == 1:
|
|
|
- VodHlsMon.objects.create(**kwargs)
|
|
|
+ vod_hls_mon = VodHlsMon.objects.create(**kwargs)
|
|
|
+ return vod_hls_mon, week
|
|
|
elif week == 2:
|
|
|
- VodHlsTues.objects.create(**kwargs)
|
|
|
+ vod_hls_tues = VodHlsTues.objects.create(**kwargs)
|
|
|
+ return vod_hls_tues, week
|
|
|
elif week == 3:
|
|
|
- VodHlsWed.objects.create(**kwargs)
|
|
|
+ vod_hls_wed = VodHlsWed.objects.create(**kwargs)
|
|
|
+ return vod_hls_wed, week
|
|
|
elif week == 4:
|
|
|
- VodHlsThur.objects.create(**kwargs)
|
|
|
+ vod_hls_thur = VodHlsThur.objects.create(**kwargs)
|
|
|
+ return vod_hls_thur, week
|
|
|
elif week == 5:
|
|
|
- VodHlsFri.objects.create(**kwargs)
|
|
|
+ vod_hls_fri = VodHlsFri.objects.create(**kwargs)
|
|
|
+ return vod_hls_fri, week
|
|
|
elif week == 6:
|
|
|
- VodHlsSat.objects.create(**kwargs)
|
|
|
+ vod_hls_sat = VodHlsSat.objects.create(**kwargs)
|
|
|
+ return vod_hls_sat, week
|
|
|
elif week == 7:
|
|
|
- VodHlsSun.objects.create(**kwargs)
|
|
|
+ vod_hls_sun = VodHlsSun.objects.create(**kwargs)
|
|
|
+ return vod_hls_sun, week
|
|
|
|
|
|
def del_vod_hls_data(self, **kwargs):
|
|
|
"""
|
|
@@ -109,7 +121,8 @@ class SplitVodHlsObject:
|
|
|
vod_hls_sat = VodHlsSat.objects.filter(**kwargs)
|
|
|
vod_hls_sun = VodHlsSun.objects.filter(**kwargs)
|
|
|
|
|
|
- vod_hls = vod_hls.union(vod_hls_mon, vod_hls_tus, vod_hls_wed, vod_hls_thur, vod_hls_fri, vod_hls_sat, vod_hls_sun)
|
|
|
+ vod_hls = vod_hls.union(vod_hls_mon, vod_hls_tus, vod_hls_wed, vod_hls_thur, vod_hls_fri, vod_hls_sat,
|
|
|
+ vod_hls_sun)
|
|
|
return vod_hls
|
|
|
|
|
|
def get_vod_hls_date(self, **kwargs):
|
|
@@ -119,19 +132,46 @@ class SplitVodHlsObject:
|
|
|
"""
|
|
|
|
|
|
vod_hls_mon = VodHlsMon.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
|
|
|
- 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
|
|
|
+ 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
|
|
|
vod_hls_tus = VodHlsTues.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
|
|
|
- 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
|
|
|
+ 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
|
|
|
vod_hls_wed = VodHlsWed.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
|
|
|
- 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
|
|
|
+ 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
|
|
|
vod_hls_thur = VodHlsThur.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
|
|
|
- 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
|
|
|
+ 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
|
|
|
vod_hls_fri = VodHlsFri.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
|
|
|
- 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
|
|
|
+ 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
|
|
|
vod_hls_sat = VodHlsSat.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
|
|
|
- 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
|
|
|
+ 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
|
|
|
vod_hls_sun = VodHlsSun.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
|
|
|
- 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
|
|
|
+ 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
|
|
|
|
|
|
vod_hls = vod_hls_mon.union(vod_hls_tus, vod_hls_wed, vod_hls_thur, vod_hls_fri, vod_hls_sat, vod_hls_sun)
|
|
|
- return vod_hls
|
|
|
+ return vod_hls
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def cloud_vod_hls_tag(cls, vod_id, num, uid, start_time):
|
|
|
+ """
|
|
|
+ 云存回调信息关联标签
|
|
|
+ @param vod_id: 云存回放信息id
|
|
|
+ @param num: 所在表编号
|
|
|
+ @param uid: 设备UID
|
|
|
+ @param start_time: 云存开始时间
|
|
|
+ @return: True | False
|
|
|
+ """
|
|
|
+ try:
|
|
|
+ # 查询设备是否有使用中的ai服务
|
|
|
+ # ai_service_qs = AiService.objects \
|
|
|
+ # .filter(uid=uid, detect_status=1, use_status=1, endTime__gt=start_time) \
|
|
|
+ # .values('detect_group')
|
|
|
+ # if not ai_service_qs.exists():
|
|
|
+ # return False
|
|
|
+ end_time = start_time + 3
|
|
|
+ vod_tag_qs = VodHlsTag.objects.filter(ai_event_time__range=(start_time, end_time), uid=uid)
|
|
|
+ if not vod_tag_qs.exists():
|
|
|
+ return False
|
|
|
+ vod_tag_qs.update(vod_hls_id=vod_id, tab_num=num)
|
|
|
+ return True
|
|
|
+ except Exception as e:
|
|
|
+ print('异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ return False
|