Misskey websocketAPI wrapper.
Project description
BromineCore
ぶろみねくんのコア部分の実装、そしてmisskeyのwebsocketAPI単体の実装です。
ローカルのノートを講読したり、通知を取得したり。リバーシも頑張れば実装できます。
何か問題が発生したり追加してほしい機能があったらissueに書いてください
頑張って実装したり解決します
Example
簡単なタイムライン閲覧クライアントです。
トークン無しでタイムラインをリアルタイムで閲覧できます。
import asyncio
from brcore import Bromine, enum
INSTANCE = "misskey.io"
TL = enum.MisskeyChannelNames.LOCAL_TIMELINE
def note_printer(note: dict) -> None:
"""ノートの情報を受け取って表示する関数"""
NOBASIBOU_LENGTH = 20
user = note["user"]
username = user["name"] if user["name"] is not None else user["username"]
print("-"*NOBASIBOU_LENGTH)
if note.get("renoteId") and note["text"] is None:
# リノートのときはリノート先だけ書く
print(f"{username}がリノート")
note_printer(note["renote"])
# リノートはリアクション数とか書きたくないので
# ここで返す
print("-"*NOBASIBOU_LENGTH)
return
else:
# 普通のノート
print(f"{username}がノート ノートid: {note['id']}")
if note.get("reply"):
# リプライがある場合
print("リプライ:")
note_printer(note["reply"])
if note.get("text"):
print("テキスト:")
print(note["text"])
if note.get("renoteId"):
# 引用
print("引用:")
note_printer(note["renote"])
if len(note["files"]) != 0:
# ファイルがある時
print(f"ファイル数: {len(note['files'])}")
# リアクションとかを書く
print(f"リプライ数: {note['repliesCount']}, リノート数: {note['renoteCount']}, リアクション数: {note['reactionCount']}")
reactions = []
for reactionid, val in note["reactions"].items():
if reactionid[-3:] == "@.:":
# ローカルのカスタム絵文字のidはへんなのついてるので
# それを消す
reactionid = reactionid[:-3] + ":"
reactions.append(f"({reactionid}, {val})")
if len(reactions) != 0:
print("リアクション達: ", ", ".join(reactions))
print("-"*NOBASIBOU_LENGTH)
async def note_async(note: dict) -> None:
"""上のprinterの引数を調整するやつ
asyncにするのはws_connectでは非同期関数が求められるので(見た目非同期っていう体にしているだけ)"""
note_printer(note["body"])
print() # 空白をノート後に入れておく
async def main() -> None:
brm = Bromine(instance=INSTANCE)
brm.ws_connect(TL, note_async)
print("start...")
await brm.main()
if __name__ == "__main__":
try:
asyncio.run(main())
except KeyboardInterrupt:
print("fin")
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
brominecore-1.0.tar.gz
(10.8 kB
view details)
Built Distribution
brominecore-1.0-py3-none-any.whl
(10.8 kB
view details)
File details
Details for the file brominecore-1.0.tar.gz
.
File metadata
- Download URL: brominecore-1.0.tar.gz
- Upload date:
- Size: 10.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82c954559ba4e98858e1c823dae3af87585af86f6001ee2f59b6da72ceebdfe3 |
|
MD5 | 747678c47b0835ceba74e6ead029335d |
|
BLAKE2b-256 | fb37539177d593fb0f8d209394d270aa61d79d9f7b3f152f36745e47039bdb4d |
File details
Details for the file brominecore-1.0-py3-none-any.whl
.
File metadata
- Download URL: brominecore-1.0-py3-none-any.whl
- Upload date:
- Size: 10.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f0005190db85518df1f065ddd22ca4a5538907b8fa5b216b4000cb83a08a581b |
|
MD5 | 7cb7955bb451e2f5151e450b3b9f9ede |
|
BLAKE2b-256 | cf7014a42d34f754ce89e9709c44f029e1446cb8e20ee65ff7f99a33bddb9c5c |