{"id":23676693,"url":"https://github.com/59naga/gbf-raid-server","last_synced_at":"2026-04-29T15:36:59.919Z","repository":{"id":57245347,"uuid":"139941754","full_name":"59naga/gbf-raid-server","owner":"59naga","description":"TwitterUserStream廃止に対応済み nodejs / socket.ioを使用してtwitterの救援ツイートを配信します","archived":false,"fork":false,"pushed_at":"2019-04-11T23:39:44.000Z","size":1564,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-11T03:01:49.559Z","etag":null,"topics":["gbf","granbluefantasy","nodejs"],"latest_commit_sha":null,"homepage":"https://gbf-raid-server.herokuapp.com/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/59naga.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-07-06T06:20:01.000Z","updated_at":"2023-03-10T10:33:57.000Z","dependencies_parsed_at":"2022-09-01T04:31:28.026Z","dependency_job_id":null,"html_url":"https://github.com/59naga/gbf-raid-server","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/59naga%2Fgbf-raid-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/59naga%2Fgbf-raid-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/59naga%2Fgbf-raid-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/59naga%2Fgbf-raid-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/59naga","download_url":"https://codeload.github.com/59naga/gbf-raid-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239717455,"owners_count":19685713,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gbf","granbluefantasy","nodejs"],"created_at":"2024-12-29T14:55:36.681Z","updated_at":"2025-12-27T08:30:12.661Z","avatar_url":"https://github.com/59naga.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"gbf-raid-server\n---\n\n\u003cp align=\"right\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/gbf-raid-server\"\u003e\n    \u003cimg alt=\"Npm version\" src=\"https://badge.fury.io/js/gbf-raid-server.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://travis-ci.org/59naga/gbf-raid-server\"\u003e\n    \u003cimg alt=\"Build Status\" src=\"https://travis-ci.org/59naga/gbf-raid-server.svg?branch=master\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n[node-twitter][2]と[socket.io][3]のグルーコードをグラブル用に調整し、クラスと関数で提供します。\n\n```bash\n# export GBFR_KEYS=consumer_key:consumer_secret:access_token_key:access_token_secret\n# node --experimental-modules app.mjs\n```\n\n```js\nimport { createServer } from 'http';\nimport createIoServer from 'socket.io';\nimport createIoClient from 'socket.io-client';\nimport createRaidServer, { parseAll } from 'gbf-raid-server/mjs';\n\nconst port = process.env.PORT || 8080;\n\nconst raidServer = createRaidServer(process.env.GBFR_KEYS);\nconst server = createServer();\n\nserver.listen(port, async () =\u003e {\n  raidServer.setCache(parseAll(await raidServer.fetch()));\n  raidServer.subscribe(createIoServer(server));\n\n  createIoClient(`http://localhost:${port}`)\n    .emit('gbf-raid-server:cache', (error, tweets) =\u003e {\n      console.log(tweets);\n      // [{id: '451A60CE', name: 'Lv100 ティアマト・マグナ＝エア', memo: '毎秒チョクチェしろ', createdAt: '2018-07-06 10:26:56'}, {...}]\n    })\n    .on('gbf-raid-server:tweet', (tweet) =\u003e {\n      console.log(tweet);\n      // {id: '451A60CE', name: 'Lv100 ティアマト・マグナ＝エア', memo: '毎秒チョクチェしろ', createdAt: '2018-07-06 10:26:56'}\n    });\n});\n```\n\nインストール\n---\n\n```bash\nnpm install gbf-raid-server\n# or\nyarn add gbf-raid-server\n```\n\nAPI\n---\n\n## `createRaidServer(TWITTER_OAUTH_KEYS, Options={}): raidServer`\n\n第一引数に[twitter-api](https://apps.twitter.com/)の各4キーを`:`で連結して文字列で渡し、`raidServer`インスタンスを返します。\n\n```js\nconst raidServer = createRaidServer('consumer_key:consumer_secret:access_token_key:access_token_secret');\n```\n\n## `raidServer.subscribe(ioServer): this`\n\n第一引数を`socket.io`インスタンスとして\n\n* `server`に`gbf-raid-server:cache`イベントを設定します。このイベントが`client`から送られると、`server`はコールバック関数の第二引数に即座にキャッシュを渡します。\n  ```js\n  createIoClient(`http://localhost:${port}`)\n    .emit('gbf-raid-server:cache', (error, tweets) =\u003e {\n      console.log(tweets);\n      // [{id: '451A60CE', name: 'Lv100 ティアマト・マグナ＝エア', createdAt: '2018-07-06 10:26:56'}, {...}]\n    })\n  ```\n* `client`へ`gbf-raid-server:tweet`イベントを送信します。このイベントは[streaming-api](https://github.com/desmondmorris/node-twitter#streaming-api)によって、救援ツイート１つにつき１イベントリアルタイムで発生します\n  ```js\n  createIoClient(`http://localhost:${port}`)\n    .on('gbf-raid-server:tweet', (tweet) =\u003e {\n      console.log(tweet);\n      // {id: '451A60CE', name: 'Lv100 ティアマト・マグナ＝エア', createdAt: '2018-07-06 10:26:56'}\n    });\n  ```\n\n## `raidServer.setCache(Tweet[]): this`\n\nサーバーのキャッシュを第一引数に変更します。`client`がサービスにアクセス時、過去のツイートを確認するために必要です。\n`.fetch`を利用して定期的に更新してください。\n\n## `raidServer.fetch(count = 100): Promise\u003cStatuses[]\u003e`\n\n過去のツイートを`Promise`で取得します。返されるデータには救援データと関係のないメタ情報が多量に含まれるので、`parseAll`関数などで抽出してください。\n\n## `parseAll(Statuses[]): Tweet[]`\n\n`raidServer.fetch`で取得したツイートのメタ情報を削除して新しい配列を返します。\n\n```js\nparseAll(await raidServer.fetch());\n// [{id: '451A60CE', name: 'Lv100 ティアマト・マグナ＝エア', memo: '毎秒チョクチェしろ', createdAt: '2018-07-06 10:26:56'}, {...}]\n```\n\n開発環境\n---\n\n下記がグローバルインストールされていることが前提です。\n\n* NodeJS v10.6.0\n* Yarn v1.8.0\n\n```bash\ngit clone git@github.com:59naga/gbf-raid-server.git\ncd gbf-raid-server\n\nyarn\nyarn test\n```\n\nLincense\n---\nMIT\n\n[1]: https://developer.twitter.com/en/docs/basics/rate-limits.html\n[2]: https://github.com/desmondmorris/node-twitter#readme\n[3]: https://github.com/socketio/socket.io#readme\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F59naga%2Fgbf-raid-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F59naga%2Fgbf-raid-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F59naga%2Fgbf-raid-server/lists"}