完整的SN服务API实现

This commit is contained in:
2025-09-13 14:56:13 +08:00
parent f7b4f7158a
commit 01fd5dfe21
11 changed files with 428 additions and 4 deletions

View File

@@ -1,6 +1,5 @@
from ProjectCfg import DOMAIN
from SNAPI.CallServer import _make_request
from typing import List,Any,Optional,Dict
from SNAPI import *
###=========================活动API=================================
@@ -36,6 +35,8 @@ def TranslationText(Authorization: str,text:str ,Tolang:str,FromLang:str) -> dic
params = {"to":Tolang,"from":FromLang}
return _make_request('POST', url, headers, params=params,request_body=text)
###==========================服务器版本==========================
def GetServerVersion() -> dict:
"""获取服务器版本"""
url = f"{DOMAIN}/version"

View File

@@ -1,6 +1,6 @@
from ProjectCfg import DOMAIN
from CallServer import _make_request
from typing import List,Any,Optional,Dict
from typing import Optional
###==========================帖子分类管理============================
def GetPostCategories(Authorization: str, query: Optional[str] = None, offset: int = 0, take: int = 20, order: Optional[str] = None) -> dict:

View File

@@ -1,6 +1,6 @@
from ProjectCfg import DOMAIN
from CallServer import _make_request
from typing import List,Any,Optional,Dict
from typing import Optional
###==========================帖子标签管理============================
def GetPostTags(Authorization: str, query: Optional[str] = None, offset: int = 0, take: int = 20, order: Optional[str] = None) -> dict:

View File

@@ -1,6 +1,6 @@
from ProjectCfg import DOMAIN
from CallServer import _make_request
from typing import List,Any,Optional,Dict
from typing import Optional
###==========================发布者管理============================
def GetPublisher(Authorization: str, name: str) -> dict:
"""获取发布者信息"""

117
core/SNAPI/Realm.py Normal file
View File

@@ -0,0 +1,117 @@
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)

View File

@@ -0,0 +1,28 @@
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}
return _make_request('GET', url, headers)

118
core/SNAPI/Sticker.py Normal file
View File

@@ -0,0 +1,118 @@
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}
return _make_request('DELETE', url, headers,normal_codes=[204])

24
core/SNAPI/WebArticle.py Normal file
View File

@@ -0,0 +1,24 @@
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)

57
core/SNAPI/WebFeed.py Normal file
View File

@@ -0,0 +1,57 @@
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])

View File

@@ -0,0 +1,56 @@
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)

23
core/SNAPI/WebReader.py Normal file
View File

@@ -0,0 +1,23 @@
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}
return _make_request('DELETE', url, headers)