目的
tweeterで使っていたBotが最近の改正で継続が難しくなってしまい代替となるものが欲しかった
必要構成
- Linux Mint 22
- python 3.10.6
- Misskey.py(pip install Misskey.py)
- Misskeyアカウトとアクセストークン
内容
flightrader24のAPIによるJson情報を使ってMisskey上でノートするというものである。
監視する空域は経緯緯度で指定しないと全情報を取得してしまうので注意が必要である。今回は羽田新ルートを対象にした。
Misskeyのアカウトとアクセストークンは公式にしたがって取得しておく。
Misskeyのモジュールをインストールしておく。
無限ループのためC-cでキャンセルしないと抜けることができない。
main.py
#
#羽田新ルートの侵入を検知
#緯度(北35.71878,南35.61535)経度(西139.64919,東139.74154)
#
#
import urllib.request,requests
import json,time
from misskey import Misskey
url = 'http://data.flightradar24.com/zones/fcgi/feed.js?bounds=35.71878,35.61535,139.64919,139.74154&adsb=1&mlat=1&faa=1&flarm=1&estimated=1&air=1&gnd=1&vehicles=1&gliders=1&array=1'
api = Misskey('misskey.io')
api.token = 'Misskeyアクセストークン'
headers = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0",}
request = urllib.request.Request(url=url, headers=headers)
check_airplanename_before = "" #前回の機体名
while True:
try:
time.sleep(5)
with urllib.request.urlopen(request) as response:
body = json.loads(response.read())
headers = response.getheaders()
status = response.getcode()
check_airplanename = ""
for info in body['aircraft']:
check_airplanename = info[-2] #機体名取得
approach_airport = info[-6] #着陸空港
#depart_airport = info[-7] #出発空港
print(approach_airport)
if (check_airplanename != ""
and check_airplanename_before != check_airplanename
and approach_airport == "HND" ):
api.notes_create(text="羽田新ルート情報実験中:"+ (','.join(map(str,body['aircraft'][0]))))
check_airplanename_before = check_airplanename
except urllib.error.URLError as e:
print(e.reason)
まとめ
空域に対してノートをしてくれることを確認できた。自作関数を使うこともなく割と単純に作成することができた。
問題点
- 空域に複数機体が侵入した場合jsonに依存する
- 更新頻度の問題
課題
- コンテナ化
- 情報精度の向上
感想
Misskeyを利用してbotを作りたいと思っていた。Misskeyのモジュールで簡単にノートできて楽であった。
flightraderの情報は自身で確認しながら試行錯誤した。
コンテナ化してサーバー運用できれば有用そうである。