{"id":20055682,"url":"https://github.com/tsukumijima/konomitv-api","last_synced_at":"2026-05-13T23:38:26.468Z","repository":{"id":108526949,"uuid":"486735095","full_name":"tsukumijima/KonomiTV-API","owner":"tsukumijima","description":"KonomiTV Utility API","archived":false,"fork":false,"pushed_at":"2023-01-09T02:14:26.000Z","size":51,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-18T23:11:23.609Z","etag":null,"topics":["cloudflare","cloudflare-workers","konomitv"],"latest_commit_sha":null,"homepage":"https://app.konomi.tv/api/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tsukumijima.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"License.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-28T20:11:51.000Z","updated_at":"2023-04-12T18:21:52.000Z","dependencies_parsed_at":"2023-04-28T11:34:36.002Z","dependency_job_id":null,"html_url":"https://github.com/tsukumijima/KonomiTV-API","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tsukumijima/KonomiTV-API","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsukumijima%2FKonomiTV-API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsukumijima%2FKonomiTV-API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsukumijima%2FKonomiTV-API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsukumijima%2FKonomiTV-API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tsukumijima","download_url":"https://codeload.github.com/tsukumijima/KonomiTV-API/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsukumijima%2FKonomiTV-API/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33004763,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"ssl_error","status_checked_at":"2026-05-13T13:14:51.610Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cloudflare","cloudflare-workers","konomitv"],"created_at":"2024-11-13T12:49:06.871Z","updated_at":"2026-05-13T23:38:26.444Z","avatar_url":"https://github.com/tsukumijima.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# KonomiTV-API\n\n[KonomiTV](https://github.com/tsukumijima/KonomiTV) に関連する小さな API です。\n\nこの API は [Cloudflare Workers](https://workers.cloudflare.com/) 向けに書かれています。https://app.konomi.tv/api/ で稼働中です。\n\n## 概要\n\n[gmencz/cloudflare-workers-typescript-esbuild-esm](https://github.com/gmencz/cloudflare-workers-typescript-esbuild-esm) を参考にして開発しました。\n\n現時点では、Twitter API / ニコニコ API のコールバック URL を、KonomiTV サーバーにクエリごと 302 リダイレクトする API を実装しています。  \nちょっと URL を修正してリダイレクトするだけの API のためだけにサーバーを立てたくなかったので、無料枠の大きい Cloudflare Workers を採用しました。\n\nOAuth の認証では、コールバック先の URL を、事前にサービスのデベロッパーダッシュボードなどで設定しておく必要があります。  \n一方、KonomiTV サーバーの URL (プライベート IP アドレス) は環境によってまちまちで、コールバックする URL を一意に決められません。\n\n\u003e コールバック URL はほとんどのサービスで複数設定できるものの、考えられるすべての URL を指定するのは非現実的…。\n\nそこで、一旦この API にコールバック URL を集約してから、サービスからのリダイレクト結果をそれぞれの KonomiTV サーバーに振り分けることにしました。\n\nTwitter API では、クエリの \"server\" パラメーターで指定された、KonomiTV サーバーの URL へ振り分けます。  \nそれ以外の API では、クエリの \"state\" パラメーターの JSON (Base64 エンコードされている) 内の \"server\" プロパティで指定された、KonomiTV サーバーの URL へ振り分けます。\n\n最後に KonomiTV サーバーがこの API からのリダイレクトを受け取ることで、コールバック対象の URL が定まらなくても、OAuth 連携ができるようになります。\n\n## 開発\n\n### 環境構築\n\n```bash\n$ npm install -g @cloudflare/wrangler\n```\n\n事前に [wrangler](https://github.com/cloudflare/wrangler) をインストールしてください。当然 Cloudflare アカウントも必要です。\n\n```bash\n$ yarn install\n```\n\n依存パッケージをインストールします。\n\nそのあと、wrangler.toml を編集します。  \n自分のアカウントやドメインで動かしたい場合は、少なくとも route, account_id, zone_id を変更する必要があります。\n\n### ビルド\n\n```bash\n$ yarn build\n```\n\ndist/worker.mjs にビルド済みの JS ファイルが出力されます。  \nこのファイルが Cloudflare Workers にデプロイされます。\n\n### 開発サーバーの起動\n\n```bash\n$ yarn dev\n```\n\n[Miniflare](https://github.com/cloudflare/miniflare) を使い、ローカル内だけで開発できるように設定しています。  \n開発サーバーは http://localhost:8787/api/ でリッスンされます。\n\n### デプロイ\n\n```bash\n$ yarn publish-worker\n```\n\nビルドとデプロイが同時に行われます。  \nデプロイした worker.mjs は、10 秒ほどで Cloudflare Workers に反映されます。\n\n\u003e yarn だと publish が内蔵のコマンドと被ってしまうため、`-worker` の Suffix を付けざるを得ない…\n\n## License\n\n[MIT License](License.txt)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsukumijima%2Fkonomitv-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsukumijima%2Fkonomitv-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsukumijima%2Fkonomitv-api/lists"}