VodHlsService.py 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. # @Author : Rocky
  2. # @File : VodHlsService.py
  3. # @Time : 2023/2/1 15:57
  4. import datetime
  5. from Model.models import VodHlsMon, VodHlsTues, VodHlsWed, VodHlsThur, VodHlsFri, VodHlsSat, VodHlsSun
  6. from Service.CommonService import CommonService
  7. from django.db.models import Count
  8. class SplitVodHlsObject:
  9. # VodHls分表功能类
  10. def creat_vod_hls_data(self, **kwargs):
  11. """
  12. 分表保存云存信息数据
  13. """
  14. start_time = kwargs.get('start_time')
  15. week = datetime.datetime.fromtimestamp(int(start_time)).isoweekday()
  16. if week == 1:
  17. VodHlsMon.objects.create(**kwargs)
  18. elif week == 2:
  19. VodHlsTues.objects.create(**kwargs)
  20. elif week == 3:
  21. VodHlsWed.objects.create(**kwargs)
  22. elif week == 4:
  23. VodHlsThur.objects.create(**kwargs)
  24. elif week == 5:
  25. VodHlsFri.objects.create(**kwargs)
  26. elif week == 6:
  27. VodHlsSat.objects.create(**kwargs)
  28. elif week == 7:
  29. VodHlsSun.objects.create(**kwargs)
  30. def del_vod_hls_data(self, **kwargs):
  31. """
  32. 分表删除云存信息数据
  33. """
  34. VodHlsMon.objects.filter(**kwargs).delete()
  35. VodHlsTues.objects.filter(**kwargs).delete()
  36. VodHlsWed.objects.filter(**kwargs).delete()
  37. VodHlsThur.objects.filter(**kwargs).delete()
  38. VodHlsFri.objects.filter(**kwargs).delete()
  39. VodHlsSat.objects.filter(**kwargs).delete()
  40. VodHlsSun.objects.filter(**kwargs).delete()
  41. def get_vod_hls_data(self, **kwargs):
  42. """
  43. 分表获取云存信息数据
  44. @return: vod_hls
  45. """
  46. vod_hls = VodHlsMon.objects.filter(pk=-1)
  47. if 'start_time' in kwargs:
  48. start_time = kwargs.get('start_time')
  49. week = datetime.datetime.fromtimestamp(int(start_time)).isoweekday()
  50. if week == 1:
  51. vod_hls = VodHlsMon.objects.filter(**kwargs)
  52. elif week == 2:
  53. vod_hls = VodHlsTues.objects.filter(**kwargs)
  54. elif week == 3:
  55. vod_hls = VodHlsWed.objects.filter(**kwargs)
  56. elif week == 4:
  57. vod_hls = VodHlsThur.objects.filter(**kwargs)
  58. elif week == 5:
  59. vod_hls = VodHlsFri.objects.filter(**kwargs)
  60. elif week == 6:
  61. vod_hls = VodHlsSat.objects.filter(**kwargs)
  62. elif week == 7:
  63. vod_hls = VodHlsSun.objects.filter(**kwargs)
  64. return vod_hls
  65. if 'start_time__range' in kwargs:
  66. start_time, end_time = kwargs.get('start_time__range')
  67. vod_hls_mon = VodHlsMon.objects.filter(pk=-1)
  68. vod_hls_tus = VodHlsTues.objects.filter(pk=-1)
  69. vod_hls_wed = VodHlsWed.objects.filter(pk=-1)
  70. vod_hls_thur = VodHlsThur.objects.filter(pk=-1)
  71. vod_hls_fri = VodHlsFri.objects.filter(pk=-1)
  72. vod_hls_sat = VodHlsSat.objects.filter(pk=-1)
  73. vod_hls_sun = VodHlsSun.objects.filter(pk=-1)
  74. start_time = datetime.datetime.fromtimestamp(int(start_time))
  75. end_time = datetime.datetime.fromtimestamp(int(end_time))
  76. time_list = CommonService.cutting_time(start_time, end_time, 'day')
  77. day_list = []
  78. for time_item in time_list:
  79. week = datetime.datetime.fromtimestamp(int(time_item[0])).isoweekday()
  80. if week not in day_list:
  81. day_list.append(week)
  82. for week in day_list:
  83. if week == 1:
  84. vod_hls_mon = VodHlsMon.objects.filter(**kwargs)
  85. elif week == 2:
  86. vod_hls_tus = VodHlsTues.objects.filter(**kwargs)
  87. elif week == 3:
  88. vod_hls_wed = VodHlsWed.objects.filter(**kwargs)
  89. elif week == 4:
  90. vod_hls_thur = VodHlsThur.objects.filter(**kwargs)
  91. elif week == 5:
  92. vod_hls_fri = VodHlsFri.objects.filter(**kwargs)
  93. elif week == 6:
  94. vod_hls_sat = VodHlsSat.objects.filter(**kwargs)
  95. elif week == 7:
  96. vod_hls_sun = VodHlsSun.objects.filter(**kwargs)
  97. vod_hls = vod_hls.union(vod_hls_mon, vod_hls_tus, vod_hls_wed, vod_hls_thur, vod_hls_fri, vod_hls_sat,
  98. vod_hls_sun)
  99. return vod_hls
  100. vod_hls_mon = VodHlsMon.objects.filter(**kwargs)
  101. vod_hls_tus = VodHlsTues.objects.filter(**kwargs)
  102. vod_hls_wed = VodHlsWed.objects.filter(**kwargs)
  103. vod_hls_thur = VodHlsThur.objects.filter(**kwargs)
  104. vod_hls_fri = VodHlsFri.objects.filter(**kwargs)
  105. vod_hls_sat = VodHlsSat.objects.filter(**kwargs)
  106. vod_hls_sun = VodHlsSun.objects.filter(**kwargs)
  107. 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)
  108. return vod_hls
  109. def get_vod_hls_date(self, **kwargs):
  110. """
  111. 分表获取云存日期信息数据
  112. @return: vod_hls
  113. """
  114. vod_hls_mon = VodHlsMon.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
  115. 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
  116. vod_hls_tus = VodHlsTues.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
  117. 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
  118. vod_hls_wed = VodHlsWed.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
  119. 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
  120. vod_hls_thur = VodHlsThur.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
  121. 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
  122. vod_hls_fri = VodHlsFri.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
  123. 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
  124. vod_hls_sat = VodHlsSat.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
  125. 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
  126. vod_hls_sun = VodHlsSun.objects.extra(select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values(
  127. 'date').filter(**kwargs).annotate(count=Count('start_time')).order_by('-date')
  128. vod_hls = vod_hls_mon.union(vod_hls_tus, vod_hls_wed, vod_hls_thur, vod_hls_fri, vod_hls_sat, vod_hls_sun)
  129. return vod_hls