Browse Source

update route /applet/video/update/rov

liqian 3 years ago
parent
commit
8944e9066a
4 changed files with 106 additions and 3 deletions
  1. 4 0
      app.py
  2. 40 0
      config.py
  3. 32 0
      db_helper.py
  4. 30 3
      utils.py

+ 4 - 0
app.py

@@ -15,6 +15,7 @@ import traceback
 import ast
 from gevent.pywsgi import WSGIServer
 from multiprocessing import cpu_count, Process
+from utils import update_video_w_h_rate
 #from werkzeug.middleware.profiler import ProfilerMiddleware
 app = Flask(__name__)
 #app.wsgi_app = ProfilerMiddleware(app.wsgi_app)
@@ -113,7 +114,10 @@ def update_rov():
     #     video_id = request_data.get('videoId')
     #     rov_score = request_data.get('rovScore')
     #     redis_helper = RedisHelper()
+    #     # 将修改ROV值视频的 videoId 和 rovScore 存入对应的redis中
     #     redis_helper.update_score_with_value(key_name=config_.UPDATE_ROV_KEY_NAME, value=video_id, score=rov_score)
+    #     # 判断该视频是否为 横屏视频,如果是则 存入rov召回池横屏视频 redis 中
+    #     update_video_w_h_rate(video_id=int(video_id), key_name=config_.W_H_RATE_UP_1_VIDEO_LIST_KEY_NAME['rov_recall'])
     #     result = {'code': 200, 'message': 'update rov success'}
     #     log_.info('result: {}'.format(result))
     #     return json.dumps(result)

+ 40 - 0
config.py

@@ -97,6 +97,16 @@ class DevelopmentConfig(BaseConfig):
         'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
     }
 
+    # 测试环境mysql地址
+    MYSQL_INFO = {
+        'host': 'rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com',
+        'port': 3306,
+        'user': 'wx2016_longvideo',
+        'password': 'wx2016_longvideoP@assword1234',
+        'db': 'longvideo',
+        'charset': 'utf8'
+    }
+
     # Hologres视频状态存储表名
     VIDEO_STATUS = 'longvideo_test.dwd_mdm_item_video_stat'
 
@@ -126,6 +136,16 @@ class TestConfig(BaseConfig):
         'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
     }
 
+    # 测试环境mysql地址
+    MYSQL_INFO = {
+        'host': 'rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com',
+        'port': 3306,
+        'user': 'wx2016_longvideo',
+        'password': 'wx2016_longvideoP@assword1234',
+        'db': 'longvideo',
+        'charset': 'utf8'
+    }
+
     # Hologres视频状态存储表名
     VIDEO_STATUS = 'longvideo_test.dwd_mdm_item_video_stat'
 
@@ -155,6 +175,16 @@ class PreProductionConfig(BaseConfig):
         'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
     }
 
+    # 生产环境mysql地址
+    MYSQL_INFO = {
+        'host': 'rr-bp1x9785e8h5452bi157.mysql.rds.aliyuncs.com',
+        'port': 3306,
+        'user': 'wx2016_longvideo',
+        'password': 'wx2016_longvideoP@assword1234',
+        'db': 'longvideo',
+        'charset': 'utf8'
+    }
+
     # Hologres视频状态存储表名
     VIDEO_STATUS = 'longvideo.dwd_mdm_item_video_stat'
 
@@ -184,6 +214,16 @@ class ProductionConfig(BaseConfig):
         'password': '4BEcOgxREOPq7t3A7EWkjciVULeQGj'
     }
 
+    # 生产环境mysql地址
+    MYSQL_INFO = {
+        'host': 'rr-bp1x9785e8h5452bi157.mysql.rds.aliyuncs.com',
+        'port': 3306,
+        'user': 'wx2016_longvideo',
+        'password': 'wx2016_longvideoP@assword1234',
+        'db': 'longvideo',
+        'charset': 'utf8'
+    }
+
     # Hologres视频状态存储表名
     VIDEO_STATUS = 'longvideo.dwd_mdm_item_video_stat'
 

+ 32 - 0
db_helper.py

@@ -2,6 +2,7 @@ import traceback
 
 import redis
 import psycopg2
+import pymysql
 from psycopg2 import pool as pgpool
 from config import set_config
 from log import Log
@@ -288,6 +289,37 @@ class HologresHelper(object):
         return data
 
 
+class MysqlHelper(object):
+    def __init__(self):
+        """
+        初始化mysql连接信息
+        """
+        self.mysql_info = config_.MYSQL_INFO
+
+    def get_data(self, sql):
+        """
+        查询数据
+        :param sql: sql语句
+        :return: data
+        """
+        # 连接数据库
+        conn = pymysql.connect(**self.mysql_info)
+        # 创建游标
+        cursor = conn.cursor()
+        try:
+            # 执行SQL语句
+            cursor.execute(sql)
+            # 获取查询的所有记录
+            data = cursor.fetchall()
+        except Exception as e:
+            return None
+        # 关闭游标对象
+        cursor.close()
+        # 关闭数据库连接
+        conn.close()
+        return data
+
+
 if __name__ == '__main__':
     redis_helper = RedisHelper()
     # key = 'flow.video.12345.123#112'

+ 30 - 3
utils.py

@@ -5,7 +5,7 @@ import json
 import time
 
 from datetime import datetime
-from db_helper import HologresHelper, RedisHelper
+from db_helper import HologresHelper, RedisHelper, MysqlHelper
 from config import set_config
 from log import Log
 
@@ -101,6 +101,31 @@ def get_videos_local_distribute_count(video_id, flow_pool):
         return None
 
 
+def update_video_w_h_rate(video_id, key_name):
+    """
+    获取横屏视频的宽高比,并存入redis中 (width/height>1)
+    :param video_id: videoId type-int
+    :param key_name: redis key
+    :return: None
+    """
+    # 获取数据
+    sql = "SELECT id, width/height w_h_rate " \
+          "FROM longvideo.wx_video " \
+          "WHERE width/height > 1 " \
+          "AND id = {};".format(video_id)
+    mysql_helper = MysqlHelper()
+    data = mysql_helper.get_data(sql=sql)
+    if len(data) == 0:
+        return
+    # 更新到redis
+    w_h_rate = float(data[0][1])
+    info_data = {int(video_id): w_h_rate}
+    redis_helper = RedisHelper()
+    # 写入新数据
+    if len(info_data) > 0:
+        redis_helper.add_data_with_zset(key_name=key_name, data=info_data)
+
+
 class FilterVideos(object):
     """视频过滤"""
     def __init__(self, app_type, video_ids, mid='', uid=''):
@@ -235,5 +260,7 @@ if __name__ == '__main__':
     # res = get_videos_remain_view_count(4, videos)
     # print(res)
 
-    text = '测试 @李倩'
-    send_msg_to_feishu(text)
+    # text = '测试 @李倩'
+    # send_msg_to_feishu(text)
+
+    update_video_w_h_rate(video_id=113, key_name='')