VodHlsOssService.py 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428
  1. # @Author : Rocky
  2. # @File : VodHlsOssService.py
  3. # @Time : 2023/2/1 15:57
  4. import random
  5. from Ansjer.config import LOGGER
  6. from django.db import connection
  7. from django.db.models import Value, CharField, Count
  8. from Model.models import VodHlsTag
  9. from VodHlsOssModel.models import VodHlsOss01, VodHlsOss02, VodHlsOss03, VodHlsOss04, VodHlsOss05, VodHlsOss06, VodHlsOss07, VodHlsOss08, VodHlsOss09, \
  10. VodHlsOss10, VodHlsOss11, VodHlsOss12, VodHlsOss13, VodHlsOss14, VodHlsOss15, VodHlsOss16, VodHlsOss17, VodHlsOss18, VodHlsOss19, VodHlsOss20, \
  11. VodHlsOss21, VodHlsOss22, VodHlsOss23, VodHlsOss24, VodHlsOss25, VodHlsOss26, VodHlsOss27, VodHlsOss28, VodHlsOss29, VodHlsOss30, VodHlsOss31, \
  12. VodHlsOss32, VodHlsOss33, VodHlsOss34, VodHlsOss35, VodHlsOss36, VodHlsOss37, VodHlsOss38, VodHlsOss39, VodHlsOss40
  13. Vod_Hls_List = [VodHlsOss01, VodHlsOss02, VodHlsOss03, VodHlsOss04, VodHlsOss05, VodHlsOss06, VodHlsOss07, VodHlsOss08, VodHlsOss09, VodHlsOss10,
  14. VodHlsOss11, VodHlsOss12, VodHlsOss13, VodHlsOss14, VodHlsOss15, VodHlsOss16, VodHlsOss17, VodHlsOss18, VodHlsOss19, VodHlsOss20,
  15. VodHlsOss21, VodHlsOss22, VodHlsOss23, VodHlsOss24, VodHlsOss25, VodHlsOss26, VodHlsOss27, VodHlsOss28, VodHlsOss29, VodHlsOss30,
  16. VodHlsOss31, VodHlsOss32, VodHlsOss33, VodHlsOss34, VodHlsOss35, VodHlsOss36, VodHlsOss37, VodHlsOss38, VodHlsOss39, VodHlsOss40]
  17. class SplitVodHlsOssObject:
  18. # VodHlsOss分表功能类
  19. @staticmethod
  20. def creat_vod_hls_data(**kwargs):
  21. """
  22. 分表保存云存信息数据
  23. """
  24. vod_hls_model = random.choice(Vod_Hls_List)
  25. tal_num = Vod_Hls_List.index(vod_hls_model) + 1
  26. vod_hls_obj = vod_hls_model.objects.create(**kwargs)
  27. return vod_hls_obj, tal_num
  28. @staticmethod
  29. def del_vod_hls_data(**kwargs):
  30. """
  31. 分表删除云存信息数据
  32. """
  33. if 'id__in' in kwargs and 'uid' in kwargs:
  34. uid = kwargs['uid']
  35. for vod_id in kwargs['id__in']:
  36. tal_index = int(vod_id[:2]) - 11
  37. temp_id = vod_id[2:]
  38. Vod_Hls_List[tal_index].objects.filter(id=temp_id, uid=uid).delete()
  39. else:
  40. for model in Vod_Hls_List:
  41. model.objects.filter(**kwargs).delete()
  42. def get_vod_hls_data(self, **kwargs):
  43. """
  44. 分表获取云存信息数据
  45. @return: vod_hls
  46. """
  47. if 'type_list' in kwargs and kwargs['type_list']:
  48. kwargs = self.vod_query_param(**kwargs)
  49. if 'id__in' in kwargs:
  50. if 1 in kwargs['id__in']:
  51. vod_hls_01 = VodHlsOss01.objects.filter(id__in=kwargs['id__in'][1]).annotate(
  52. tab_val=Value('11', output_field=CharField()))
  53. else:
  54. vod_hls_01 = VodHlsOss01.objects.none().annotate(tab_val=Value('11', output_field=CharField()))
  55. if 2 in kwargs['id__in']:
  56. vod_hls_02 = VodHlsOss02.objects.filter(id__in=kwargs['id__in'][2]).annotate(
  57. tab_val=Value('12', output_field=CharField()))
  58. else:
  59. vod_hls_02 = VodHlsOss02.objects.none().annotate(tab_val=Value('12', output_field=CharField()))
  60. if 3 in kwargs['id__in']:
  61. vod_hls_03 = VodHlsOss03.objects.filter(id__in=kwargs['id__in'][3]).annotate(
  62. tab_val=Value('13', output_field=CharField()))
  63. else:
  64. vod_hls_03 = VodHlsOss03.objects.none().annotate(tab_val=Value('13', output_field=CharField()))
  65. if 4 in kwargs['id__in']:
  66. vod_hls_04 = VodHlsOss04.objects.filter(id__in=kwargs['id__in'][4]).annotate(
  67. tab_val=Value('14', output_field=CharField()))
  68. else:
  69. vod_hls_04 = VodHlsOss04.objects.none().annotate(tab_val=Value('14', output_field=CharField()))
  70. if 5 in kwargs['id__in']:
  71. vod_hls_05 = VodHlsOss05.objects.filter(id__in=kwargs['id__in'][5]).annotate(
  72. tab_val=Value('15', output_field=CharField()))
  73. else:
  74. vod_hls_05 = VodHlsOss05.objects.none().annotate(tab_val=Value('15', output_field=CharField()))
  75. if 6 in kwargs['id__in']:
  76. vod_hls_06 = VodHlsOss06.objects.filter(id__in=kwargs['id__in'][6]).annotate(
  77. tab_val=Value('16', output_field=CharField()))
  78. else:
  79. vod_hls_06 = VodHlsOss06.objects.none().annotate(tab_val=Value('16', output_field=CharField()))
  80. if 7 in kwargs['id__in']:
  81. vod_hls_07 = VodHlsOss07.objects.filter(id__in=kwargs['id__in'][7]).annotate(
  82. tab_val=Value('17', output_field=CharField()))
  83. else:
  84. vod_hls_07 = VodHlsOss07.objects.none().annotate(tab_val=Value('17', output_field=CharField()))
  85. if 8 in kwargs['id__in']:
  86. vod_hls_08 = VodHlsOss08.objects.filter(id__in=kwargs['id__in'][8]).annotate(
  87. tab_val=Value('18', output_field=CharField()))
  88. else:
  89. vod_hls_08 = VodHlsOss08.objects.none().annotate(tab_val=Value('18', output_field=CharField()))
  90. if 9 in kwargs['id__in']:
  91. vod_hls_09 = VodHlsOss09.objects.filter(id__in=kwargs['id__in'][9]).annotate(
  92. tab_val=Value('19', output_field=CharField()))
  93. else:
  94. vod_hls_09 = VodHlsOss09.objects.none().annotate(tab_val=Value('19', output_field=CharField()))
  95. if 10 in kwargs['id__in']:
  96. vod_hls_10 = VodHlsOss10.objects.filter(id__in=kwargs['id__in'][10]).annotate(
  97. tab_val=Value('20', output_field=CharField()))
  98. else:
  99. vod_hls_10 = VodHlsOss10.objects.none().annotate(tab_val=Value('20', output_field=CharField()))
  100. if 11 in kwargs['id__in']:
  101. vod_hls_11 = VodHlsOss11.objects.filter(id__in=kwargs['id__in'][11]).annotate(
  102. tab_val=Value('21', output_field=CharField()))
  103. else:
  104. vod_hls_11 = VodHlsOss11.objects.none().annotate(tab_val=Value('21', output_field=CharField()))
  105. if 12 in kwargs['id__in']:
  106. vod_hls_12 = VodHlsOss12.objects.filter(id__in=kwargs['id__in'][12]).annotate(
  107. tab_val=Value('22', output_field=CharField()))
  108. else:
  109. vod_hls_12 = VodHlsOss12.objects.none().annotate(tab_val=Value('22', output_field=CharField()))
  110. if 13 in kwargs['id__in']:
  111. vod_hls_13 = VodHlsOss13.objects.filter(id__in=kwargs['id__in'][13]).annotate(
  112. tab_val=Value('23', output_field=CharField()))
  113. else:
  114. vod_hls_13 = VodHlsOss13.objects.none().annotate(tab_val=Value('23', output_field=CharField()))
  115. if 14 in kwargs['id__in']:
  116. vod_hls_14 = VodHlsOss14.objects.filter(id__in=kwargs['id__in'][14]).annotate(
  117. tab_val=Value('24', output_field=CharField()))
  118. else:
  119. vod_hls_14 = VodHlsOss14.objects.none().annotate(tab_val=Value('24', output_field=CharField()))
  120. if 15 in kwargs['id__in']:
  121. vod_hls_15 = VodHlsOss15.objects.filter(id__in=kwargs['id__in'][15]).annotate(
  122. tab_val=Value('25', output_field=CharField()))
  123. else:
  124. vod_hls_15 = VodHlsOss15.objects.none().annotate(tab_val=Value('25', output_field=CharField()))
  125. if 16 in kwargs['id__in']:
  126. vod_hls_16 = VodHlsOss16.objects.filter(id__in=kwargs['id__in'][16]).annotate(
  127. tab_val=Value('26', output_field=CharField()))
  128. else:
  129. vod_hls_16 = VodHlsOss16.objects.none().annotate(tab_val=Value('26', output_field=CharField()))
  130. if 17 in kwargs['id__in']:
  131. vod_hls_17 = VodHlsOss17.objects.filter(id__in=kwargs['id__in'][17]).annotate(
  132. tab_val=Value('27', output_field=CharField()))
  133. else:
  134. vod_hls_17 = VodHlsOss17.objects.none().annotate(tab_val=Value('27', output_field=CharField()))
  135. if 18 in kwargs['id__in']:
  136. vod_hls_18 = VodHlsOss18.objects.filter(id__in=kwargs['id__in'][18]).annotate(
  137. tab_val=Value('28', output_field=CharField()))
  138. else:
  139. vod_hls_18 = VodHlsOss18.objects.none().annotate(tab_val=Value('28', output_field=CharField()))
  140. if 19 in kwargs['id__in']:
  141. vod_hls_19 = VodHlsOss19.objects.filter(id__in=kwargs['id__in'][19]).annotate(
  142. tab_val=Value('29', output_field=CharField()))
  143. else:
  144. vod_hls_19 = VodHlsOss19.objects.none().annotate(tab_val=Value('29', output_field=CharField()))
  145. if 20 in kwargs['id__in']:
  146. vod_hls_20 = VodHlsOss20.objects.filter(id__in=kwargs['id__in'][20]).annotate(
  147. tab_val=Value('30', output_field=CharField()))
  148. else:
  149. vod_hls_20 = VodHlsOss20.objects.none().annotate(tab_val=Value('30', output_field=CharField()))
  150. if 21 in kwargs['id__in']:
  151. vod_hls_21 = VodHlsOss21.objects.filter(id__in=kwargs['id__in'][21]).annotate(
  152. tab_val=Value('31', output_field=CharField()))
  153. else:
  154. vod_hls_21 = VodHlsOss21.objects.none().annotate(tab_val=Value('31', output_field=CharField()))
  155. if 22 in kwargs['id__in']:
  156. vod_hls_22 = VodHlsOss22.objects.filter(id__in=kwargs['id__in'][22]).annotate(
  157. tab_val=Value('32', output_field=CharField()))
  158. else:
  159. vod_hls_22 = VodHlsOss22.objects.none().annotate(tab_val=Value('32', output_field=CharField()))
  160. if 23 in kwargs['id__in']:
  161. vod_hls_23 = VodHlsOss23.objects.filter(id__in=kwargs['id__in'][23]).annotate(
  162. tab_val=Value('33', output_field=CharField()))
  163. else:
  164. vod_hls_23 = VodHlsOss23.objects.none().annotate(tab_val=Value('33', output_field=CharField()))
  165. if 24 in kwargs['id__in']:
  166. vod_hls_24 = VodHlsOss24.objects.filter(id__in=kwargs['id__in'][24]).annotate(
  167. tab_val=Value('34', output_field=CharField()))
  168. else:
  169. vod_hls_24 = VodHlsOss24.objects.none().annotate(tab_val=Value('34', output_field=CharField()))
  170. if 25 in kwargs['id__in']:
  171. vod_hls_25 = VodHlsOss25.objects.filter(id__in=kwargs['id__in'][25]).annotate(
  172. tab_val=Value('35', output_field=CharField()))
  173. else:
  174. vod_hls_25 = VodHlsOss25.objects.none().annotate(tab_val=Value('35', output_field=CharField()))
  175. if 26 in kwargs['id__in']:
  176. vod_hls_26 = VodHlsOss26.objects.filter(id__in=kwargs['id__in'][26]).annotate(
  177. tab_val=Value('36', output_field=CharField()))
  178. else:
  179. vod_hls_26 = VodHlsOss26.objects.none().annotate(tab_val=Value('36', output_field=CharField()))
  180. if 27 in kwargs['id__in']:
  181. vod_hls_27 = VodHlsOss27.objects.filter(id__in=kwargs['id__in'][27]).annotate(
  182. tab_val=Value('37', output_field=CharField()))
  183. else:
  184. vod_hls_27 = VodHlsOss27.objects.none().annotate(tab_val=Value('37', output_field=CharField()))
  185. if 28 in kwargs['id__in']:
  186. vod_hls_28 = VodHlsOss28.objects.filter(id__in=kwargs['id__in'][28]).annotate(
  187. tab_val=Value('38', output_field=CharField()))
  188. else:
  189. vod_hls_28 = VodHlsOss28.objects.none().annotate(tab_val=Value('38', output_field=CharField()))
  190. if 29 in kwargs['id__in']:
  191. vod_hls_29 = VodHlsOss29.objects.filter(id__in=kwargs['id__in'][29]).annotate(
  192. tab_val=Value('39', output_field=CharField()))
  193. else:
  194. vod_hls_29 = VodHlsOss29.objects.none().annotate(tab_val=Value('39', output_field=CharField()))
  195. if 30 in kwargs['id__in']:
  196. vod_hls_30 = VodHlsOss30.objects.filter(id__in=kwargs['id__in'][30]).annotate(
  197. tab_val=Value('40', output_field=CharField()))
  198. else:
  199. vod_hls_30 = VodHlsOss30.objects.none().annotate(tab_val=Value('40', output_field=CharField()))
  200. if 31 in kwargs['id__in']:
  201. vod_hls_31 = VodHlsOss31.objects.filter(id__in=kwargs['id__in'][31]).annotate(
  202. tab_val=Value('41', output_field=CharField()))
  203. else:
  204. vod_hls_31 = VodHlsOss31.objects.none().annotate(tab_val=Value('41', output_field=CharField()))
  205. if 32 in kwargs['id__in']:
  206. vod_hls_32 = VodHlsOss32.objects.filter(id__in=kwargs['id__in'][32]).annotate(
  207. tab_val=Value('42', output_field=CharField()))
  208. else:
  209. vod_hls_32 = VodHlsOss32.objects.none().annotate(tab_val=Value('42', output_field=CharField()))
  210. if 33 in kwargs['id__in']:
  211. vod_hls_33 = VodHlsOss33.objects.filter(id__in=kwargs['id__in'][33]).annotate(
  212. tab_val=Value('43', output_field=CharField()))
  213. else:
  214. vod_hls_33 = VodHlsOss33.objects.none().annotate(tab_val=Value('43', output_field=CharField()))
  215. if 34 in kwargs['id__in']:
  216. vod_hls_34 = VodHlsOss34.objects.filter(id__in=kwargs['id__in'][34]).annotate(
  217. tab_val=Value('44', output_field=CharField()))
  218. else:
  219. vod_hls_34 = VodHlsOss34.objects.none().annotate(tab_val=Value('44', output_field=CharField()))
  220. if 35 in kwargs['id__in']:
  221. vod_hls_35 = VodHlsOss35.objects.filter(id__in=kwargs['id__in'][35]).annotate(
  222. tab_val=Value('45', output_field=CharField()))
  223. else:
  224. vod_hls_35 = VodHlsOss35.objects.none().annotate(tab_val=Value('45', output_field=CharField()))
  225. if 36 in kwargs['id__in']:
  226. vod_hls_36 = VodHlsOss36.objects.filter(id__in=kwargs['id__in'][36]).annotate(
  227. tab_val=Value('46', output_field=CharField()))
  228. else:
  229. vod_hls_36 = VodHlsOss36.objects.none().annotate(tab_val=Value('46', output_field=CharField()))
  230. if 37 in kwargs['id__in']:
  231. vod_hls_37 = VodHlsOss37.objects.filter(id__in=kwargs['id__in'][37]).annotate(
  232. tab_val=Value('47', output_field=CharField()))
  233. else:
  234. vod_hls_37 = VodHlsOss37.objects.none().annotate(tab_val=Value('47', output_field=CharField()))
  235. if 38 in kwargs['id__in']:
  236. vod_hls_38 = VodHlsOss38.objects.filter(id__in=kwargs['id__in'][38]).annotate(
  237. tab_val=Value('48', output_field=CharField()))
  238. else:
  239. vod_hls_38 = VodHlsOss38.objects.none().annotate(tab_val=Value('48', output_field=CharField()))
  240. if 39 in kwargs['id__in']:
  241. vod_hls_39 = VodHlsOss39.objects.filter(id__in=kwargs['id__in'][39]).annotate(
  242. tab_val=Value('49', output_field=CharField()))
  243. else:
  244. vod_hls_39 = VodHlsOss39.objects.none().annotate(tab_val=Value('49', output_field=CharField()))
  245. if 40 in kwargs['id__in']:
  246. vod_hls_40 = VodHlsOss40.objects.filter(id__in=kwargs['id__in'][40]).annotate(
  247. tab_val=Value('50', output_field=CharField()))
  248. else:
  249. vod_hls_40 = VodHlsOss40.objects.none().annotate(tab_val=Value('50', output_field=CharField()))
  250. vod_hls_union = vod_hls_01.union(vod_hls_02, vod_hls_03, vod_hls_04, vod_hls_05, vod_hls_06, vod_hls_07,
  251. vod_hls_08, vod_hls_09, vod_hls_10, vod_hls_11, vod_hls_12, vod_hls_13,
  252. vod_hls_14, vod_hls_15, vod_hls_16, vod_hls_17, vod_hls_18, vod_hls_19,
  253. vod_hls_20, vod_hls_21, vod_hls_22, vod_hls_23, vod_hls_24, vod_hls_25,
  254. vod_hls_26, vod_hls_27, vod_hls_28, vod_hls_29, vod_hls_30, vod_hls_31,
  255. vod_hls_32, vod_hls_33, vod_hls_34, vod_hls_35, vod_hls_36, vod_hls_37,
  256. vod_hls_38, vod_hls_39, vod_hls_40, all=True)
  257. else:
  258. vod_hls_union = VodHlsOss01.objects.none().annotate(tab_val=Value('11', output_field=CharField()))
  259. else:
  260. if 'type_list' in kwargs:
  261. kwargs.pop('type_list')
  262. vod_hls_01 = VodHlsOss01.objects.filter(**kwargs).annotate(tab_val=Value('11', output_field=CharField()))
  263. vod_hls_02 = VodHlsOss02.objects.filter(**kwargs).annotate(tab_val=Value('12', output_field=CharField()))
  264. vod_hls_03 = VodHlsOss03.objects.filter(**kwargs).annotate(tab_val=Value('13', output_field=CharField()))
  265. vod_hls_04 = VodHlsOss04.objects.filter(**kwargs).annotate(tab_val=Value('14', output_field=CharField()))
  266. vod_hls_05 = VodHlsOss05.objects.filter(**kwargs).annotate(tab_val=Value('15', output_field=CharField()))
  267. vod_hls_06 = VodHlsOss06.objects.filter(**kwargs).annotate(tab_val=Value('16', output_field=CharField()))
  268. vod_hls_07 = VodHlsOss07.objects.filter(**kwargs).annotate(tab_val=Value('17', output_field=CharField()))
  269. vod_hls_08 = VodHlsOss08.objects.filter(**kwargs).annotate(tab_val=Value('18', output_field=CharField()))
  270. vod_hls_09 = VodHlsOss09.objects.filter(**kwargs).annotate(tab_val=Value('19', output_field=CharField()))
  271. vod_hls_10 = VodHlsOss10.objects.filter(**kwargs).annotate(tab_val=Value('20', output_field=CharField()))
  272. vod_hls_11 = VodHlsOss11.objects.filter(**kwargs).annotate(tab_val=Value('21', output_field=CharField()))
  273. vod_hls_12 = VodHlsOss12.objects.filter(**kwargs).annotate(tab_val=Value('22', output_field=CharField()))
  274. vod_hls_13 = VodHlsOss13.objects.filter(**kwargs).annotate(tab_val=Value('23', output_field=CharField()))
  275. vod_hls_14 = VodHlsOss14.objects.filter(**kwargs).annotate(tab_val=Value('24', output_field=CharField()))
  276. vod_hls_15 = VodHlsOss15.objects.filter(**kwargs).annotate(tab_val=Value('25', output_field=CharField()))
  277. vod_hls_16 = VodHlsOss16.objects.filter(**kwargs).annotate(tab_val=Value('26', output_field=CharField()))
  278. vod_hls_17 = VodHlsOss17.objects.filter(**kwargs).annotate(tab_val=Value('27', output_field=CharField()))
  279. vod_hls_18 = VodHlsOss18.objects.filter(**kwargs).annotate(tab_val=Value('28', output_field=CharField()))
  280. vod_hls_19 = VodHlsOss19.objects.filter(**kwargs).annotate(tab_val=Value('29', output_field=CharField()))
  281. vod_hls_20 = VodHlsOss20.objects.filter(**kwargs).annotate(tab_val=Value('30', output_field=CharField()))
  282. vod_hls_21 = VodHlsOss21.objects.filter(**kwargs).annotate(tab_val=Value('31', output_field=CharField()))
  283. vod_hls_22 = VodHlsOss22.objects.filter(**kwargs).annotate(tab_val=Value('32', output_field=CharField()))
  284. vod_hls_23 = VodHlsOss23.objects.filter(**kwargs).annotate(tab_val=Value('33', output_field=CharField()))
  285. vod_hls_24 = VodHlsOss24.objects.filter(**kwargs).annotate(tab_val=Value('34', output_field=CharField()))
  286. vod_hls_25 = VodHlsOss25.objects.filter(**kwargs).annotate(tab_val=Value('35', output_field=CharField()))
  287. vod_hls_26 = VodHlsOss26.objects.filter(**kwargs).annotate(tab_val=Value('36', output_field=CharField()))
  288. vod_hls_27 = VodHlsOss27.objects.filter(**kwargs).annotate(tab_val=Value('37', output_field=CharField()))
  289. vod_hls_28 = VodHlsOss28.objects.filter(**kwargs).annotate(tab_val=Value('38', output_field=CharField()))
  290. vod_hls_29 = VodHlsOss29.objects.filter(**kwargs).annotate(tab_val=Value('39', output_field=CharField()))
  291. vod_hls_30 = VodHlsOss30.objects.filter(**kwargs).annotate(tab_val=Value('40', output_field=CharField()))
  292. vod_hls_31 = VodHlsOss31.objects.filter(**kwargs).annotate(tab_val=Value('41', output_field=CharField()))
  293. vod_hls_32 = VodHlsOss32.objects.filter(**kwargs).annotate(tab_val=Value('42', output_field=CharField()))
  294. vod_hls_33 = VodHlsOss33.objects.filter(**kwargs).annotate(tab_val=Value('43', output_field=CharField()))
  295. vod_hls_34 = VodHlsOss34.objects.filter(**kwargs).annotate(tab_val=Value('44', output_field=CharField()))
  296. vod_hls_35 = VodHlsOss35.objects.filter(**kwargs).annotate(tab_val=Value('45', output_field=CharField()))
  297. vod_hls_36 = VodHlsOss36.objects.filter(**kwargs).annotate(tab_val=Value('46', output_field=CharField()))
  298. vod_hls_37 = VodHlsOss37.objects.filter(**kwargs).annotate(tab_val=Value('47', output_field=CharField()))
  299. vod_hls_38 = VodHlsOss38.objects.filter(**kwargs).annotate(tab_val=Value('48', output_field=CharField()))
  300. vod_hls_39 = VodHlsOss39.objects.filter(**kwargs).annotate(tab_val=Value('49', output_field=CharField()))
  301. vod_hls_40 = VodHlsOss40.objects.filter(**kwargs).annotate(tab_val=Value('50', output_field=CharField()))
  302. vod_hls_union = vod_hls_01.union(vod_hls_02, vod_hls_03, vod_hls_04, vod_hls_05, vod_hls_06, vod_hls_07,
  303. vod_hls_08, vod_hls_09, vod_hls_10, vod_hls_11, vod_hls_12, vod_hls_13,
  304. vod_hls_14, vod_hls_15, vod_hls_16, vod_hls_17, vod_hls_18, vod_hls_19,
  305. vod_hls_20, vod_hls_21, vod_hls_22, vod_hls_23, vod_hls_24, vod_hls_25,
  306. vod_hls_26, vod_hls_27, vod_hls_28, vod_hls_29, vod_hls_30, vod_hls_31,
  307. vod_hls_32, vod_hls_33, vod_hls_34, vod_hls_35, vod_hls_36, vod_hls_37,
  308. vod_hls_38, vod_hls_39, vod_hls_40, all=True)
  309. LOGGER.info('vod_hls_oss_union结果:{},kwargs:{}'.format(vod_hls_union.values(), kwargs))
  310. return vod_hls_union
  311. @staticmethod
  312. def get_vod_hls_date(**kwargs):
  313. """
  314. 分表获取云存日期信息数据
  315. @return: vod_hls
  316. """
  317. vod_hls_union = VodHlsOss01.objects.none()
  318. for vod_hls_model in Vod_Hls_List:
  319. vod_hls_union = vod_hls_union.union(vod_hls_model.objects.extra(
  320. select={'date': "FROM_UNIXTIME(start_time,'%%Y-%%m-%%d')"}).values('date', 'start_time').filter(
  321. **kwargs).annotate(
  322. count=Count('start_time')).order_by('-date'))
  323. result = {}
  324. for item in vod_hls_union:
  325. if item['date'] not in result:
  326. result[item['date']] = item['count']
  327. else:
  328. result[item['date']] += item['count']
  329. res = []
  330. for key, value in result.items():
  331. res.append({'date': key, 'count': value})
  332. return res
  333. @classmethod
  334. def cloud_vod_hls_tag(cls, vod_id, num, uid, start_time, sec):
  335. """
  336. 云存回调信息关联标签
  337. @param vod_id: 云存回放信息id
  338. @param num: 云存所在表编号
  339. @param uid: 设备UID
  340. @param start_time: 云存开始时间
  341. @param sec: 云存片段秒数
  342. @return: True | False
  343. """
  344. try:
  345. start_time = int(start_time)
  346. end_time = start_time + sec
  347. vod_tag_qs = VodHlsTag.objects.filter(ai_event_time__range=(start_time, end_time), uid=uid)
  348. if not vod_tag_qs.exists():
  349. return False
  350. vod_tag_qs.update(vod_hls_id=vod_id, tab_num=num)
  351. return True
  352. except Exception as e:
  353. print(
  354. 'cloud_vod_hls_tag异常详情,uid:{},errLine:{},errMsg:{}'.format(uid, e.__traceback__.tb_lineno, repr(e)))
  355. return False
  356. @classmethod
  357. def vod_query_param(cls, **kwargs):
  358. vod_ids = cls.query_tag_by_types(kwargs.get('uid'),
  359. kwargs.get('start_time__range'),
  360. kwargs.get('type_list'))
  361. if vod_ids:
  362. kwargs['id__in'] = vod_ids
  363. kwargs.pop('type_list')
  364. return kwargs
  365. @classmethod
  366. def query_tag_by_types(cls, uid, time, types):
  367. """
  368. 根据类型查询云存标签关联ID
  369. @return:
  370. """
  371. try:
  372. if not types or len(types) == 0:
  373. return {}
  374. cursor = connection.cursor()
  375. param_list = [int(time[0]), int(time[1]), uid]
  376. sql = 'SELECT vod_hls_id, tab_num FROM '
  377. sql += 'vod_hls_tag vht INNER JOIN vod_hls_tag_type vhtt ON vht.id = vhtt.tag_id '
  378. sql += 'WHERE vht.ai_event_time >= %s AND vht.ai_event_time <= %s '
  379. sql += 'AND vht.uid = %s '
  380. if types:
  381. sql += 'AND vhtt.type IN %s '
  382. param_list.append(types)
  383. cursor.execute(sql, param_list)
  384. data_list = cursor.fetchall()
  385. cursor.close() # 执行完,关闭
  386. connection.close()
  387. data_dict = {}
  388. for item in data_list:
  389. if item[1] not in data_dict:
  390. data_dict[item[1]] = [item[0]]
  391. else:
  392. data_dict[item[1]].append(item[0])
  393. return data_dict
  394. except Exception as e:
  395. print('异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  396. return False
  397. @classmethod
  398. def query_tag_type_list(cls, vod_ids):
  399. """
  400. 根据云存ID获取AI类型
  401. @return:
  402. """
  403. try:
  404. qs = VodHlsTag.objects.none()
  405. for vod_id in vod_ids:
  406. tab_val = int(vod_id[:2]) - 10
  407. temp_id = vod_id[2:]
  408. qs = qs.union(VodHlsTag.objects.filter(vod_hls_id=temp_id, tab_num=tab_val).values('id', 'vod_hls_id'))
  409. if not qs:
  410. return []
  411. return list(qs)
  412. except Exception as e:
  413. print('异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
  414. return []