罗俊辉 преди 9 месеца
родител
ревизия
af73496df7
променени са 6 файла, в които са добавени 135 реда и са изтрити 17 реда
  1. 2 0
      applications/functions/article_account.py
  2. 81 0
      applications/updateAccountArticles.py
  3. 11 11
      routes/__init__.py
  4. 34 1
      routes/accountArticleRank.py
  5. 3 3
      test/nlp_dev.py
  6. 4 2
      test/rank_dev.py

+ 2 - 0
applications/functions/article_account.py

@@ -1,6 +1,8 @@
 """
 """
 @author: luojunhui
 @author: luojunhui
 """
 """
+import json
+
 import requests
 import requests
 
 
 
 

+ 81 - 0
applications/updateAccountArticles.py

@@ -0,0 +1,81 @@
+"""
+@author: luojunhui
+"""
+import json
+import requests
+
+
+class ArticleManager(object):
+    """
+    Update account articles
+    """
+
+    @classmethod
+    def search_articles(cls, title):
+        """
+        search articles in wx
+        :return:
+        """
+        url = "http://8.217.190.241:8888/crawler/wei_xin/keyword"
+        payload = json.dumps({
+            "keyword": title,
+            "cursor": "1"
+        })
+        headers = {
+            'Content-Type': 'application/json'
+        }
+
+        response = requests.request("POST", url, headers=headers, data=payload)
+        return response.json()
+
+    @classmethod
+    def get_article_text(cls, content_link):
+        """
+        获取文章
+        :param content_link:
+        :return:
+        """
+        url = "http://8.217.190.241:8888/crawler/wei_xin/detail"
+        payload = json.dumps({
+            "content_link": content_link,
+            "is_count": False,
+            "is_ad": False
+        })
+        headers = {
+            'Content-Type': 'application/json'
+        }
+        response = requests.request("POST", url, headers=headers, data=payload)
+        return response.json()
+
+    @classmethod
+    def getAccountArticleList(cls, gh_id, cursor):
+        """
+        获取账号的文章list
+        :return:
+        """
+        url = 'http://8.217.190.241:8888/crawler/wei_xin/blogger'
+        payload = {
+            'account_id': gh_id,
+            'cursor': cursor,
+        }
+        msg_list = []
+        next_cursor = None
+        has_more = None
+        try:
+            res_data = requests.request("POST", url, headers={}, data=json.dumps(payload)).json()['data']
+            msg_list = res_data['data']
+            next_cursor = res_data['next_cursor']
+            has_more = res_data['has_more']
+            print(json.dumps(res_data, ensure_ascii=False, indent=4))
+            # for msg in msg_list:
+            #     msg['cursor'] = curso
+            #     msg['next_cursor'] = next_cursor
+            #     msg['has_more'] = has_more
+        except Exception as e:
+            print(e)
+        return msg_list, next_cursor, has_more
+
+
+if __name__ == '__main__':
+    AM = ArticleManager()
+    AM.getAccountArticleList(gh_id="gh_5ae65db96cb7", cursor=None)

+ 11 - 11
routes/__init__.py

@@ -6,7 +6,7 @@ from quart import Blueprint, jsonify, request
 
 
 from .accountArticleRank import AccountArticleRank
 from .accountArticleRank import AccountArticleRank
 from .nlpServer import NLPServer
 from .nlpServer import NLPServer
-# from .articleDBServer import ArticleDB
+from .articleDBServer import ArticleDB
 from .accountServer import AccountServer
 from .accountServer import AccountServer
 
 
 
 
@@ -60,15 +60,15 @@ def AlgRoutes(mysql_client, model):
         response = await AS.deal()
         response = await AS.deal()
         return jsonify(response)
         return jsonify(response)
 
 
-    # @blueprint.route("/article_db", methods=["POST"])
-    # async def articleMysql():
-    #     """
-    #     长文数据库相关接口
-    #     :return:
-    #     """
-    #     params = await request.get_json()
-    #     ADB = ArticleDB(params=params, mysql_client=mysql_client)
-    #     response = await ADB.deal()
-    #     return jsonify(response)
+    @blueprint.route("/article_db", methods=["POST"])
+    async def articleMysql():
+        """
+        长文数据库相关接口
+        :return:
+        """
+        params = await request.get_json()
+        ADB = ArticleDB(params=params, mysql_client=mysql_client)
+        response = await ADB.deal()
+        return jsonify(response)
 
 
     return blueprint
     return blueprint

+ 34 - 1
routes/accountArticleRank.py

@@ -263,7 +263,40 @@ class AccountArticleRank(object):
         Rank Version 2
         Rank Version 2
         :return:
         :return:
         """
         """
-        return await self.rank_v1()
+        try:
+            ranks = ArticleRank().rank(
+                account_list=[self.accountName],
+                text_list=[i["title"] for i in self.publishArticleList],
+            )
+            score_list1 = ranks[self.accountName]["score_list"]
+            ranked_v2 = []
+            for index, value in enumerate(score_list1):
+                obj = self.publishArticleList[index]
+                obj["score"] = value
+                ranked_v2.append(obj)
+            ranked_v2 = sorted(ranked_v2, key=lambda x: (-x["score"], -x['crawlerViewCount']))
+            result = {
+                "accountId": self.accountId,
+                "accountName": self.accountName,
+                "ghId": self.ghId,
+                "strategy": self.strategy,
+                "publishNum": self.publishNum,
+                "rank_list": ranked_v2[: self.publishNum],
+                "filter_list": self.filter_list,
+            }
+            response = {"status": "Rank Success", "data": result, "code": 1}
+        except Exception as e:
+            result = {
+                "accountId": self.accountId,
+                "accountName": self.accountName,
+                "ghId": self.ghId,
+                "strategy": self.strategy,
+                "publishNum": self.publishNum,
+                "rank_list": self.publishArticleList[: self.publishNum],
+                "filter_list": self.filter_list,
+            }
+            response = {"status": "Rank Fail Because Of {}".format(e), "data": result, "code": 1}
+        return response
 
 
     async def rank_v3(self):
     async def rank_v3(self):
         """
         """

+ 3 - 3
test/nlp_dev.py

@@ -7,8 +7,6 @@ import time
 
 
 from concurrent.futures.thread import ThreadPoolExecutor
 from concurrent.futures.thread import ThreadPoolExecutor
 
 
-
-
 list_data = {
 list_data = {
     "text_list_a": ["凯旋", "毛泽东", "周恩来"],
     "text_list_a": ["凯旋", "毛泽东", "周恩来"],
     "text_list_b": ["胜利", "毛主席", "周总理"]
     "text_list_b": ["胜利", "毛主席", "周总理"]
@@ -183,6 +181,8 @@ body6 = {
     },
     },
     "function": "similarities_cross_avg"
     "function": "similarities_cross_avg"
 }
 }
+
+
 def test_request(url):
 def test_request(url):
     headers = {"Content-Type": "application/json"}
     headers = {"Content-Type": "application/json"}
     a = time.time()
     a = time.time()
@@ -192,7 +192,7 @@ def test_request(url):
     print(b - a)
     print(b - a)
 
 
 
 
-url_list = ["http://47.98.154.124:6060/nlp"]
+url_list = ["http://192.168.100.31:6061/nlp"]
 test_request(url_list[0])
 test_request(url_list[0])
 # with ThreadPoolExecutor(max_workers=3) as Pool:
 # with ThreadPoolExecutor(max_workers=3) as Pool:
 #     Pool.map(test_request, url_list)
 #     Pool.map(test_request, url_list)

+ 4 - 2
test/rank_dev.py

@@ -2,12 +2,14 @@ import json
 import requests
 import requests
 import time
 import time
 
 
-url = "http://47.98.154.124:6060/articleRank"
+url = "http://localhost:6060/articleRank"
 
 
 with open("body.json") as f:
 with open("body.json") as f:
     data = json.loads(f.read())
     data = json.loads(f.read())
 body = json.loads(data['data'])
 body = json.loads(data['data'])
-
+body['strategy'] = "ArticleRankV2"
+body['publishNum'] = 8
+body['accountName'] = "指尖奇文"
 
 
 headers = {"Content-Type": "application/json"}
 headers = {"Content-Type": "application/json"}