Parcourir la source

新增快手开眼渠道

liyuyi@c-top.com.cn il y a 4 ans
Parent
commit
49fb8117f1

+ 33 - 0
common_func.py

@@ -4,6 +4,10 @@ import json
 import numpy as np
 import logging
 from concurrent_log import ConcurrentTimedRotatingFileHandler
+from config.url import get_none_water_mark_url
+import requests
+import pandas as pd
+import base64
 
 
 # 创建数据库连接引擎
@@ -56,3 +60,32 @@ def get_logger(log_file_name, log_name):
     logger.addHandler(log_handler)
     logger.setLevel(logging.DEBUG)  # 日志打印级别
     return logger
+
+
+# 获取头条无水印有时效性的链接
+def get_toutiao_none_water_mark_and_time_efficient_url(vid):
+    """
+    依据 vid,得到无水印,有时效性的链接
+    :return:
+    """
+    request_path = get_none_water_mark_url + str(vid)
+    request = requests.get(request_path)
+    response_data = json.loads(request.text)
+    if response_data.get('message') == 'success' and response_data.get('data') and response_data.get('data').get('video_list'):
+        video_df = pd.DataFrame()
+        for k, v in response_data.get('data').get('video_list').items():
+            single_video_df = pd.DataFrame([v])
+            video_df = video_df.append(single_video_df)
+
+        video_df.sort_values(by='size', ascending=True, inplace=True)  # 获取分辨率最高的素材
+        main_url = video_df['main_url'].values[-1]
+        main_url_decode = base64.b64decode(main_url)
+        main_url_decode = str(main_url_decode, encoding='utf-8')  # bytes to str
+        return main_url_decode
+    else:
+        return None
+
+
+if __name__ == '__main__':
+    r = get_toutiao_none_water_mark_and_time_efficient_url('v02033290000budu3753giguv9qli6bg')
+    print(r)

+ 3 - 0
config/url.py

@@ -17,3 +17,6 @@ get_video_info_from_ocean_engine_url = "https://cc.oceanengine.com/creative_cont
 
 # 快手开眼快创获取优质素材信息
 get_video_info_from_kuaishou_kaiyan = "https://cc.e.kuaishou.com/rest/creativeCentor/inspired/list"
+
+# 头条无水印链接
+get_none_water_mark_url = "http://i.snssdk.com/video/urls/1/toutiao/mp4/"

+ 50 - 0
get_material_from_out_source/get_material_and_script_from_out_source_by_query_word.py

@@ -0,0 +1,50 @@
+import pandas as pd
+import yaml
+# from get_material_from_kuaishou_kaiyan
+from common_func import get_db_engine, get_logger
+
+if __name__ == '__main__':
+    # 创建日志对象
+    logger = get_logger(log_file_name="/data/pythonProject/video-to-word/logs/get_material_from_outer_source.log",
+                        log_name='get_material_from_outer_source_logger')
+    logger.info("get_material_from_outer_source_logger started! id of logger is: %s" % id(logger))
+
+    # 1 读取配置文件
+    with open('/data/pythonProject/video-to-word/config/config.yaml', mode='r', encoding='utf-8') as f:
+        config = yaml.load(f.read(), Loader=yaml.FullLoader)
+
+    # 1-1 数据库连接引擎,依据开发环境/生产环境 进行切换
+    # 读数据库引擎使用生产数据库,写数据库引擎依据系统环境进行切换(测试数据库/生产数据库)
+    # 注意:该项目的读和写 都使用测试数据库
+    write_engine = get_db_engine(config['devDB'])
+    read_engine = get_db_engine(config['devDB'])
+
+    # 1-2 分批写入数据库的行数
+    chunk_size = config['chunkSize']
+
+    # 2 读取查询表得到关键词和渠道
+    sql = """
+    select  query_word,
+            query_word_type,
+            query_time_range,
+            is_new_project_query_word,
+            source_code_lst
+     from ctop_ai_query_word_for_outer_source where status = 1
+    """
+    df = pd.read_sql(sql, read_engine)
+    for index, row in df.iterrows():
+        query_word = row['row']
+        query_word_type = row['query_word_type']
+        query_time_range = row['query_time_range']
+        is_new_project_query_word = row['is_new_project_query_word']
+        source_code_lst = row['source_code_lst']
+        for source_code in source_code_lst:
+            if source_code == -1:
+                # 获取公司内部投放素材
+                pass
+            if source_code == 1:
+                # 获取快手开眼快创的素材
+                pass
+            if source_code == 2:
+                # 获取头条巨量引擎的素材,需要使用参数 query_time_range
+                pass

+ 0 - 7
get_material_from_out_source/get_material_from_kuaishou_kaiyan.py

@@ -73,13 +73,6 @@ class GetMaterialFromKuaishouKaiyan(object):
         video_df['stat_date'] = datetime.datetime.today().strftime('%Y-%m-%d')
 
         # 2-3 写入数据库, 表中以 photoId + query_word 作为联合唯一键,写入数据库时如果唯一键重复,则 replace_into
-        # video_df.to_sql(name="ctop_ai_material_info_from_kuaishou_kaiyan",
-        #                 con=self.db_engine,
-        #                 if_exists='append',
-        #                 index=False,
-        #                 chunksize=1000,
-        #                 method=mysql_replace_into)
-
         try:
             video_df.to_sql(name="ctop_ai_material_info_from_kuaishou_kaiyan",
                             con=self.db_engine,