minuteRun.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import logging
  2. from logging import handlers
  3. import os
  4. from model.sql_models import DB
  5. from data_processing import video_processing
  6. # TODO:上线时需要进行修改
  7. from config import using_config_test as db_config
  8. def image_check():
  9. # TODO:图片素材,进行对应修改
  10. pass
  11. def video_check():
  12. # 1.检查media表中是否有byte为空,但是download_path有数据的
  13. sql = '''select download_path from t_ads_media tam
  14. where download_path is not null
  15. and video_bit_rate is null
  16. and type =2 ;
  17. '''
  18. cursor = zx_db.session.execute(sql)
  19. download_path_list = []
  20. for line in cursor.fetchall():
  21. download_path_list.append(line[0])
  22. zx_db.session.commit()
  23. # 2.检查signature(md5),是否已经存在于media,如果已经存在,一切用原来的信息
  24. for download_path in download_path_list:
  25. # TODO:有空的时候,添加去除本来上传的视频
  26. download_url = 'https://zx-media-database.oss-cn-hangzhou.aliyuncs.com/' + download_path
  27. logging.info('开始解析视频:{} '.format(download_url))
  28. # 3.进行视频解析
  29. cloud_filepath, metadata_title, video_size, duration, bit_rate, width, height, format = video_processing.change_format(
  30. download_url)
  31. # -1.更新media,idea两种表的数据
  32. type = 2
  33. signature = metadata_title[3:]
  34. media_size = video_size
  35. media_format = format
  36. video_length = duration
  37. video_bit_rate = bit_rate
  38. max_media_size = media_size
  39. height = height
  40. width = width
  41. aspect_ratio = round(width / (height if height else 1), 1)
  42. media_sql = '''
  43. update t_ads_media
  44. set video_mate_data='{video_mate_data}',
  45. type='{type}' ,signature='{signature}', media_size='{media_size}',
  46. media_format = '{media_format}', video_length='{video_length}',
  47. video_bit_rate = '{video_bit_rate}', max_media_size='{max_media_size}',
  48. height='{height}', width='{width}', aspect_ratio = '{aspect_ratio}'
  49. where download_path='{download_path}';
  50. '''.format(download_path=download_path, video_mate_data=metadata_title, type=type,
  51. signature=signature, media_size=media_size,
  52. media_format=media_format, video_length=video_length,
  53. video_bit_rate=video_bit_rate, max_media_size=max_media_size,
  54. height=height, width=width, aspect_ratio=aspect_ratio)
  55. idea_sql = '''
  56. update t_ads_idea
  57. set signature='{signature}', video_mate_data='{video_mate_data}',
  58. media_size='{media_size}',type='{type}' ,
  59. media_format = '{media_format}',
  60. video_length='{video_length}',
  61. video_bit_rate = '{video_bit_rate}', max_media_size='{max_media_size}',
  62. height='{height}', width='{width}', aspect_ratio = '{aspect_ratio}'
  63. where download_path='{download_path}'
  64. '''.format(download_path=download_path, video_mate_data=metadata_title, type=type,
  65. signature=signature, media_size=media_size,
  66. media_format=media_format, video_length=video_length,
  67. video_bit_rate=video_bit_rate, max_media_size=max_media_size,
  68. height=height, width=width, aspect_ratio=aspect_ratio)
  69. zx_db.session.execute(media_sql)
  70. zx_db.session.execute(idea_sql)
  71. zx_db.session.commit()
  72. def run():
  73. # 1.检查上一个进程是否已经完结
  74. result = os.popen('ps aux | grep python | grep minuteRun.py | grep -v grep')
  75. res = result.read()
  76. for line in res.splitlines():
  77. print(line)
  78. print(len(res.splitlines()))
  79. if len(res.splitlines()) > 1:
  80. logging.info('前面有视频检查程序在运行')
  81. return
  82. else:
  83. video_check()
  84. if __name__ == '__main__':
  85. # 定时检查素材库里的视频数据,是否是有
  86. # 广告创意----也需要检查----图片可能是被动上传
  87. #
  88. logging.basicConfig(
  89. handlers=[
  90. logging.handlers.RotatingFileHandler('./log/minute_Run.log',
  91. maxBytes=10 * 1024 * 1024,
  92. backupCount=5,
  93. encoding='utf-8')
  94. , logging.StreamHandler() # 供输出使用
  95. ],
  96. level=logging.INFO,
  97. format="%(asctime)s - %(levelname)s %(filename)s %(funcName)s %(lineno)s - %(message)s"
  98. )
  99. zx_db = DB(db_config.zx_ads)
  100. logging.info('视频检查,开始')
  101. run()
  102. logging.info('视频检查,结束')