ソースを参照

账号排序- v0.4

罗俊辉 11 ヶ月 前
コミット
9374e30bf6

+ 3 - 1
applications/functions/__init__.py

@@ -1,4 +1,6 @@
 """
 @author: luojunhui
 """
-from .article_account import ArticleRank
+from .article_account import ArticleRank
+from .article_tools import title_sim_v2_by_list
+from .server_article_account import get_article_title_url_list

+ 31 - 0
applications/functions/article_tools.py

@@ -0,0 +1,31 @@
+"""
+@author: luojunhui
+"""
+"""
+@author: luojunhui
+"""
+
+
+def title_sim_v2(title_a, title_b, thredhold=0.8):
+    if len(title_a) < 1 or len(title_b) < 1:
+        return False
+    set_a = set(title_a)
+    set_b = set(title_b)
+    set_cross = set_a & set_b
+    set_union = set_a | set_b
+    if not set_union:
+        return False
+    min_len = max(min(len(set_a), len(set_b)), 1)
+    rate = len(set_cross) / min_len
+    if rate >= thredhold:
+        return True
+    else:
+        return False
+
+
+def title_sim_v2_by_list(title_target, title_list):
+    for title, url in title_list:
+        sim_score = title_sim_v2(title_target, title)
+        if sim_score:
+            return (title, url)
+    return None

+ 201 - 0
applications/functions/server_article_account.py

@@ -0,0 +1,201 @@
+"""
+@author: luojunhui
+"""
+import requests
+import json
+ROOT_URL = 'http://192.168.100.31:8179'
+# 接口文档地址:http://192.168.100.31:8179/docs
+
+
+def get_article_list(
+    account_nickname,
+    rate=0.1,
+    min_time=None,
+    max_time=None,
+    filter_same=False,
+    filter_sensitive=False,
+    index_list=[1],
+    msg_type=9,
+    reverse=True,
+    keys=[
+        "Title",
+        "ItemIndex",
+        "show_view_count",
+        "ContentUrl",
+        "msg_time",
+    ],
+):
+    api_url = f'{ROOT_URL}/artlce_list'
+    payload = json.dumps({
+      "account_nickname": account_nickname,
+      "filter_same": filter_same,
+      "filter_sensitive": filter_sensitive,
+      "index_list": index_list,
+      "keys": keys,
+      "max_time": max_time,
+      "min_time": min_time,
+      "msg_type": msg_type,
+      "rate": rate,
+      "reverse": reverse,
+      "top_n": 10000,
+      "use_max_time": True,
+      "use_min_time": True
+    })
+    res = requests.request("POST", api_url, headers={}, data=payload).json()
+    return res
+
+def get_article_titles(
+    account_nickname,
+    rate=0.1,
+    min_time=None,
+    max_time='99999999_999999',
+    filter_same=True,
+    filter_sensitive=False,
+    index_list=[1, 2],
+    msg_type=9,
+    reverse=True,
+    keys=[
+        "Title",
+        "msg_time",
+    ],
+):
+    article_list = get_article_list(
+        account_nickname,
+        rate=rate,
+        min_time=min_time,
+        max_time=max_time,
+        filter_same=filter_same,
+        filter_sensitive=filter_sensitive,
+        index_list=index_list,
+        msg_type=msg_type,
+        reverse=reverse,
+        keys=keys,
+    )['article_list']
+    title_list = [x['Title'] for x in article_list]
+    return title_list
+
+def get_article_title_url_list(
+    account_nickname,
+    rate=0.1,
+    min_time=None,
+    max_time='99999999_999999',
+    filter_same=True,
+    filter_sensitive=False,
+    index_list=[1, 2],
+    msg_type=9,
+    reverse=True,
+    keys=[
+        "Title",
+        "msg_time",
+        "ContentUrl",
+    ],
+):
+    article_list = get_article_list(
+        account_nickname,
+        rate=rate,
+        min_time=min_time,
+        max_time=max_time,
+        filter_same=filter_same,
+        filter_sensitive=filter_sensitive,
+        index_list=index_list,
+        msg_type=msg_type,
+        reverse=reverse,
+        keys=keys,
+    )['article_list']
+    title_list = [(x['Title'], x['ContentUrl']) for x in article_list]
+    return title_list
+
+def artlce_list_avg_good_bad(
+    account_nickname,
+    rate=0.1,
+    min_time=None,
+    max_time=None,
+    keys=[
+        "Title",
+        "ItemIndex",
+        "show_view_count",
+        "ContentUrl",
+        "msg_time",
+    ],
+):
+    api_url = f'{ROOT_URL}/artlce_list_avg_good_bad'
+    payload = json.dumps({
+      "account_nickname": account_nickname,
+      "filter_same": True,
+      "filter_sensitive": True,
+      "index_list": [
+        1
+      ],
+      "keys": keys,
+      "max_time": max_time,
+      "min_time": min_time,
+      "msg_type": 9,
+      "rate": rate,
+      "reverse": True,
+      "top_n": 10000,
+      "use_max_time": True,
+      "use_min_time": True
+    })
+    res = requests.request("POST", api_url, headers={}, data=payload).json()
+    return res
+
+def artlce_list_top_tail(
+    account_nickname,
+    rate=0.1,
+    min_time=None,
+    max_time=None,
+    keys=[
+        "Title",
+        "ItemIndex",
+        "show_view_count",
+        "ContentUrl",
+        "msg_time",
+    ],
+):
+    api_url = f'{ROOT_URL}/artlce_list_top_tail'
+    payload = json.dumps({
+      "account_nickname": account_nickname,
+      "filter_same": True,
+      "filter_sensitive": True,
+      "index_list": [
+        1
+      ],
+      "keys": keys,
+      "max_time": max_time,
+      "min_time": min_time,
+      "msg_type": 9,
+      "rate": rate,
+      "reverse": True,
+      "top_n": 10000,
+      "use_max_time": True,
+      "use_min_time": True
+    })
+    res = requests.request("POST", api_url, headers={}, data=payload).json()
+    return res
+
+def get_score_list(
+    account_nickname_list,
+    text_list,
+    rate=0.1,
+    min_time=None,
+    max_time=None,
+    interest_type="by_avg",
+    sim_type="mean",
+    keys=[
+        "Title",
+        "show_view_count",
+    ],
+):
+    api_url = f'{ROOT_URL}/score_list'
+    payload = json.dumps({
+        "account_nickname_list": account_nickname_list,
+        "text_list": text_list,
+        "max_time": max_time,
+        "min_time": min_time,
+        "interest_type": interest_type,
+        "sim_type": sim_type,
+        "rate": rate,
+    })
+    res = requests.request("POST", api_url, headers={}, data=payload).json()
+    return res
+

+ 2 - 2
routes/AccountArticleRank.py

@@ -2,8 +2,8 @@
 @author: luojunhui
 """
 from applications.functions import ArticleRank
-from applications.lib import title_sim_v2_by_list
-from applications.lib import get_article_title_url_list
+from applications.functions import title_sim_v2_by_list
+from applications.functions import get_article_title_url_list
 
 
 def has_same(title, account_nickname):