【Node.js】Masto.jsでMastodonのタイムラインを見る with TypeScript
タイトルを一番最初に決めたおかげで、公開から30分間ぐらいタイトル詐欺になっていました。申し訳ございません。
Masto.js とは?
- MastodonのAPIをぶっ叩くためのライブラリ1。
- ブラウザでもNode.jsでも動く。
今回は初歩の初歩なので、Node.jsでしか試してないです。
インストール
npm i --save masto
これで終わり。npmさまさまですね。
環境
- Wnidows10 1903
- WSL Ubuntu 18.04 LTS
- Node 10.16.0
- npm 6.9.0
- TypeScript 3.5.1
- Masto.js 2.1.1
VSCodeのターミナルでWSLを呼び出して使っています。WSLすごいですね。これ2まで出るんですよ。
ちなみに今回はTypeScriptを使っていますが、JavaScriptでも動くんじゃなかろうかと思います。
使い方
を載せたいのですが、実行しようとしたらエラーが出たので軽く解決2しておきます。
面倒そうなタイプのエラー
(TypeScriptだけに)
くだらんギャグを飛ばしてる場合じゃありません。なんかtsc兄貴が
Module '"/mnt/c/Users/user/Documents/GitHub/KannaBot/node_modules/eventemitter3/index"' can only be default-imported using the 'esModuleInterop' flag
This module is declared with using 'export =', and can only be used with a default import when using the 'esModuleInterop' flag.
などと長ったらしいエラーを吐き出しやがりました。
import Masto from 'masto'
(後述)をやめてconst Masto = require('masto')
で呼んだらコンパイル通りましたが、型をanyにされるのは嫌なので解決策を探すことに。しかしググっても出てこない。
node_modules
深層のほうの型定義ファイルでexport =
になってるのが原因くさいのでそこに向かい、export default
にすり替えてみます。するとコンパイルが通りました。なんというか、どうなってるのか、全然わからん!
Node.jsに詳しい方、どなたかご教示願います。
「こんなエラー出ずに普通に動いたけど…」「エラー出た…」という方も教えてくださると嬉しいです。
気を取り直して…
import Masto from "masto";
(async () => {
const client = await Masto.login({
uri: //hogehoge
});
const stream = await client.streamCommunityTimeline();
stream.on('update', status => {
console.log(`${status.account.display_name}(${status.account.acct}): ${status.content} ${status.created_at}`);
});
})()
hogehoge
の部分は適当なインスタンスに変えてください。
streamCommunityTimeline()
はローカルTLのストリーミングです。streamPublicTimeline()
に変えると、連合TLのストリーミングができます。
stream.on()
のコールバックにより、新しいトゥートが来るたび
もみにす/Mominis(mn): <p>平和そう</p> 2019-06-01T04:12:04.753Z
もみにす/Mominis([email protected]): <p>Node.jsと和解できそう</p> 2019-06-01T04:20:45.000Z
こんな感じのトゥート内容がconsoleに垂れ流されます。
下の表は、上にあるconsole.log
の中身メソッドの紹介です。uri
を"best-friends.chat"に設定したときのものになっており、他のインスタンスから見ると若干変わって見えるやもしれません。
status.account.display_name |
status.account.acct |
status.content |
status.created_at |
---|---|---|---|
自由に変更できる、ディスプレイネーム。 | メンションするときとかに使う変更不可の名前。他鯖の人には@ドメイン名 がつく。 |
トゥート内容。 | トゥート日時。 |
もみにす/Mominis |
mn |
<p>平和そう</p> |
2019-06-01T04:12:04.753Z |
もみにす/Mominis |
[email protected] |
<p>Node.jsと和解できそう</p> |
2019-06-01T04:20:45.000Z |
アプリ認証とかについて
アプリ認証になると大変そうだし、この記事は初歩の初歩だし、インスタンスへの登録なしで使えるAPIだけ叩きました。登録が必要な本格APIについてはあとで書くつもりです。
おわりに
TypeScript要素なかった…タグ付け詐欺だ…
Author And Source
この問題について(【Node.js】Masto.jsでMastodonのタイムラインを見る with TypeScript), 我々は、より多くの情報をここで見つけました https://qiita.com/AumyF/items/30a1960107cb38f8402b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .