""" @author: luojunhui """ from concurrent.futures.thread import ThreadPoolExecutor from tqdm import tqdm from applications import AIDTApi, DeNetMysql, PQMySQL, Functions from config import poolLevelConfig class ColdStartTask(object): """ 冷启分配任务 """ AidApi = AIDTApi() DeMysql = DeNetMysql() PqMysql = PQMySQL() Fun = Functions() pool4 = poolLevelConfig['4'] @classmethod def getTopArticles(cls, category, limit_count): """ 获取高分享的文章list :return: """ sql = f""" select content_id, content_link, title from cold_start_article_pool where category = '{category}' order by view_count DESC, publish_time_stamp DESC limit {limit_count}; """ result = cls.PqMysql.select(sql) return result @classmethod def computeScore(cls): """ 和每个账号计算相关性分数 :return: """ # category_list = ["军事政法", "健康养生", "搞笑幽默"] category_list = ["军事政法", "健康养生"] L = [] for category in category_list: article_tuple = cls.getTopArticles(category) title_list = [article[2] for article in article_tuple] score_list = cls.Fun.getTitleScore(title_list, "指尖奇文")['指尖奇文']['score_list'] for index, score in enumerate(score_list): obj = { "id": article_tuple[index][0], "url": article_tuple[index][1], "title": article_tuple[index][2], "cate": category, "score": score } L.append(obj) result = [i for i in L if i['score'] >= 0.4] return result @classmethod def sendToColdPool(cls): """ 把文章send至第四层 :return: """ result = cls.computeScore() army = [i for i in result if i['cate'] == '军事政法'] healthy = [i for i in result if i['cate'] == '健康养生'] print(len(army)) print(len(healthy)) cst = ColdStartTask() res = cst.getTopArticles(category="军事政法", limit_count=20) print(res)