Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/59naga/gbf-raid-server
TwitterUserStream廃止に対応済み nodejs / socket.ioを使用してtwitterの救援ツイートを配信します
https://github.com/59naga/gbf-raid-server
gbf granbluefantasy nodejs
Last synced: 23 days ago
JSON representation
TwitterUserStream廃止に対応済み nodejs / socket.ioを使用してtwitterの救援ツイートを配信します
- Host: GitHub
- URL: https://github.com/59naga/gbf-raid-server
- Owner: 59naga
- Created: 2018-07-06T06:20:01.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-04-11T23:39:44.000Z (almost 6 years ago)
- Last Synced: 2024-12-19T00:04:12.666Z (about 1 month ago)
- Topics: gbf, granbluefantasy, nodejs
- Language: JavaScript
- Homepage: https://gbf-raid-server.herokuapp.com/
- Size: 1.49 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
gbf-raid-server
---[node-twitter][2]と[socket.io][3]のグルーコードをグラブル用に調整し、クラスと関数で提供します。
```bash
# export GBFR_KEYS=consumer_key:consumer_secret:access_token_key:access_token_secret
# node --experimental-modules app.mjs
``````js
import { createServer } from 'http';
import createIoServer from 'socket.io';
import createIoClient from 'socket.io-client';
import createRaidServer, { parseAll } from 'gbf-raid-server/mjs';const port = process.env.PORT || 8080;
const raidServer = createRaidServer(process.env.GBFR_KEYS);
const server = createServer();server.listen(port, async () => {
raidServer.setCache(parseAll(await raidServer.fetch()));
raidServer.subscribe(createIoServer(server));createIoClient(`http://localhost:${port}`)
.emit('gbf-raid-server:cache', (error, tweets) => {
console.log(tweets);
// [{id: '451A60CE', name: 'Lv100 ティアマト・マグナ=エア', memo: '毎秒チョクチェしろ', createdAt: '2018-07-06 10:26:56'}, {...}]
})
.on('gbf-raid-server:tweet', (tweet) => {
console.log(tweet);
// {id: '451A60CE', name: 'Lv100 ティアマト・マグナ=エア', memo: '毎秒チョクチェしろ', createdAt: '2018-07-06 10:26:56'}
});
});
```インストール
---```bash
npm install gbf-raid-server
# or
yarn add gbf-raid-server
```API
---## `createRaidServer(TWITTER_OAUTH_KEYS, Options={}): raidServer`
第一引数に[twitter-api](https://apps.twitter.com/)の各4キーを`:`で連結して文字列で渡し、`raidServer`インスタンスを返します。
```js
const raidServer = createRaidServer('consumer_key:consumer_secret:access_token_key:access_token_secret');
```## `raidServer.subscribe(ioServer): this`
第一引数を`socket.io`インスタンスとして
* `server`に`gbf-raid-server:cache`イベントを設定します。このイベントが`client`から送られると、`server`はコールバック関数の第二引数に即座にキャッシュを渡します。
```js
createIoClient(`http://localhost:${port}`)
.emit('gbf-raid-server:cache', (error, tweets) => {
console.log(tweets);
// [{id: '451A60CE', name: 'Lv100 ティアマト・マグナ=エア', createdAt: '2018-07-06 10:26:56'}, {...}]
})
```
* `client`へ`gbf-raid-server:tweet`イベントを送信します。このイベントは[streaming-api](https://github.com/desmondmorris/node-twitter#streaming-api)によって、救援ツイート1つにつき1イベントリアルタイムで発生します
```js
createIoClient(`http://localhost:${port}`)
.on('gbf-raid-server:tweet', (tweet) => {
console.log(tweet);
// {id: '451A60CE', name: 'Lv100 ティアマト・マグナ=エア', createdAt: '2018-07-06 10:26:56'}
});
```## `raidServer.setCache(Tweet[]): this`
サーバーのキャッシュを第一引数に変更します。`client`がサービスにアクセス時、過去のツイートを確認するために必要です。
`.fetch`を利用して定期的に更新してください。## `raidServer.fetch(count = 100): Promise`
過去のツイートを`Promise`で取得します。返されるデータには救援データと関係のないメタ情報が多量に含まれるので、`parseAll`関数などで抽出してください。
## `parseAll(Statuses[]): Tweet[]`
`raidServer.fetch`で取得したツイートのメタ情報を削除して新しい配列を返します。
```js
parseAll(await raidServer.fetch());
// [{id: '451A60CE', name: 'Lv100 ティアマト・マグナ=エア', memo: '毎秒チョクチェしろ', createdAt: '2018-07-06 10:26:56'}, {...}]
```開発環境
---下記がグローバルインストールされていることが前提です。
* NodeJS v10.6.0
* Yarn v1.8.0```bash
git clone [email protected]:59naga/gbf-raid-server.git
cd gbf-raid-serveryarn
yarn test
```Lincense
---
MIT[1]: https://developer.twitter.com/en/docs/basics/rate-limits.html
[2]: https://github.com/desmondmorris/node-twitter#readme
[3]: https://github.com/socketio/socket.io#readme