minuteRun.py 4.7 KB

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