diff --git a/AppMain.py b/AppMain.py index 08ee758..3d6030a 100644 --- a/AppMain.py +++ b/AppMain.py @@ -11,8 +11,7 @@ import core.PyWebPageAPI as PyWebPageAPI import core.WebViewWIndow as WebViewWIndow import core.DBServices as DBServices import ProjectCfg - - +import core.CallServerAPIs as CallServerAPIs def exit_handler(signum, frame): """处理退出信号""" diff --git a/core/LoginServices.py b/core/LoginServices.py index 82319f5..e598c61 100644 --- a/core/LoginServices.py +++ b/core/LoginServices.py @@ -10,12 +10,12 @@ class AuthClient: self.stage = 'find-account' self.error = None self.account_identifier = '' - self.device_id = '' self.challenge = None self.factors = [] self.selected_factor_id = None self.password = '' - self.user_store = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' # 您可以自定义此User-Agent字符串 + self.user_store = f"SolianForPythonApp/0.000.001({platform.system()})" # 您可以自定义此User-Agent字符串 + self.device_id = self.user_store def generate_device_id(self): """生成设备指纹 @@ -41,7 +41,7 @@ class AuthClient: try: response = requests.post( f"{self.base_url}/auth/challenge", - headers={'Content-Type': 'application/json', 'User-Agent': self.user_store,'device_name': "A Python login app.By NRFF & Deepseek"}, # 添加自定义User-Agent + headers={'Content-Type': 'application/json', 'User-Agent': self.user_store,"device_id":self.device_id}, # 添加自定义User-Agent data=json.dumps({ 'platform': 1, 'account': self.account_identifier, @@ -68,7 +68,7 @@ class AuthClient: try: response = requests.get( f"{self.base_url}/auth/challenge/{self.challenge['id']}/factors", - headers={'User-Agent': self.user_store,'device_name': "A Python login app.By NRFF & Deepseek"} # 添加自定义User-Agent + headers={'User-Agent': self.user_store,"device_id":self.device_id} # 添加自定义User-Agent ) if not response.ok: raise Exception('Could not fetch authentication factors.') @@ -102,7 +102,7 @@ class AuthClient: try: response = requests.post( f"{self.base_url}/auth/challenge/{self.challenge['id']}/factors/{self.selected_factor_id}", - headers={'Content-Type': 'application/json', 'User-Agent': self.user_store, 'device_name': "A Python login app.By NRFF & Deepseek"}, # 添加自定义User-Agent + headers={'Content-Type': 'application/json', 'User-Agent': self.user_store,"device_id":self.device_id}, # 添加自定义User-Agent data=json.dumps(hint) ) if not response.ok: @@ -136,7 +136,7 @@ class AuthClient: try: response = requests.patch( f"{self.base_url}/auth/challenge/{self.challenge['id']}", - headers={'Content-Type': 'application/json', 'User-Agent': self.user_store,'device_name': "A Python login app.By NRFF & Deepseek"}, # 添加自定义User-Agent + headers={'Content-Type': 'application/json', 'User-Agent': self.user_store,"device_id":self.device_id}, # 添加自定义User-Agent data=json.dumps({ 'factor_id': self.selected_factor_id, 'password': self.password, @@ -165,7 +165,7 @@ class AuthClient: try: response = requests.post( f"{self.base_url}/auth/token", - headers={'Content-Type': 'application/json', 'User-Agent': self.user_store,'device_name': "A Python login app.By NRFF & Deepseek"}, # 添加自定义User-Agent + headers={'Content-Type': 'application/json', 'User-Agent': self.user_store,"device_id":self.device_id}, # 添加自定义User-Agent data=json.dumps({ 'grant_type': 'authorization_code', 'code': self.challenge['id'], @@ -201,7 +201,7 @@ class AuthClient: # 示例调用 if __name__ == "__main__": auth_client = AuthClient(base_url='https://api.solian.app/id') - account_identifier = ''#你的账号 + account_identifier = 'nanci'#你的账号 selected_factor_id = "enter-code" # 用户需要选择一个因素 password = ''#你的密码 # 第一步:检查账户有效性 diff --git a/core/SNAPI/CallServer.py b/core/SNAPI/CallServer.py index 99ab109..de2e16d 100644 --- a/core/SNAPI/CallServer.py +++ b/core/SNAPI/CallServer.py @@ -1,3 +1,4 @@ +<<<<<<< HEAD import requests import json from requests.exceptions import RequestException @@ -27,4 +28,35 @@ def _make_request(method: str, url: str, headers: dict, params: dict = None, nor except json.JSONDecodeError: return {"error": response.text} except RequestException as e: +======= +import requests +import json +from requests.exceptions import RequestException +import platform + +UA = f"SolianForPythonApp/0.000.001 ({platform.system()})" + +def _make_request(method: str, url: str, headers: dict, params: dict = None, normal_codes: list = [200], request_body: dict = None) -> dict: + """内部辅助函数,用于发送HTTP请求并处理响应""" + headers['User-Agent'] = UA + try: + if method == 'GET': + response = requests.get(url, headers=headers, params=params) + elif method == 'POST': + response = requests.post(url, headers=headers, data=json.dumps(request_body)) + elif method == 'DELETE': + response = requests.delete(url, headers=headers, params=params) + elif method == 'PATCH': + response = requests.patch(url, headers=headers, data=json.dumps(request_body)) + else: + return {"error": "Unsupported HTTP method"} + + if response.status_code not in normal_codes: + return {"error": f"Unexpected status code: {response.status_code}"} + + return response.json() + except json.JSONDecodeError: + return {"error": response.text} + except RequestException as e: +>>>>>>> 967cea4c47a481e79c92fda0760c423de7fbcedf return {"error": str(e)} \ No newline at end of file diff --git a/core/SNAPI/Chat.py b/core/SNAPI/Chat.py index 36757a3..a107e16 100644 --- a/core/SNAPI/Chat.py +++ b/core/SNAPI/Chat.py @@ -1,3 +1,4 @@ +<<<<<<< HEAD from ProjectCfg import DOMAIN from CallServer import _make_request from typing import List,Any,Optional,Dict @@ -197,3 +198,204 @@ def KickChatMember(Authorization: str, room_id: str, member_id: str) -> dict: url = f"{DOMAIN}/chat/{room_id}/members/{member_id}" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('DELETE', url, headers, normal_codes=[204]) +======= +from ProjectCfg import DOMAIN +from CallServer import _make_request +from typing import List,Any,Optional,Dict + +###=========================聊天API================================= +def ChatSummary(Authorization: str) -> dict: + """获取聊天摘要""" + url = f"{DOMAIN}/chat/summary" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def GetChatMessages(Authorization: str, room_id: str, offset: int = 0, take: int = 20) -> dict: + """获取聊天消息""" + url = f"{DOMAIN}/chat/{room_id}/messages" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {"offset": offset, "take": take} + return _make_request('GET', url, headers, params=params) + +def PostChatMessage(Authorization: str, room_id: str, content: str, nonce: Optional[str] = None, attachments_id: Optional[List[str]] = None, meta: Optional[Dict[str, Any]] = None, replied_message_id: Optional[str] = None, forwarded_message_id: Optional[str] = None) -> dict: + """发送聊天消息""" + body = { + "content": content, + "nonce": nonce, + "attachments_id": attachments_id, + "meta": meta, + "replied_message_id": replied_message_id, + "forwarded_message_id": forwarded_message_id, + } + url = f"{DOMAIN}/chat/{room_id}/messages" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) + +def GetChatMessageById(Authorization: str, room_id: str, message_id: str) -> dict: + """获取具体聊天消息所有信息""" + url = f"{DOMAIN}/chat/{room_id}/messages/{message_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def PatchChatMessage(Authorization: str, room_id: str, message_id: str, content: Optional[str] = None, nonce: Optional[str] = None, attachments_id: Optional[List[str]] = None, meta: Optional[Dict[str, Any]] = None, replied_message_id: Optional[str] = None, forwarded_message_id: Optional[str] = None) -> dict: + """修改聊天消息""" + body = { + "content": content, + "nonce": nonce, + "attachments_id": attachments_id, + "meta": meta, + "replied_message_id": replied_message_id, + "forwarded_message_id": forwarded_message_id, + } + url = f"{DOMAIN}/chat/{room_id}/messages/{message_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('PATCH', url, headers, request_body=body) + +def DeleteChatMessage(Authorization: str, room_id: str, message_id: str) -> dict: + """删除聊天消息""" + url = f"{DOMAIN}/chat/{room_id}/messages/{message_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers, normal_codes=[204]) + +def PostChatSync(Authorization: str, room_id: str, last_sync_timestamp: int) -> dict: + """同步聊天消息""" + body = {"last_sync_timestamp": last_sync_timestamp} + url = f"{DOMAIN}/chat/{room_id}/sync" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=body) + +###=========================聊天室API================================= +def GetChatRoom(Authorization: str, id: str) -> dict: + """获取聊天房间信息""" + url = f"{DOMAIN}/chat/{id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def PatchChatRoom(Authorization: str, id: str, name: Optional[str] = None, description: Optional[str] = None, picture_id: Optional[str] = None, background_id: Optional[str] = None, realm_id: Optional[str] = None, is_community: Optional[bool] = None, is_public: Optional[bool] = None) -> dict: + """修改聊天房间信息""" + body = { + "name": name, + "description": description, + "picture_id": picture_id, + "background_id": background_id, + "realm_id": realm_id, + "is_community": is_community, + "is_public": is_public, + } + url = f"{DOMAIN}/chat/{id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('PATCH', url, headers, request_body=body) + +def DeleteChatRoom(Authorization: str, id: str) -> dict: + """删除聊天房间""" + url = f"{DOMAIN}/chat/{id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers, normal_codes=[204]) + +def GetChatRooms(Authorization: str) -> dict: + """获取聊天列表""" + url = f"{DOMAIN}/chat" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def PostChatRoom(Authorization: str, name: str, description: Optional[str] = None, picture_id: Optional[str] = None, background_id: Optional[str] = None, realm_id: Optional[str] = None, is_community: Optional[bool] = None, is_public: Optional[bool] = None) -> dict: + """创建聊天房间""" + body = { + "name": name, + "description": description, + "picture_id": picture_id, + "background_id": background_id, + "realm_id": realm_id, + "is_community": is_community, + "is_public": is_public, + } + url = f"{DOMAIN}/chat" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) + +def GetDirectChat(Authorization: str, account_id: str) -> dict: + """获取聊天对象用户信息""" + url = f"{DOMAIN}/chat/direct/{account_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def GetChatRoomSelfInfo(Authorization: str, room_id: str) -> dict: + """获取聊天房间自己信息""" + url = f"{DOMAIN}/chat/{room_id}/members/me" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def JoinChatRoom(Authorization: str, room_id: str) -> dict: + """加入聊天房间""" + url = f"{DOMAIN}/chat/{room_id}/members/me" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, normal_codes=[201]) + +def LeaveChatRoom(Authorization: str, room_id: str) -> dict: + """退出聊天房间""" + url = f"{DOMAIN}/chat/{room_id}/members/me" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers, normal_codes=[204]) + +def GetChatRoomMembers(Authorization: str, room_id: str, offset: int = 0, take: int = 20, with_status: bool = False) -> dict: + """获取聊天房间成员""" + params = { + "offset": offset, + "take": take, + "withStatus": with_status, + } + url = f"{DOMAIN}/chat/{room_id}/members" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers, params=params) + +def PostChatMemberInvite(Authorization: str, room_id: str, related_user_id: str, role: int) -> dict: + """发送聊天邀请""" + body = { + "related_user_id": related_user_id, + "role": role, + } + url = f"{DOMAIN}/chat/invites/{room_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) + +def GetChatInvites(Authorization: str) -> dict: + """获取聊天邀请""" + url = f"{DOMAIN}/chat/invites" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def AcceptChatInvite(Authorization: str, room_id: str) -> dict: + """接受聊天邀请""" + url = f"{DOMAIN}/chat/invites/{room_id}/accept" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers) + +def DeclineChatInvite(Authorization: str, room_id: str) -> dict: + """拒绝聊天邀请""" + url = f"{DOMAIN}/chat/invites/{room_id}/decline" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers) + +def SetChatNotify(Authorization: str, room_id: str, notify_level: int, break_until: Optional[str] = None) -> dict: + """设置聊天通知级别""" + body = { + "notify_level": notify_level, + "break_until": break_until, + } + url = f"{DOMAIN}/chat/{room_id}/members/me/notify" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('PATCH', url, headers, request_body=body, normal_codes=[201]) + +def SetChatMemberRole(Authorization: str, room_id: str, member_id: str, role: int) -> dict: + """设置聊天成员角色""" + body = {"role": role} + url = f"{DOMAIN}/chat/{room_id}/members/{member_id}/role" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('PATCH', url, headers, request_body=body, normal_codes=[201]) + +def KickChatMember(Authorization: str, room_id: str, member_id: str) -> dict: + """踢出聊天成员""" + url = f"{DOMAIN}/chat/{room_id}/members/{member_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers, normal_codes=[204]) +>>>>>>> 967cea4c47a481e79c92fda0760c423de7fbcedf diff --git a/core/SNAPI/Poll.py b/core/SNAPI/Poll.py index fe2a5f3..51b844d 100644 --- a/core/SNAPI/Poll.py +++ b/core/SNAPI/Poll.py @@ -1,3 +1,4 @@ +<<<<<<< HEAD from ProjectCfg import DOMAIN from CallServer import _make_request from typing import List,Any,Optional,Dict @@ -67,3 +68,74 @@ def PatchPoll(Authorization: str, poll_id: str, title: Optional[str] = None, des url = f"{DOMAIN}/polls/{poll_id}" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('PATCH', url, headers, request_body=body, normal_codes=[201]) +======= +from ProjectCfg import DOMAIN +from CallServer import _make_request +from typing import List,Any,Optional,Dict + +###==========================投票功能============================ +def GetPoll(poll_id: str, Authorization: str) -> dict: + """获取投票""" + url = f"{DOMAIN}/polls/{poll_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def PostPoll(Authorization: str, title: Optional[str] = None, description: Optional[str] = None, ended_at: Optional[str] = None, is_anonymous: Optional[bool] = None, questions: Optional[List[Dict[str, Any]]] = None) -> dict: + """创建投票""" + body = { + "title": title, + "description": description, + "ended_at": ended_at, + "is_anonymous": is_anonymous, + "questions": questions, + } + url = f"{DOMAIN}/polls" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) + +def DeletePoll(Authorization: str, poll_id: str) -> dict: + """删除投票""" + url = f"{DOMAIN}/polls/{poll_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers, normal_codes=[204]) + +def AnswerPoll(Authorization: str, poll_id: str, answer: Dict[str, Any]) -> dict: + """回答投票""" + body = {"answer": answer} + url = f"{DOMAIN}/polls/{poll_id}/answer" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) + +def DeletePollAnswer(Authorization: str, poll_id: str) -> dict: + """删除投票回答""" + url = f"{DOMAIN}/polls/{poll_id}/answer" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers, normal_codes=[204]) + +def GetPollFeedback(Authorization: str, poll_id: str, offset: int = 0, take: int = 20) -> dict: + """获取投票反馈""" + url = f"{DOMAIN}/polls/{poll_id}/feedback" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {'offset': offset, 'take': take} + return _make_request('GET', url, headers, params=params) + +def GetMyPolls(Authorization: str, pub: Optional[str] = None, active: bool = False, offset: int = 0, take: int = 20) -> dict: + """获取我的投票""" + url = f"{DOMAIN}/polls/me" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {'offset': offset, 'take': take, 'pub': pub, 'active': active} + return _make_request('GET', url, headers, params=params) + +def PatchPoll(Authorization: str, poll_id: str, title: Optional[str] = None, description: Optional[str] = None, ended_at: Optional[str] = None, is_anonymous: Optional[bool] = None, questions: Optional[List[Dict[str, Any]]] = None) -> dict: + """修改投票""" + body = { + "title": title, + "description": description, + "ended_at": ended_at, + "is_anonymous": is_anonymous, + "questions": questions, + } + url = f"{DOMAIN}/polls/{poll_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('PATCH', url, headers, request_body=body, normal_codes=[201]) +>>>>>>> 967cea4c47a481e79c92fda0760c423de7fbcedf diff --git a/core/SNAPI/Post.py b/core/SNAPI/Post.py index 9e1a2e8..4a2635f 100644 --- a/core/SNAPI/Post.py +++ b/core/SNAPI/Post.py @@ -1,3 +1,4 @@ +<<<<<<< HEAD from ProjectCfg import DOMAIN from CallServer import _make_request from typing import List,Any,Optional,Dict @@ -146,3 +147,153 @@ def DeletePinPost(Authorization: str, post_id: str) -> dict: url = f"{DOMAIN}/posts/{post_id}/pin" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('DELETE', url, headers, normal_codes=[204]) +======= +from ProjectCfg import DOMAIN +from CallServer import _make_request +from typing import List,Any,Optional,Dict +###==========================帖子管理============================ +def GetFeaturedPosts(Authorization: str) -> dict: + """获取精选帖子""" + url = f"{DOMAIN}/posts/featured" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def GetPosts(Authorization: str, offset: int = 0, take: int = 20, pub: Optional[str] = None, realm: Optional[str] = None, post_type: Optional[int] = None, categories: Optional[List[str]] = None, tags: Optional[List[str]] = None, query: Optional[str] = None, vector: bool = False, media: bool = False, shuffle: bool = False, replies: Optional[bool] = None, pinned: Optional[bool] = None) -> dict: + """获取帖子列表""" + url = f"{DOMAIN}/posts" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = { + "offset": offset, + "take": take, + "pub": pub, + "realm": realm, + "type": post_type, + "categories": categories, + "tags": tags, + "query": query, + "vector": vector, + "media": media, + "shuffle": shuffle, + "replies": replies, + "pinned": pinned, + } + return _make_request('GET', url, headers, params=params) + +def PostPost(Authorization: str, title: str, description: str, slug: str, content: str, visibility: int, post_type: int, embed_view: Optional[Dict[str, Any]] = None, tags: Optional[List[str]] = None, categories: Optional[List[str]] = None, attachments: Optional[List[str]] = None, published_at: Optional[str] = None, replied_post_id: Optional[str] = None, forwarded_post_id: Optional[str] = None, realm_id: Optional[str] = None, poll_id: Optional[str] = None) -> dict: + """创建帖子""" + body = { + "title": title, + "description": description, + "slug": slug, + "content": content, + "visibility": visibility, + "type": post_type, + "embed_view": embed_view, + "tags": tags, + "categories": categories, + "attachments": attachments, + "published_at": published_at, + "replied_post_id": replied_post_id, + "forwarded_post_id": forwarded_post_id, + "realm_id": realm_id, + "poll_id": poll_id, + } + url = f"{DOMAIN}/posts" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) + +def GetPostById(Authorization: str, post_id: str) -> dict: + """获取帖子详情""" + url = f"{DOMAIN}/posts/{post_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def PatchPost(Authorization: str, post_id: str, title: Optional[str] = None, description: Optional[str] = None, slug: Optional[str] = None, content: Optional[str] = None, visibility: Optional[int] = None, post_type: Optional[int] = None, embed_view: Optional[Dict[str, Any]] = None, tags: Optional[List[str]] = None, categories: Optional[List[str]] = None, attachments: Optional[List[str]] = None, published_at: Optional[str] = None, replied_post_id: Optional[str] = None, forwarded_post_id: Optional[str] = None, realm_id: Optional[str] = None, poll_id: Optional[str] = None) -> dict: + """修改帖子""" + body = { + "title": title, + "description": description, + "slug": slug, + "content": content, + "visibility": visibility, + "type": post_type, + "embed_view": embed_view, + "tags": tags, + "categories": categories, + "attachments": attachments, + "published_at": published_at, + "replied_post_id": replied_post_id, + "forwarded_post_id": forwarded_post_id, + "realm_id": realm_id, + "poll_id": poll_id, + } + url = f"{DOMAIN}/posts/{post_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('PATCH', url, headers, request_body=body) + +def DeletePost(Authorization: str, post_id: str) -> dict: + """删除帖子""" + url = f"{DOMAIN}/posts/{post_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers, normal_codes=[204]) + +def GetPostReactions(Authorization: str, post_id: str, symbol: Optional[str] = None, offset: int = 0, take: int = 20) -> dict: + """获取帖子反应""" + url = f"{DOMAIN}/posts/{post_id}/reactions" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {"symbol": symbol, "offset": offset, "take": take} + return _make_request('GET', url, headers, params=params) + +def PostPostReaction(Authorization: str, post_id: str, symbol: str, attitude: int) -> dict: + """发送帖子反应""" + body = {"symbol": symbol, "attitude": attitude} + url = f"{DOMAIN}/posts/{post_id}/reactions" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) + +def GetFeaturedPostReplies(Authorization: str, post_id: str) -> dict: + """获取精选帖子回复""" + url = f"{DOMAIN}/posts/{post_id}/replies/featured" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def GetPinnedPostReplies(Authorization: str, post_id: str) -> dict: + """获取置顶帖子回复""" + url = f"{DOMAIN}/posts/{post_id}/replies/pinned" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def GetPostReplies(Authorization: str, post_id: str, offset: int = 0, take: int = 20) -> dict: + """获取帖子回复""" + url = f"{DOMAIN}/posts/{post_id}/replies" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {"offset": offset, "take": take} + return _make_request('GET', url, headers, params=params) + +def GetPostAwards(Authorization: str, post_id: str, offset: int = 0, take: int = 20) -> dict: + """获取帖子奖励""" + url = f"{DOMAIN}/posts/{post_id}/awards" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {"offset": offset, "take": take} + return _make_request('GET', url, headers, params=params) + +def PostPostAward(Authorization: str, post_id: str, amount: float, attitude: int, message: Optional[str] = None) -> dict: + """发送帖子奖励""" + body = {"amount": amount, "attitude": attitude, "message": message} + url = f"{DOMAIN}/posts/{post_id}/awards" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) + +def PostPinPost(Authorization: str, post_id: str, mode: int) -> dict: + """置顶帖子""" + body = {"mode": mode} + url = f"{DOMAIN}/posts/{post_id}/pin" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) + +def DeletePinPost(Authorization: str, post_id: str) -> dict: + """取消置顶帖子""" + url = f"{DOMAIN}/posts/{post_id}/pin" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers, normal_codes=[204]) +>>>>>>> 967cea4c47a481e79c92fda0760c423de7fbcedf diff --git a/core/SNAPI/PostCategory.py b/core/SNAPI/PostCategory.py index 648f105..2804acf 100644 --- a/core/SNAPI/PostCategory.py +++ b/core/SNAPI/PostCategory.py @@ -1,3 +1,4 @@ +<<<<<<< HEAD from ProjectCfg import DOMAIN from CallServer import _make_request from typing import Optional @@ -40,3 +41,47 @@ def GetCategorySubscription(Authorization: str, slug: str) -> dict: url = f"{DOMAIN}/posts/categories/{slug}/subscription" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('GET', url, headers) +======= +from ProjectCfg import DOMAIN +from CallServer import _make_request +from typing import Optional + +###==========================帖子分类管理============================ +def GetPostCategories(Authorization: str, query: Optional[str] = None, offset: int = 0, take: int = 20, order: Optional[str] = None) -> dict: + """获取帖子分类""" + url = f"{DOMAIN}/posts/categories" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {"query": query, "offset": offset, "take": take, "order": order} + return _make_request('GET', url, headers, params=params) + +def PostPostCategory(Authorization: str, slug: Optional[str] = None, name: Optional[str] = None) -> dict: + """创建帖子分类""" + body = {"slug": slug, "name": name} + url = f"{DOMAIN}/posts/categories" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) + +def GetPostCategoryBySlug(Authorization: str, slug: str) -> dict: + """获取帖子分类详情""" + url = f"{DOMAIN}/posts/categories/{slug}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def PostSubscribeCategory(Authorization: str, slug: str) -> dict: + """订阅帖子分类""" + url = f"{DOMAIN}/posts/categories/{slug}/subscribe" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, normal_codes=[201]) + +def PostUnsubscribeCategory(Authorization: str, slug: str) -> dict: + """取消订阅帖子分类""" + url = f"{DOMAIN}/posts/categories/{slug}/unsubscribe" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, normal_codes=[201]) + +def GetCategorySubscription(Authorization: str, slug: str) -> dict: + """获取分类订阅状态""" + url = f"{DOMAIN}/posts/categories/{slug}/subscription" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) +>>>>>>> 967cea4c47a481e79c92fda0760c423de7fbcedf diff --git a/core/SNAPI/PostTag.py b/core/SNAPI/PostTag.py index 4d2d284..11a6a6c 100644 --- a/core/SNAPI/PostTag.py +++ b/core/SNAPI/PostTag.py @@ -1,3 +1,4 @@ +<<<<<<< HEAD from ProjectCfg import DOMAIN from CallServer import _make_request from typing import Optional @@ -40,3 +41,47 @@ def GetTagSubscription(Authorization: str, slug: str) -> dict: url = f"{DOMAIN}/posts/tags/{slug}/subscription" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('GET', url, headers) +======= +from ProjectCfg import DOMAIN +from CallServer import _make_request +from typing import Optional + +###==========================帖子标签管理============================ +def GetPostTags(Authorization: str, query: Optional[str] = None, offset: int = 0, take: int = 20, order: Optional[str] = None) -> dict: + """获取帖子标签""" + url = f"{DOMAIN}/posts/tags" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {"query": query, "offset": offset, "take": take, "order": order} + return _make_request('GET', url, headers, params=params) + +def PostTag(Authorization: str, slug: Optional[str] = None, name: Optional[str] = None) -> dict: + """创建帖子标签""" + body = {"slug": slug, "name": name} + url = f"{DOMAIN}/posts/tags" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) + +def GetTagBySlug(Authorization: str, slug: str) -> dict: + """获取标签详情""" + url = f"{DOMAIN}/posts/tags/{slug}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def PostSubscribeTag(Authorization: str, slug: str) -> dict: + """订阅标签""" + url = f"{DOMAIN}/posts/tags/{slug}/subscribe" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, normal_codes=[201]) + +def PostUnsubscribeTag(Authorization: str, slug: str) -> dict: + """取消订阅标签""" + url = f"{DOMAIN}/posts/tags/{slug}/unsubscribe" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, normal_codes=[201]) + +def GetTagSubscription(Authorization: str, slug: str) -> dict: + """获取标签订阅状态""" + url = f"{DOMAIN}/posts/tags/{slug}/subscription" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) +>>>>>>> 967cea4c47a481e79c92fda0760c423de7fbcedf diff --git a/core/SNAPI/Publisher.py b/core/SNAPI/Publisher.py index af2e505..dc7abe1 100644 --- a/core/SNAPI/Publisher.py +++ b/core/SNAPI/Publisher.py @@ -1,3 +1,4 @@ +<<<<<<< HEAD from ProjectCfg import DOMAIN from CallServer import _make_request from typing import Optional @@ -147,3 +148,154 @@ def PostPublisherUnsubscribe(Authorization: str, name: str) -> dict: url = f"{DOMAIN}/api/publishers/{name}/unsubscribe" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('POST', url, headers) +======= +from ProjectCfg import DOMAIN +from CallServer import _make_request +from typing import Optional +###==========================发布者管理============================ +def GetPublisher(Authorization: str, name: str) -> dict: + """获取发布者信息""" + url = f"{DOMAIN}/publishers/{name}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def PatchPublisher(Authorization: str, name: str, nick: Optional[str] = None, bio: Optional[str] = None, picture_id: Optional[str] = None, background_id: Optional[str] = None) -> dict: + """修改发布者信息""" + body = { + "nick": nick, + "bio": bio, + "picture_id": picture_id, + "background_id": background_id, + } + url = f"{DOMAIN}/publishers/{name}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('PATCH', url, headers, request_body=body, normal_codes=[201]) + +def DeletePublisher(Authorization: str, name: str) -> dict: + """删除发布者""" + url = f"{DOMAIN}/publishers/{name}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers, normal_codes=[204]) + +def GetPublisherStats(Authorization: str, name: str) -> dict: + """获取发布者统计信息""" + url = f"{DOMAIN}/publishers/{name}/stats" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def GetPublishersOfAccountId(Authorization: str, account_id: str) -> dict: + """获取指定账户的发布者""" + url = f"{DOMAIN}/publishers/of/{account_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def GetPublishers(Authorization: str) -> dict: + """获取所有发布者""" + url = f"{DOMAIN}/publishers" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def PostPublisherInvite(Authorization: str, name: str, related_user_id: str, role: int) -> dict: + """发送发布者邀请""" + body = {"related_user_id": related_user_id, "role": role} + url = f"{DOMAIN}/publishers/invites/{name}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) + +def GetPublisherInvites(Authorization: str, name: str) -> dict: + """获取发布者邀请""" + url = f"{DOMAIN}/publishers/invites/{name}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def AcceptPublisherInvite(Authorization: str, name: str) -> dict: + """接受发布者邀请""" + url = f"{DOMAIN}/publishers/invites/{name}/accept" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, normal_codes=[201]) + +def DeclinePublisherInvite(Authorization: str, name: str) -> dict: + """拒绝发布者邀请""" + url = f"{DOMAIN}/publishers/invites/{name}/decline" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, normal_codes=[201]) + +def DeletePublisherMember(Authorization: str, name: str, member_id: str) -> dict: + """删除发布者成员""" + url = f"{DOMAIN}/publishers/{name}/members/{member_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers, normal_codes=[204]) + +def PostIndividualPublisher(Authorization: str, name: str, nick: Optional[str] = None, bio: Optional[str] = None, picture_id: Optional[str] = None, background_id: Optional[str] = None) -> dict: + """创建个人发布者""" + body = { + "name": name, + "nick": nick, + "bio": bio, + "picture_id": picture_id, + "background_id": background_id, + } + url = f"{DOMAIN}/publishers/individual" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) + +def PostOrganizationPublisher(Authorization: str, name: str, realm_slug: str) -> dict: + """创建组织发布者""" + body = {"name": name, "realm_slug": realm_slug} + url = f"{DOMAIN}/publishers/organization/{realm_slug}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) + +def GetPublisherMembers(Authorization: str, name: str, offset: int = 0, take: int = 20) -> dict: + """获取发布者成员""" + url = f"{DOMAIN}/publishers/{name}/members" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {"offset": offset, "take": take} + return _make_request('GET', url, headers, params=params) + +def GetMyPublisherMember(Authorization: str, name: str) -> dict: + """获取我的发布者成员信息""" + url = f"{DOMAIN}/publishers/{name}/members/me" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def PostPublisherFeature(Authorization: str, name: str, flag: str, expired_at: Optional[str] = None) -> dict: + """创建发布者特性""" + body = {"flag": flag, "expired_at": expired_at} + url = f"{DOMAIN}/publishers/{name}/features" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=body, normal_codes=[201]) + +def DeletePublisherFeature(Authorization: str, name: str, flag: str) -> dict: + """删除发布者特性""" + url = f"{DOMAIN}/publishers/{name}/features/{flag}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers, normal_codes=[204]) + +def GetPublisherSubscriptions(Authorization: str) -> dict: + """获取发布者订阅状态""" + url = f"{DOMAIN}/publishers/subscriptions" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def GetPublisherSubscription(Authorization: str, name: str) -> dict: + """获取特定发布者的订阅状态""" + url = f"{DOMAIN}/api/publishers/{name}/subscription" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def PostPublisherSubscribe(Authorization: str, name: str, subscribeRequest: Optional[dict] = None,tier:int=0) -> dict: + """订阅特定发布者""" + RequestsBody={ + "tier":tier + } + url = f"{DOMAIN}/api/publishers/{name}/subscribe" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers, request_body=subscribeRequest) + +def PostPublisherUnsubscribe(Authorization: str, name: str) -> dict: + """取消订阅特定发布者""" + url = f"{DOMAIN}/api/publishers/{name}/unsubscribe" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers) +>>>>>>> 967cea4c47a481e79c92fda0760c423de7fbcedf diff --git a/core/SNAPI/Realm.py b/core/SNAPI/Realm.py index 42666e5..b3d1d89 100644 --- a/core/SNAPI/Realm.py +++ b/core/SNAPI/Realm.py @@ -1,3 +1,4 @@ +<<<<<<< HEAD from ProjectCfg import DOMAIN from CallServer import _make_request @@ -115,3 +116,122 @@ def SetMemberRoleRealm(slug:str,Authorization: str,user_id:str,role:int) -> dict url = f"{DOMAIN}/realms/{slug}/members/{user_id}/role" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('PATCH', url, headers,normal_codes=[201],request_body=role) +======= +from ProjectCfg import DOMAIN +from CallServer import _make_request + +###==========================领域部分========================== + +def GetRealm(slug:str,Authorization: str = '') -> dict: + """获取领域详情""" + url = f"{DOMAIN}/realms/{slug}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def ModifyRealm(slug:str,Authorization: str ,name:str='',description:str='',picture_id:str='',background_id:str='',is_community:bool=True,is_public:bool=True) -> dict: + """修改领域""" + request_body={ + "slug": slug, + "name": name, + "description": description, + "picture_id": picture_id, + "background_id": background_id, + "is_community": is_community, + "is_public": is_public +} + url = f"{DOMAIN}/realms/{slug}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('PATCH', url, headers,request_body=request_body,normal_codes=[201]) + +def DeleteRealm(slug:str,Authorization: str) -> dict: + """删除领域""" + url = f"{DOMAIN}/realms/{slug}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers,normal_codes=[204]) + +def GetJoinedRealms(Authorization: str) -> dict: + """获取加入的领域""" + url = f"{DOMAIN}/realms" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def CreateRealm(slug:str,Authorization: str,name:str='',description:str='',picture_id:str='',background_id:str='',is_community:bool=True,is_public:bool=True) -> dict: + """创建领域""" + request_body={ + "slug": slug, + "name": name, + "description": description, + "picture_id": picture_id, + "background_id": background_id, + "is_community": is_community, + "is_public": is_public +} + url = f"{DOMAIN}/realms" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers,request_body=request_body,normal_codes=[201]) + +def GetRealmInvites(Authorization: str) -> dict: + """获取领域邀请""" + url = f"{DOMAIN}/realms/invites" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def SendRealmInvite(slug:str,Authorization: str,user_id:str,role:int=0) -> dict: + """发送领域邀请""" + request_body={ + "related_user_id": user_id, + "role": role +} + url = f"{DOMAIN}/realms/invites/{slug}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers,request_body=request_body,normal_codes=[201]) + +def AcceptRealmInvite(slug:str,Authorization: str) -> dict: + """接受领域邀请""" + url = f"{DOMAIN}/realms/invites/{slug}/accept" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers,normal_codes=[201]) + +def DeclineRealmInvite(slug:str,Authorization: str) -> dict: + """拒绝领域邀请""" + url = f"{DOMAIN}/realms/invites/{slug}/decline" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers,normal_codes=[201]) + +def GetRealmMembers(slug:str,Authorization: str,offset:int=0,take:int=20,withStatus:bool=False) -> dict: + """获取领域成员""" + url = f"{DOMAIN}/realms/{slug}/members" + params = {"offset":offset,"take":take,"withStatus":withStatus} + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers,params=params) + +def GetRealmMemberMe(slug:str,Authorization: str) -> dict: + """获取领域成员""" + url = f"{DOMAIN}/realms/{slug}/members/me" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def LeaveRealm(slug:str,Authorization: str) -> dict: + """退出领域""" + url = f"{DOMAIN}/realms/{slug}/members/me" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers,normal_codes=[204]) + +def JoinRealm(slug:str,Authorization: str) -> dict: + """加入领域""" + url = f"{DOMAIN}/realms/{slug}/members/me" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers,normal_codes=[201]) + +def KickMemberRealm(slug:str,Authorization: str,user_id:str) -> dict: + """踢出领域成员""" + url = f"{DOMAIN}/realms/{slug}/members/{user_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers,normal_codes=[204]) + +def SetMemberRoleRealm(slug:str,Authorization: str,user_id:str,role:int) -> dict: + """设置领域成员角色""" + url = f"{DOMAIN}/realms/{slug}/members/{user_id}/role" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('PATCH', url, headers,normal_codes=[201],request_body=role) +>>>>>>> 967cea4c47a481e79c92fda0760c423de7fbcedf diff --git a/core/SNAPI/RealtimeCall.py b/core/SNAPI/RealtimeCall.py index 59dfee2..bd4911c 100644 --- a/core/SNAPI/RealtimeCall.py +++ b/core/SNAPI/RealtimeCall.py @@ -1,3 +1,4 @@ +<<<<<<< HEAD from ProjectCfg import DOMAIN from CallServer import _make_request @@ -25,4 +26,33 @@ def JoinRealtimeChat(Authorization: str,roomid:str ) -> dict: """加入实时聊天""" url = f"{DOMAIN}/chat/realtime/{roomid}/join" headers = {'accept': 'application/json', 'Authorization': Authorization} +======= +from ProjectCfg import DOMAIN +from CallServer import _make_request + +###==========================实时聊天========================== + +def GetRealtimeChat(Authorization: str,roomid:str ) -> dict: + """获取实时聊天""" + url = f"{DOMAIN}/chat/realtime/{roomid}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def CreateRealtimeChat(Authorization: str,roomid:str ) -> dict: + """创建实时聊天""" + url = f"{DOMAIN}/chat/realtime/{roomid}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers,normal_codes=[201]) + +def LeaveRealtimeChat(Authorization: str,roomid:str ) -> dict: + """离开实时聊天""" + url = f"{DOMAIN}/chat/realtime/{roomid}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers,normal_codes=[204]) + +def JoinRealtimeChat(Authorization: str,roomid:str ) -> dict: + """加入实时聊天""" + url = f"{DOMAIN}/chat/realtime/{roomid}/join" + headers = {'accept': 'application/json', 'Authorization': Authorization} +>>>>>>> 967cea4c47a481e79c92fda0760c423de7fbcedf return _make_request('GET', url, headers) \ No newline at end of file diff --git a/core/SNAPI/Sticker.py b/core/SNAPI/Sticker.py index cf28282..b3da432 100644 --- a/core/SNAPI/Sticker.py +++ b/core/SNAPI/Sticker.py @@ -1,3 +1,4 @@ +<<<<<<< HEAD from ProjectCfg import DOMAIN from CallServer import _make_request @@ -115,4 +116,123 @@ def RemoveStickerPackage(Authorization: str,packid:str) -> dict: """移除贴纸包""" url = f"{DOMAIN}/stickers/{packid}/own" headers = {'accept': 'application/json', 'Authorization': Authorization} +======= +from ProjectCfg import DOMAIN +from CallServer import _make_request + +###==========================贴纸========================== + +def GetStickerPackageList(Authorization: str,offset:int=0,take:int=20,pub:str='',order:str='',query:str="") -> dict: + """获取贴纸包列表""" + url = f"{DOMAIN}/stickers" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {"offset":offset,"take":take,"pub":pub,"order":order,"query":query} + return _make_request('GET', url, headers,params=params) + +def CreateStickerPackage(Authorization: str,pub:str,name:str,description:str,prefix:str) -> dict: + """创建贴纸包""" + url = f"{DOMAIN}/stickers" + RequestsBody={ + "name":name, + "description": description, + "prefix": prefix +} + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers,request_body=RequestsBody,params={"pub":pub},normal_codes=[201]) + +def GetMyStickerList(Authorization: str) -> dict: + """获取我的贴纸列表""" + url = f"{DOMAIN}/stickers/me" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def GetAStickerPackageInfo(Authorization: str,sticker_id:str) -> dict: + """获取贴纸包信息""" + url = f"{DOMAIN}/stickers/{sticker_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def ModifyStickerPackage(Authorization: str,sticker_id:str,name:str,description:str,prefix:str) -> dict: + """修改贴纸包""" + url = f"{DOMAIN}/stickers/{sticker_id}" + RequestsBody={ + "name":name, + "description": description, + "prefix": prefix +} + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('PATCH', url, headers,request_body=RequestsBody,normal_codes=[201]) + +def DeleteStickerPackage(Authorization: str,sticker_id:str) -> dict: + """删除贴纸包""" + url = f"{DOMAIN}/stickers/{sticker_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers,normal_codes=[204]) + +def GetStickerPackageContent(Authorization: str,sticker_id:str) -> dict: + """获取贴纸包内容""" + url = f"{DOMAIN}/stickers/{sticker_id}/content" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def ModifyStickerPackageContent(Authorization: str,sticker_id:str,slug:str,image_id:str) -> dict: + """修改贴纸包内容""" + url = f"{DOMAIN}/stickers/{sticker_id}/content" + RequestsBody={ + "slug":slug, + "image_id": image_id +} + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers,request_body=RequestsBody,normal_codes=[201]) +def GetStickerInfo(Authorization: str,sticker_id:str) -> dict: + """获取贴纸信息""" + url = f"{DOMAIN}/stickers/lookup/{sticker_id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def GetStickerImg(Authorization: str,sticker_id:str) -> dict: + """获取贴纸图片""" + url = f"{DOMAIN}/stickers/lookup/{sticker_id}/open" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def GetPackageStickerInfo(Authorization: str,packid:str,id:str) -> dict: + """获取贴纸包信息""" + url = f"{DOMAIN}/stickers/{packid}/content/{id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def CreateStickerImageInPackage(Authorization: str,packid:str,slug:str,image_id:str) -> dict: + """创建贴纸包图片""" + url = f"{DOMAIN}/stickers/{packid}/content" + RequestsBody={ + "slug":slug, + "image_id": image_id +} + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('PATCH', url, headers,request_body=RequestsBody,normal_codes=[201]) + +def DeleteStickerImageInPackage(Authorization: str,packid:str,id:str) -> dict: + """删除贴纸包图片""" + url = f"{DOMAIN}/stickers/{packid}/content/{id}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers,normal_codes=[204]) + +def GetSelfHadStickerPackageInfo(Authorization: str,packid:str) -> dict: + """获取自己已拥有的贴纸包信息""" + url = f"{DOMAIN}/stickers/{packid}/own" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def AddStickerPackage(Authorization: str,packid:str) -> dict: + """添加贴纸包""" + url = f"{DOMAIN}/stickers/{packid}/own" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers,normal_codes=[201]) + +def RemoveStickerPackage(Authorization: str,packid:str) -> dict: + """移除贴纸包""" + url = f"{DOMAIN}/stickers/{packid}/own" + headers = {'accept': 'application/json', 'Authorization': Authorization} +>>>>>>> 967cea4c47a481e79c92fda0760c423de7fbcedf return _make_request('DELETE', url, headers,normal_codes=[204]) \ No newline at end of file diff --git a/core/SNAPI/WebArticle.py b/core/SNAPI/WebArticle.py index 2a32157..06975cf 100644 --- a/core/SNAPI/WebArticle.py +++ b/core/SNAPI/WebArticle.py @@ -1,3 +1,4 @@ +<<<<<<< HEAD from ProjectCfg import DOMAIN from CallServer import _make_request @@ -22,3 +23,29 @@ def RandomWebArticle(Authorization: str='',limit:int=5 ) -> dict: headers = {'accept': 'application/json', 'Authorization': Authorization} params = {"limit":limit} return _make_request('GET', url, headers,params=params) +======= +from ProjectCfg import DOMAIN +from CallServer import _make_request + +###==========================网页文章========================== + +def GetWebArticle(feedid:str,publisherid:str,limit:int=20,offset:int=0,Authorization: str='' ) -> dict: + """获取网页文章""" + url = f"{DOMAIN}/feeds/articles" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {"feedid":feedid,"publisherid":publisherid,"limit":limit,"offset":offset} + return _make_request('GET', url, headers,params=params) + +def GetWebArticleDetail(articleid:str,Authorization: str='' ) -> dict: + """获取网页文章详情""" + url = f"{DOMAIN}/feeds/articles/{articleid}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def RandomWebArticle(Authorization: str='',limit:int=5 ) -> dict: + """随机获取网页文章""" + url = f"{DOMAIN}/feeds/articles/random" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {"limit":limit} + return _make_request('GET', url, headers,params=params) +>>>>>>> 967cea4c47a481e79c92fda0760c423de7fbcedf diff --git a/core/SNAPI/WebFeed.py b/core/SNAPI/WebFeed.py index e237f7c..e186c9c 100644 --- a/core/SNAPI/WebFeed.py +++ b/core/SNAPI/WebFeed.py @@ -1,3 +1,4 @@ +<<<<<<< HEAD from ProjectCfg import DOMAIN from CallServer import _make_request @@ -55,3 +56,62 @@ def SetScrapPage(pubname:str,id:str,Authorization: str='') -> dict: url = f"{DOMAIN}/publishers/{pubname}/feeds/{id}/scrap" headers = {'accept': 'application/json', 'Authorization': Authorization} return _make_request('POST', url, headers,normal_codes=[201]) +======= +from ProjectCfg import DOMAIN +from CallServer import _make_request + +###==========================网页流========================== + +def GetWebFeed(pubname:str,Authorization: str='') -> dict: + """获取网页流""" + url = f"{DOMAIN}/publishers/{pubname}/feeds" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + + +def SendWebFeed(pubname:str,Authorization: str='',URL:str='',Title:str='',Description:str='',ScrapPage:bool=True) -> dict: + """发送网页流""" + url = f"{DOMAIN}/publishers/{pubname}/feeds" + RequestsBody={ + "url": URL, + "title": Title, + "description": Description, + "config": { + "scrap_page": ScrapPage, + } +} + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers,request_body=RequestsBody,normal_codes=[201]) + +def GetWebFeedDetail(feedid:str,pubname:str,Authorization: str='') -> dict: + """获取网页流详情""" + url = f"{DOMAIN}/publishers/{pubname}/feeds/{feedid}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def ModifyWebFeed(feedid:str,pubname:str,Authorization: str='',URL:str='',Title:str='',Description:str='',ScrapPage:bool=True) -> dict: + """修改网页流""" + url = f"{DOMAIN}/publishers/{pubname}/feeds/{feedid}" + RequestsBody={ + "url": URL, + "title": Title, + "description": Description, + "config": { + "scrap_page": ScrapPage, + } +} + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('PATCH', url, headers,request_body=RequestsBody,normal_codes=[200]) + +def DeleteWebFeed(feedid:str,pubname:str,Authorization: str='') -> dict: + """删除网页流""" + url = f"{DOMAIN}/publishers/{pubname}/feeds/{feedid}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers,normal_codes=[204]) + +def SetScrapPage(pubname:str,id:str,Authorization: str='') -> dict: + """设置是否采集网页""" + url = f"{DOMAIN}/publishers/{pubname}/feeds/{id}/scrap" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers,normal_codes=[201]) +>>>>>>> 967cea4c47a481e79c92fda0760c423de7fbcedf diff --git a/core/SNAPI/WebFeedPublic.py b/core/SNAPI/WebFeedPublic.py index e7f4eed..b4d3f6c 100644 --- a/core/SNAPI/WebFeedPublic.py +++ b/core/SNAPI/WebFeedPublic.py @@ -1,3 +1,4 @@ +<<<<<<< HEAD from ProjectCfg import DOMAIN from CallServer import _make_request @@ -54,3 +55,61 @@ def GetWebFeedExplore(offset:int=0,take:int=20,query='',Authorization: str='') - headers = {'accept': 'application/json', 'Authorization': Authorization} params = {"offset":offset,"take":take,"query":query} return _make_request('GET', url, headers,params=params) +======= +from ProjectCfg import DOMAIN +from CallServer import _make_request + +###==========================公共网页流========================== + +def SubscribeWebFeed(feedid:str,Authorization: str) -> dict: + """订阅公共网页流""" + url = f"{DOMAIN}/feeds/{feedid}/subscribe" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('POST', url, headers,normal_codes=[201]) + +def UnsubscribeWebFeed(feedid:str,Authorization: str) -> dict: + """取消订阅公共网页流""" + url = f"{DOMAIN}/feeds/{feedid}/subscribe" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('DELETE', url, headers,normal_codes=[204]) + +def GetWebFeedSubscription(feedid:str,Authorization: str='') -> dict: + """获取公共网页流订阅""" + url = f"{DOMAIN}/feeds/{feedid}/subscribe" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def GetWebFeedSubscribed(offset:int=0,take:int=20,Authorization: str='') -> dict: + """获取公共网页流订阅""" + url = f"{DOMAIN}/feeds/subscribed" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {"offset":offset,"take":take} + return _make_request('GET', url, headers,params=params) + +def GetWebFeedInfo(offset:int=0,take:int=20,Authorization: str='') -> dict: + """获取公共网页流信息""" + url = f"{DOMAIN}/feeds" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {"offset":offset,"take":take} + return _make_request('GET', url, headers,params=params) + +def GetWebFeedDetail(feedid:str,Authorization: str='') -> dict: + """获取公共网页流详情""" + url = f"{DOMAIN}/feeds/{feedid}" + headers = {'accept': 'application/json', 'Authorization': Authorization} + return _make_request('GET', url, headers) + +def GetWebFeedArticles(feedid:str,offset:int=0,take:int=20,Authorization: str='') -> dict: + """获取公共网页流文章""" + url = f"{DOMAIN}/feeds/{feedid}/articles" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {"offset":offset,"take":take} + return _make_request('GET', url, headers,params=params) + +def GetWebFeedExplore(offset:int=0,take:int=20,query='',Authorization: str='') -> dict: + """获取公共网页流探索""" + url = f"{DOMAIN}/feeds/explore" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {"offset":offset,"take":take,"query":query} + return _make_request('GET', url, headers,params=params) +>>>>>>> 967cea4c47a481e79c92fda0760c423de7fbcedf diff --git a/core/SNAPI/WebReader.py b/core/SNAPI/WebReader.py index d9ee59e..545de34 100644 --- a/core/SNAPI/WebReader.py +++ b/core/SNAPI/WebReader.py @@ -1,3 +1,4 @@ +<<<<<<< HEAD from ProjectCfg import DOMAIN from CallServer import _make_request @@ -20,4 +21,28 @@ def ClearAllReaderCache(Authorization: str='') -> dict: """清除所有缓存""" url = f"{DOMAIN}/scrap/cache/all" headers = {'accept': 'application/json', 'Authorization': Authorization} +======= +from ProjectCfg import DOMAIN +from CallServer import _make_request + +###==========================网页阅读器========================== +def ReadForURL(url:str,Authorization: str='' ) -> dict: + """通过URL读取网页""" + url = f"{DOMAIN}/scrap/link" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {"url":url} + return _make_request('GET', url, headers,params=params) + +def ClearReaderCache(url:str,Authorization: str='') -> dict: + """清除缓存""" + url = f"{DOMAIN}/scrap/link/cache" + headers = {'accept': 'application/json', 'Authorization': Authorization} + params = {"url":url} + return _make_request('DELETE', url, headers,params=params) + +def ClearAllReaderCache(Authorization: str='') -> dict: + """清除所有缓存""" + url = f"{DOMAIN}/scrap/cache/all" + headers = {'accept': 'application/json', 'Authorization': Authorization} +>>>>>>> 967cea4c47a481e79c92fda0760c423de7fbcedf return _make_request('DELETE', url, headers) \ No newline at end of file diff --git a/core/SNAPI/__init__.py b/core/SNAPI/__init__.py index 3e6b6b7..7ac4d2f 100644 --- a/core/SNAPI/__init__.py +++ b/core/SNAPI/__init__.py @@ -1 +1,5 @@ +<<<<<<< HEAD from . import Chat, Poll, Post,PostCategory,PostTag,Publisher,WebArticle,WebFeed,WebFeedPublic,WebReader,Sticker,CallServer,Realm,RealtimeCall +======= +from . import Chat, Poll, Post,PostCategory,PostTag,Publisher,WebArticle,WebFeed,WebFeedPublic,WebReader,Sticker,CallServer,Realm,RealtimeCall +>>>>>>> 967cea4c47a481e79c92fda0760c423de7fbcedf diff --git a/desktop.ini b/desktop.ini new file mode 100644 index 0000000..bb34339 --- /dev/null +++ b/desktop.ini @@ -0,0 +1,6 @@ +[.ShellClassInfo] +IconResource=F:\exeliang\SolianForPython\assets\img\icon.ico,0 +[ViewState] +Mode= +Vid= +FolderType=Generic