🔔

Misskey の未読通知をお知らせするアプリを書いた

2024/09/12に公開

Misskey API の練習がてら『未読の通知をお知らせする』Python アプリを書いてみました。
https://github.com/sharl/mnotify

概要

Windows のタスクトレイや Mac のメニューバーに常駐して、未読があるときはアイコンを明るくしてお知らせします。

未読がある時

未読がない時

準備からアプリ起動まで

Misskey のアクセストークンを取得する

先人の素晴らしい記事がありますので、参考にして取得してください。

https://zenn.dev/sion_pn/articles/85c22b9cdad159#misskeyアカウントでアクセストークンを発行

必要な権限の種類は アカウントの情報を見る read:account のみです。

権限の一覧 | Misskey Hub

設定ファイル .mnotify を作成する

リポジトリから clone してディレクトリを移動します。

git clone https://github.com/sharl/mnotify.git
cd mnotify

カレントディレクトリに .mnotify を作成します。JSON です。

{
  "misskey_instance": "https://misskey.example.com",
  "misskey_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

misskey_instance は通知を取得したい Misskey インスタンスの URL です。
misskey_token は先ほど取得したアクセストークンです。

続いて

pip install -r requirements.txt
python mnotify.py

で起動します。

実装について

Misskey API の Python ラッパーである Misskey.py を使っているので関係しているところを説明していきます。

設定ファイル .mnotify を読み込んで Misskey API オブジェクト self.misskey を作成します。
https://github.com/sharl/mnotify/blob/main/mnotify.py#L23-L31

インスタンスのメタ情報を meta() で取得して「インスタンス名 name」を取得。
「favicon の URL iconUrl」を読み込んで通常アイコンと暗いアイコンを作成します。
https://github.com/sharl/mnotify/blob/main/mnotify.py#L33-L40

  • ImageEnhance.Brightness(self.u_icon).enhance(0.5)
    • 明るさを半分に
  • convert('L')
    • グレースケールに

自分の情報 i() から

  • 未読の有無 hasUnreadNotification
  • 未読数 unreadNotificationsCount

を取得しています。
https://github.com/sharl/mnotify/blob/main/mnotify.py#L55-L57

インスタンスのメタ情報を利用している箇所は以上です。

雑感

最初、通知の未読状態を取得するために i_notifications() を使用していましたがなんか違う……ということで勘で i() にたどり着きましたが、本質的には Misskey のフロントのソース読めって話。

Discussion