Bläddra i källkod

MOD:视频上传过滤已有视频

cxyu 3 år sedan
förälder
incheckning
6c846d26d6

+ 0 - 4
app/crontab_task/minuteRun.py

@@ -5,9 +5,6 @@ from model.sql_models import DB
 from data_processing import video_processing
 from data_processing import video_processing
 from config import using_config as db_config
 from config import using_config as db_config
 
 
-def image_check():
-    # TODO:图片素材,进行对应修改
-    pass
 
 
 
 
 def video_check():
 def video_check():
@@ -24,7 +21,6 @@ def video_check():
     zx_db.session.commit()
     zx_db.session.commit()
     # 2.检查signature(md5),是否已经存在于media,如果已经存在,一切用原来的信息
     # 2.检查signature(md5),是否已经存在于media,如果已经存在,一切用原来的信息
     for download_path in download_path_list:
     for download_path in download_path_list:
-        # TODO:有空的时候,添加去除本来上传的视频
         download_url = 'https://zx-media-database.oss-cn-hangzhou.aliyuncs.com/' + download_path
         download_url = 'https://zx-media-database.oss-cn-hangzhou.aliyuncs.com/' + download_path
         logging.info('开始解析视频:{} '.format(download_url))
         logging.info('开始解析视频:{} '.format(download_url))
 
 

+ 64 - 15
data_processing/video_processing.py

@@ -5,6 +5,8 @@ import hashlib
 import ffmpeg
 import ffmpeg
 import os
 import os
 import oss2
 import oss2
+from model.sql_models import DB
+from config import using_config as db_config
 
 
 
 
 def change_format(video_url, file_md5=None):
 def change_format(video_url, file_md5=None):
@@ -14,6 +16,34 @@ def change_format(video_url, file_md5=None):
     rsp = requests.get(video_url)
     rsp = requests.get(video_url)
     with open(input_file, 'wb') as f:
     with open(input_file, 'wb') as f:
         f.write(rsp.content)
         f.write(rsp.content)
+
+    # 获取视频---matedata-title
+    video_info_input = ffmpeg.probe(input_file)['format']
+    video_title = ''
+    try:
+        if 'zx' in video_info_input['tags']['title']:
+            video_title = video_info_input['tags']['title']
+    except:
+        pass
+
+    if video_title[:2] == 'zx':
+        # 如果有这一类数据,数据库比对matedata,获取download_path,等其他信息
+        db_qc = DB(config=db_config.quchen_text)
+        sql = '''
+        select download_path ,video_meta_data ,size,video_length ,byte_rate ,
+        width ,height ,type
+        from video_info
+        where video_meta_data='{}'
+        '''.format(video_title)
+        cursor = db_qc.session.execute(sql)
+        lines = []
+        for line in cursor.fetchall():
+            lines.append(line)
+        if len(lines) > 0:
+            logging.info(video_url + ' 视频已经存在')
+            cloud_filepath, metadata_title, video_size, duration, bit_rate, width, height, format = lines[0]
+            return cloud_filepath, metadata_title, video_size, duration, bit_rate, width, height, format
+
     if not file_md5:
     if not file_md5:
         file_md5 = hashlib.md5(rsp.content).hexdigest()
         file_md5 = hashlib.md5(rsp.content).hexdigest()
         logging.info(file_md5)  # ac3ee699961c58ef80a78c2434efe0d0
         logging.info(file_md5)  # ac3ee699961c58ef80a78c2434efe0d0
@@ -33,11 +63,9 @@ def change_format(video_url, file_md5=None):
     height = int(video_stream['height'])
     height = int(video_stream['height'])
 
 
     logging.info('视频时长:{}  视频大小:{}  视频比特率:{} 视频宽:{} 视频长:{}'.format(duration, video_size, bit_rate, width, height))
     logging.info('视频时长:{}  视频大小:{}  视频比特率:{} 视频宽:{} 视频长:{}'.format(duration, video_size, bit_rate, width, height))
-
     cloud_filepath = 'video/{}.mp4'.format(metadata_title)
     cloud_filepath = 'video/{}.mp4'.format(metadata_title)
-
-    video_format=video_url.split('.')[-1]
-    format='mp4' if len(video_format)>4 else video_format
+    video_format = video_url.split('.')[-1]
+    format = 'mp4' if len(video_format) > 4 else video_format
 
 
     # 上传视频
     # 上传视频
     update_to_aliyun(local_filepath=output_file, cloud_filepath=cloud_filepath)
     update_to_aliyun(local_filepath=output_file, cloud_filepath=cloud_filepath)
@@ -49,11 +77,12 @@ def change_format(video_url, file_md5=None):
 
 
 
 
 def update_to_aliyun(local_filepath, cloud_filepath):
 def update_to_aliyun(local_filepath, cloud_filepath):
-    # TODO:之后oss相关密码信息写入config
-    access_key_id = os.getenv('OSS_TEST_ACCESS_KEY_ID', 'LTAI5tGAUywhGk8xDuXosquq')
-    access_key_secret = os.getenv('OSS_TEST_ACCESS_KEY_SECRET', 'VMVfRv6DdSYuBipIMU5UdtHBYB0Jjb')
-    bucket_name = os.getenv('OSS_TEST_BUCKET', 'zx-media-database')
-    endpoint = os.getenv('OSS_TEST_ENDPOINT', 'http://oss-cn-hangzhou.aliyuncs.com')
+    logging.info('准备上传视频')
+    oss_config = db_config.oss_config
+    access_key_id = os.getenv('OSS_TEST_ACCESS_KEY_ID', oss_config['OSS_TEST_ACCESS_KEY_ID'])
+    access_key_secret = os.getenv('OSS_TEST_ACCESS_KEY_SECRET', oss_config['OSS_TEST_ACCESS_KEY_SECRET'])
+    bucket_name = os.getenv('OSS_TEST_BUCKET', oss_config['OSS_TEST_BUCKET'])
+    endpoint = os.getenv('OSS_TEST_ENDPOINT', oss_config['OSS_TEST_ENDPOINT'])
 
 
     # 创建Bucket对象,所有Object相关的接口都可以通过Bucket对象来进行
     # 创建Bucket对象,所有Object相关的接口都可以通过Bucket对象来进行
     bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
     bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
@@ -71,9 +100,29 @@ def update_to_aliyun(local_filepath, cloud_filepath):
 
 
 
 
 if __name__ == '__main__':
 if __name__ == '__main__':
-    import threading
-    for i in range(100):
-        x_thread=threading.Thread(target=change_format,args=('http://wxsnsdy.wxs.qq.com/131/20210/snssvpdownload/SH/reserved/ads_svp_video__0b53qybncaaciaadpfl53jqbrbqe2gdafuka.f110002.mp4?dis_k=2982f4fc3f191cb6199045ca072ed033&dis_t=1618995038&m=beb8a2fd5980bb6fb4f9cef486546338',))
-        x_thread.start()
-
-    change_format('http://wxsnsdy.wxs.qq.com/131/20210/snssvpdownload/SH/reserved/ads_svp_video__0b53qybncaaciaadpfl53jqbrbqe2gdafuka.f110002.mp4?dis_k=2982f4fc3f191cb6199045ca072ed033&dis_t=1618995038&m=beb8a2fd5980bb6fb4f9cef486546338')
+    # import threading
+    #
+    # for i in range(100):
+    #     x_thread = threading.Thread(target=change_format, args=(
+    #         'http://wxsnsdy.wxs.qq.com/131/20210/snssvpdownload/SH/reserved/ads_svp_video__0b53qybncaaciaadpfl53jqbrbqe2gdafuka.f110002.mp4?dis_k=2982f4fc3f191cb6199045ca072ed033&dis_t=1618995038&m=beb8a2fd5980bb6fb4f9cef486546338',))
+    #     x_thread.start()
+
+    import logging
+    from logging import handlers
+
+    logging.basicConfig(
+        handlers=[
+            logging.handlers.RotatingFileHandler('video_process.log',
+                                                 maxBytes=10 * 1024 * 1024,
+                                                 backupCount=5,
+                                                 encoding='utf-8')
+            , logging.StreamHandler()  # 供输出使用
+        ],
+        level=logging.INFO,
+        format="%(asctime)s - %(levelname)s %(filename)s %(funcName)s %(lineno)s - %(message)s"
+    )
+    # change_format(
+    #     'https://zx-media-database.oss-cn-hangzhou.aliyuncs.com/video/zx_beb8a2fd5980bb6fb4f9cef486546338.mp4',
+    #     file_md5='beb8a2fd5980bb6fb4f9cef486546338')
+    change_format(
+        'http://wxsnsdy.wxs.qq.com/131/20210/snssvpdownload/SH/reserved/ads_svp_video__0b53qybncaaciaadpfl53jqbrbqe2gdafuka.f110002.mp4?dis_k=2982f4fc3f191cb6199045ca072ed033&dis_t=1618995038&m=beb8a2fd5980bb6fb4f9cef486546338')

+ 3 - 2
example/update_order_data.py

@@ -81,7 +81,7 @@ def update_order_zhangzhongyun_single():
 
 
 
 
 def update_order_guofeng():
 def update_order_guofeng():
-    guofeng(start=du.get_n_days(-15), end=du.get_n_days(0))
+    guofeng(start=du.get_n_days(-30), end=du.get_n_days(0))
 
 
 
 
 def update_order_do():
 def update_order_do():
@@ -107,5 +107,6 @@ if __name__ == '__main__':
     # update_order()
     # update_order()
     # update_order()
     # update_order()
     # update_order_zhangzhognyun()
     # update_order_zhangzhognyun()
-    update_order_zhangzhognyun()
+    # update_order_zhangzhognyun()
     # update_order_zhangzhongyun_single()
     # update_order_zhangzhongyun_single()
+    update_order_guofeng()

+ 0 - 2
example/update_video.py

@@ -33,7 +33,6 @@ def update_video_info():
         # byte_rate = video_size / 1024 * 8 / duration
         # byte_rate = video_size / 1024 * 8 / duration
         byte_rate = (video_size/(duration/8))
         byte_rate = (video_size/(duration/8))
         print(byte_rate)
         print(byte_rate)
-        # TODO:码率有问题之后重新计算
 
 
         # 3.进行存储
         # 3.进行存储
         sql = '''
         sql = '''
@@ -62,7 +61,6 @@ def update_byte_rate():
         # byte_rate = video_size / 1024 * 8 / duration
         # byte_rate = video_size / 1024 * 8 / duration
         byte_rate = (video_size / (duration / 8))
         byte_rate = (video_size / (duration / 8))
         print(byte_rate)
         print(byte_rate)
-        # TODO:码率有问题之后重新计算
 
 
         # 3.进行存储
         # 3.进行存储
         sql = '''
         sql = '''