minuteRun.py 4.6 KB

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