Quick Start
このページでは最小限のSonolusサーバーを立ち上げます。
インストール
bash
pip install sonolus-fastapi最小構成
py
from sonolus_fastapi import Sonolus
sonolus = Sonolus(
address='https://example.com', # サーバーアドレスを指定してください Specify your server address
port=8000, # サーバーポートを指定してください Specify your server port
enable_cors=True, # CORSを有効にするかどうか Whether to enable CORS
dev=True, # 開発モード Development mode
session_store=MemorySessionStore(), # セッションストアを指定 Specify session store
backend=StorageBackend.MEMORY # ストレージバックエンドを指定 Specify storage backend
)
if __name__ == "__main__":
sonolus.run()これだけで、FastAPIサーバーが起動します。 dev=Trueはローカル開発向けの設定です。
ServerInfoを追加
py
from sonolus_fastapi import Sonolus
from sonolus_fastapi.model.base import SonolusServerInfo, SonolusConfiguration, SonolusButton, SonolusButtonType
sonolus = Sonolus(
address='https://example.com', # サーバーアドレスを指定してください Specify your server address
port=8000, # サーバーポートを指定してください Specify your server port
enable_cors=True, # CORSを有効にするかどうか Whether to enable CORS
dev=True, # 開発モード Development mode
session_store=MemorySessionStore(), # セッションストアを指定 Specify session store
backend=StorageBackend.MEMORY # ストレージバックエンドを指定 Specify storage backend
)
@sonolus.server.server_info(SonolusServerInfo) # サーバー情報ハンドラーを登録 Register server info handler
async def get_server_info(ctx):
return SonolusServerInfo(
title="Example Sonolus Server",
description="This is an example Sonolus server.",
buttons=[
SonolusButton(type=SonolusButtonType.AUTHENTICATION),
SonolusButton(type=SonolusButtonType.POST),
SonolusButton(type=SonolusButtonType.LEVEL),
SonolusButton(type=SonolusButtonType.SKIN),
SonolusButton(type=SonolusButtonType.BACKGROUND),
SonolusButton(type=SonolusButtonType.EFFECT),
SonolusButton(type=SonolusButtonType.PARTICLE),
SonolusButton(type=SonolusButtonType.ENGINE),
SonolusButton(type=SonolusButtonType.CONFIGURATION)
],
configuration=SonolusConfiguration(
options=[]
),
banner=None,
)
if __name__ == "__main__":
sonolus.run()このようにして追加することができます。
アイテムを追加
py
import time
from fastapi import HTTPException
from sonolus_fastapi import Sonolus
from sonolus_fastapi.model.items.post import PostItem
from sonolus_fastapi.model.ServerItemDetails import ServerItemDetails
now = int(time.time() * 1000)
post_item = PostItem(
name="example_post",
title="Example Post",
version=1,
author="Author Name",
tags=[],
description="This is an example post item.",
time=now,
thumbnail=None,
)
sonolus.items.post.add(post_item) # メモリにPostItemを追加 Add PostItem to memory
@sonolus.post.detail(ServerItemDetails) # Postの詳細ハンドラーを登録 Register Post detail handler
async def get_post_detail(ctx, name: str): # Postの詳細を取得 Get Post details
post = sonolus.items.post.get(name) # メモリからPostItemを取得 Get PostItem from memory
if post is None: # PostItemが見つからない場合 If PostItem not found
raise HTTPException(404, "Post item not found") # 404エラーを返す Return 404 error
return ServerItemDetails( # ServerItemDetailsを返す Return ServerItemDetails
item=post, # PostItem
description="This is the detail of the example post item.", # 詳細説明 Detail description
actions=[], # アクションのリスト List of actions
hasCommunity=False, # コミュニティがあるかどうか Whether there is a community
leaderboards=[], # リーダーボードのリスト List of leaderboards
sections=[], # セクションのリスト List of sections
)
if __name__ == "__main__":
sonolus.run()ブラウザでの確認
サーバーを起動し、以下にアクセスをしてみてください。
http://localhost:8000/sonolus/info
http://localhost:8000/sonolus/posts/exampleJSONが返ってきたら成功です。
次は仕様書を見てみましょう。