# @Author : Rocky # @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 class SplitVodHlsObject: # VodHls分表功能类 def creat_vod_hls_data(self, **kwargs): """ 分表保存云存信息数据 """ start_time = kwargs.get('start_time') week = datetime.datetime.fromtimestamp(int(start_time)).isoweekday() if week == 1: VodHlsMon.objects.create(**kwargs) elif week == 2: VodHlsTues.objects.create(**kwargs) elif week == 3: VodHlsWed.objects.create(**kwargs) elif week == 4: VodHlsThur.objects.create(**kwargs) elif week == 5: VodHlsFri.objects.create(**kwargs) elif week == 6: VodHlsSat.objects.create(**kwargs) elif week == 7: VodHlsSun.objects.create(**kwargs) def del_vod_hls_data(self, **kwargs): """ 分表删除云存信息数据 """ VodHlsMon.objects.filter(**kwargs).delete() VodHlsTues.objects.filter(**kwargs).delete() VodHlsWed.objects.filter(**kwargs).delete() VodHlsThur.objects.filter(**kwargs).delete() VodHlsFri.objects.filter(**kwargs).delete() VodHlsSat.objects.filter(**kwargs).delete() VodHlsSun.objects.filter(**kwargs).delete() def get_vod_hls_data(self, **kwargs): """ 分表获取云存信息数据 @return: vod_hls """ vod_hls = VodHlsMon.objects.filter(pk=-1) if 'start_time' in kwargs: start_time = kwargs.get('start_time') week = datetime.datetime.fromtimestamp(int(start_time)).isoweekday() if week == 1: vod_hls = VodHlsMon.objects.filter(**kwargs) elif week == 2: vod_hls = VodHlsTues.objects.filter(**kwargs) elif week == 3: vod_hls = VodHlsWed.objects.filter(**kwargs) elif week == 4: vod_hls = VodHlsThur.objects.filter(**kwargs) elif week == 5: vod_hls = VodHlsFri.objects.filter(**kwargs) elif week == 6: vod_hls = VodHlsSat.objects.filter(**kwargs) elif week == 7: vod_hls = VodHlsSun.objects.filter(**kwargs) return vod_hls if 'start_time__range' in kwargs: start_time, end_time = kwargs.get('start_time__range') vod_hls_mon = VodHlsMon.objects.filter(pk=-1) vod_hls_tus = VodHlsTues.objects.filter(pk=-1) vod_hls_wed = VodHlsWed.objects.filter(pk=-1) vod_hls_thur = VodHlsThur.objects.filter(pk=-1) vod_hls_fri = VodHlsFri.objects.filter(pk=-1) vod_hls_sat = VodHlsSat.objects.filter(pk=-1) vod_hls_sun = VodHlsSun.objects.filter(pk=-1) start_time = datetime.datetime.fromtimestamp(int(start_time)) end_time = datetime.datetime.fromtimestamp(int(end_time)) time_list = CommonService.cutting_time(start_time, end_time, 'day') day_list = [] for time_item in time_list: week = datetime.datetime.fromtimestamp(int(time_item[0])).isoweekday() if week not in day_list: day_list.append(week) for week in day_list: if week == 1: vod_hls_mon = VodHlsMon.objects.filter(**kwargs) elif week == 2: vod_hls_tus = VodHlsTues.objects.filter(**kwargs) elif week == 3: vod_hls_wed = VodHlsWed.objects.filter(**kwargs) elif week == 4: vod_hls_thur = VodHlsThur.objects.filter(**kwargs) elif week == 5: vod_hls_fri = VodHlsFri.objects.filter(**kwargs) elif week == 6: vod_hls_sat = VodHlsSat.objects.filter(**kwargs) elif week == 7: 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) return vod_hls vod_hls_mon = VodHlsMon.objects.filter(**kwargs) vod_hls_tus = VodHlsTues.objects.filter(**kwargs) vod_hls_wed = VodHlsWed.objects.filter(**kwargs) vod_hls_thur = VodHlsThur.objects.filter(**kwargs) vod_hls_fri = VodHlsFri.objects.filter(**kwargs) 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) return vod_hls def get_vod_hls_date(self, **kwargs): """ 分表获取云存日期信息数据 @return: vod_hls """ 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') 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') 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') 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') 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') 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') 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') 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