mirror of
https://github.com/tgbot-collection/YYeTsBot.git
synced 2025-11-25 11:29:38 +08:00
separate newest comment
This commit is contained in:
54
API.md
54
API.md
@@ -6,7 +6,7 @@
|
|||||||
- [x] 评论楼中楼
|
- [x] 评论楼中楼
|
||||||
- [x] 联合搜索,当本地数据库搜索不到数据时,会返回extra字段
|
- [x] 联合搜索,当本地数据库搜索不到数据时,会返回extra字段
|
||||||
- [ ] 评论通知(浏览器通知)
|
- [ ] 评论通知(浏览器通知)
|
||||||
- [ ] 最新评论(id为-1)
|
- [ ] 最新评论
|
||||||
- [ ] 公告
|
- [ ] 公告
|
||||||
|
|
||||||
# BE
|
# BE
|
||||||
@@ -490,6 +490,58 @@
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 最新评论
|
||||||
|
|
||||||
|
* GET `api/comment/newest`
|
||||||
|
page size参数同上
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"data": [
|
||||||
|
{
|
||||||
|
"username": "111",
|
||||||
|
"date": "2021-07-11 10:22:59",
|
||||||
|
"browser": "Mozi0.31.0",
|
||||||
|
"content": "1111?",
|
||||||
|
"resource_id": 233,
|
||||||
|
"type": "parent",
|
||||||
|
"id": "60ea53113178773",
|
||||||
|
"group": [
|
||||||
|
"user"
|
||||||
|
],
|
||||||
|
"cnname": "留言板"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"username": "11111222",
|
||||||
|
"date": "2021-07-10 23:54:43",
|
||||||
|
"browser": "Mozi3322.64",
|
||||||
|
"content": "<reply value=\"60e939be4ad7f20773865d7a\">@abcd</reply>怎么下载啊\n",
|
||||||
|
"resource_id": 37552,
|
||||||
|
"type": "child",
|
||||||
|
"id": "60e9c2c222111397e",
|
||||||
|
"group": [
|
||||||
|
"user"
|
||||||
|
],
|
||||||
|
"cnname": "黑寡妇"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"username": "1111",
|
||||||
|
"date": "2021-07-10 23:41:06",
|
||||||
|
"browser": "Moz) Chrom.864.67",
|
||||||
|
"content": "我是1精彩",
|
||||||
|
"resource_id": 41382,
|
||||||
|
"type": "parent",
|
||||||
|
"id": "60e9bf924ad7f2077381111",
|
||||||
|
"group": [
|
||||||
|
"user"
|
||||||
|
],
|
||||||
|
"cnname": "洛基"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"count": 294
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
# metrics
|
# metrics
|
||||||
|
|
||||||
## 添加metrics
|
## 添加metrics
|
||||||
|
|||||||
@@ -26,7 +26,8 @@ from passlib.handlers.pbkdf2 import pbkdf2_sha256
|
|||||||
|
|
||||||
from database import (AnnouncementResource, BlacklistResource, CommentResource, ResourceResource,
|
from database import (AnnouncementResource, BlacklistResource, CommentResource, ResourceResource,
|
||||||
GrafanaQueryResource, MetricsResource, NameResource, OtherResource, DoubanResource,
|
GrafanaQueryResource, MetricsResource, NameResource, OtherResource, DoubanResource,
|
||||||
TopResource, UserLikeResource, UserResource, CaptchaResource, Redis, CommentChildResource)
|
TopResource, UserLikeResource, UserResource, CaptchaResource, Redis,
|
||||||
|
CommentChildResource, CommentNewestResource)
|
||||||
from utils import ts_date
|
from utils import ts_date
|
||||||
|
|
||||||
lib_path = pathlib.Path(__file__).parent.parent.joinpath("yyetsbot").resolve().as_posix()
|
lib_path = pathlib.Path(__file__).parent.parent.joinpath("yyetsbot").resolve().as_posix()
|
||||||
@@ -159,8 +160,6 @@ class CommentMongoResource(CommentResource, Mongo):
|
|||||||
self.inner_page = kwargs.get("inner_page", 1)
|
self.inner_page = kwargs.get("inner_page", 1)
|
||||||
self.inner_size = kwargs.get("inner_size", 5)
|
self.inner_size = kwargs.get("inner_size", 5)
|
||||||
condition = {"resource_id": resource_id, "deleted_at": {"$exists": False}, "type": {"$ne": "child"}}
|
condition = {"resource_id": resource_id, "deleted_at": {"$exists": False}, "type": {"$ne": "child"}}
|
||||||
if resource_id == -1:
|
|
||||||
condition.pop("resource_id")
|
|
||||||
|
|
||||||
count = self.db["comment"].count_documents(condition)
|
count = self.db["comment"].count_documents(condition)
|
||||||
data = self.db["comment"].find(condition, self.projection) \
|
data = self.db["comment"].find(condition, self.projection) \
|
||||||
@@ -271,6 +270,33 @@ class CommentChildMongoResource(CommentChildResource, CommentMongoResource, Mong
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class CommentNewestMongoResource(CommentNewestResource, CommentMongoResource, Mongo):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.page = 1
|
||||||
|
self.size = 5
|
||||||
|
self.projection = {"ip": False, "parent_id": False, "children": False}
|
||||||
|
self.condition = {"deleted_at": {"$exists": False}}
|
||||||
|
|
||||||
|
def get_comment(self, page: int, size: int) -> dict:
|
||||||
|
# ID,时间,用户名,用户组,资源名,资源id
|
||||||
|
condition = {"deleted_at": {"$exists": False}}
|
||||||
|
count = self.db["comment"].count_documents(condition)
|
||||||
|
data = self.db["comment"].find(condition, self.projection) \
|
||||||
|
.sort("_id", pymongo.DESCENDING).limit(size).skip((page - 1) * size)
|
||||||
|
data = list(data)
|
||||||
|
self.convert_objectid(data)
|
||||||
|
self.get_user_group(data)
|
||||||
|
for i in data:
|
||||||
|
resource_id = i.get("resource_id", 233)
|
||||||
|
res = self.db["yyets"].find_one({"data.info.id": resource_id})
|
||||||
|
i["cnname"] = res["data"]["info"]["cnname"]
|
||||||
|
return {
|
||||||
|
"data": data,
|
||||||
|
"count": count,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class GrafanaQueryMongoResource(GrafanaQueryResource, Mongo):
|
class GrafanaQueryMongoResource(GrafanaQueryResource, Mongo):
|
||||||
def get_grafana_data(self, date_series) -> str:
|
def get_grafana_data(self, date_series) -> str:
|
||||||
condition = {"date": {"$in": date_series}}
|
condition = {"date": {"$in": date_series}}
|
||||||
|
|||||||
@@ -161,6 +161,11 @@ class CommentChildResource:
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CommentNewestResource:
|
||||||
|
def get_comment(self, page: int, size: int) -> dict:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class CaptchaResource:
|
class CaptchaResource:
|
||||||
redis = Redis()
|
redis = Redis()
|
||||||
|
|
||||||
|
|||||||
@@ -352,6 +352,27 @@ class CommentChildHandler(CommentHandler):
|
|||||||
self.write(resp)
|
self.write(resp)
|
||||||
|
|
||||||
|
|
||||||
|
class CommentNewestHandler(CommentHandler):
|
||||||
|
class_name = f"CommentNewest{adapter}Resource"
|
||||||
|
|
||||||
|
# from Mongo import CommentNewestResource
|
||||||
|
# instance = CommentNewestResource()
|
||||||
|
|
||||||
|
@run_on_executor()
|
||||||
|
def get_comment(self):
|
||||||
|
size = int(self.get_argument("size", "5"))
|
||||||
|
page = int(self.get_argument("page", "1"))
|
||||||
|
|
||||||
|
comment_data = self.instance.get_comment(page, size)
|
||||||
|
self.hide_phone((comment_data["data"]))
|
||||||
|
return comment_data
|
||||||
|
|
||||||
|
@gen.coroutine
|
||||||
|
def get(self):
|
||||||
|
resp = yield self.get_comment()
|
||||||
|
self.write(resp)
|
||||||
|
|
||||||
|
|
||||||
class AnnouncementHandler(BaseHandler):
|
class AnnouncementHandler(BaseHandler):
|
||||||
class_name = f"Announcement{adapter}Resource"
|
class_name = f"Announcement{adapter}Resource"
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,8 @@ from tornado import web, httpserver, ioloop, options
|
|||||||
from Mongo import OtherMongoResource
|
from Mongo import OtherMongoResource
|
||||||
from handler import IndexHandler, UserHandler, ResourceHandler, TopHandler, UserLikeHandler, NameHandler, \
|
from handler import IndexHandler, UserHandler, ResourceHandler, TopHandler, UserLikeHandler, NameHandler, \
|
||||||
CommentHandler, AnnouncementHandler, CaptchaHandler, MetricsHandler, GrafanaIndexHandler, GrafanaSearchHandler, \
|
CommentHandler, AnnouncementHandler, CaptchaHandler, MetricsHandler, GrafanaIndexHandler, GrafanaSearchHandler, \
|
||||||
GrafanaQueryHandler, BlacklistHandler, NotFoundHandler, DBDumpHandler, CommentChildHandler, DoubanHandler
|
GrafanaQueryHandler, BlacklistHandler, NotFoundHandler, DBDumpHandler, CommentChildHandler, DoubanHandler, \
|
||||||
|
CommentNewestHandler
|
||||||
|
|
||||||
enable_pretty_logging()
|
enable_pretty_logging()
|
||||||
|
|
||||||
@@ -39,6 +40,7 @@ class RunServer:
|
|||||||
(r'/api/name', NameHandler),
|
(r'/api/name', NameHandler),
|
||||||
(r'/api/comment', CommentHandler),
|
(r'/api/comment', CommentHandler),
|
||||||
(r'/api/comment/child', CommentChildHandler),
|
(r'/api/comment/child', CommentChildHandler),
|
||||||
|
(r'/api/comment/newest', CommentNewestHandler),
|
||||||
(r'/api/captcha', CaptchaHandler),
|
(r'/api/captcha', CaptchaHandler),
|
||||||
(r'/api/metrics', MetricsHandler),
|
(r'/api/metrics', MetricsHandler),
|
||||||
(r'/api/grafana/', GrafanaIndexHandler),
|
(r'/api/grafana/', GrafanaIndexHandler),
|
||||||
|
|||||||
Reference in New Issue
Block a user