Mastodon での発言を Twitter に投げ込む

作るに至る経緯

今までは IFTTT で nullkal さん謹製のものに 手を加えて 投げ込んでいましたが、だいたい2時間くらい間隔でしか動いてくれず。
どこどこに居るよ、みたいな情報だと2時間のタイムラグは結構大きいので悩ましい。

Mastodon は Atom のデータが取れるので、前の記事 でのスクレイピング熱が冷めないうちにやってしまおうという感じで作ることとなりました。

作っている間の雑感

Mastodon での mention(reply) は除外したかったのでちょっと考えていました。
通常の発言は p タグで囲まれたただのテキストですが、mention の場合は p タグの後にユーザのリンクが a タグで入ってくるので、xpath('//p') でサクッと取れて大成功……と思いきや、発言にリンクがあっても a タグが入るので駄目でした。
結局色々判定後にタグを削除する方向と相成りました。

機能とか

複数の Mastodon インスタンスから Twitter に投げ込みたかったので、設定用の ini ファイルを引数で渡せるようにしています。
ちなみに cron で定期的に呼ぶ前提です。
Mastodon の Atom はそのままアクセスすると最新20件しか取れないので、発言がハイペースな方はアクセス頻度を上げないと取りこぼすと思います。

Twitter 用に文字を切り詰めるところでは、1文字とカウントされるいわゆる半角英数字とそれ以外を判定して数え、ぎりぎりのところまで詰め込めるようにしています。
ただ URL は面倒だったのでそのまま文字として数えています……。

GitHub で公開していますので何かのご参考になれば。

develop,technical

Posted by yokky