SlashNephy / saya

📺 API server to enhance the web-based DTV watching experiences w/ elaina (https://github.com/ci7lus/elaina)
https://slashnephy.github.io/saya
MIT License
17 stars 4 forks source link
dtv elaina epgstation mirakc mirakurun

saya: 📺 API server to enhance the web-based DTV watching experiences w/ elaina

Kotlin GitHub release (latest by date) GitHub Workflow Status Docker Image Size (tag) Docker Pulls license issues pull requests

saya is still in heavy development. まだ一般の利用向けに最適化されていません。


これはなに

EPGStation を使用している環境で Web ベースの視聴環境を拡張することを目的とした API バックエンドサーバです。フロントエンドのコードは ci7lus/elaina に公開されています。

そのため, saya 単体では予約・録画機能を有しません。

elaina.png

次の機能を現在実装しています。

その他実装予定の機能などは Roadmap をご覧ください。

saya は以下のプロジェクトとの併用を想定しています。

             +--------------------------+     +----------------+     +----------------+     +-------------+
 Client A -> |   Live Comment Stream    |     |                |     |   EPGStation   |     |  Mirakurun  |
             |         WebSockets       |     |                | <-> |                | <-> |   mirakc    |
 Client B -> |    /comments/***/live    |     |     elaina     |     |  0.0.0.0:8888  |     +-------------+
             +--------------------------+ <-> |                |     +----------------+     +-------------+
             +--------------------------+     |                |     +----------------+     |  niconico   |
             | Timeshift Comment Stream |     |  0.0.0.0:1234  |     |      saya      |     |    5ch      |
 Client C -> |         WebSockets       |     |                | <-> |                | <-> |   Annict    |
             | /comments/***/timeshift  |     |                |     |  0.0.0.0:1017  |     |      etc... |
             +--------------------------+     +----------------+     +----------------+     +-------------+

Get Started

Docker

以下の README には Docker に関する用語が多く含まれます。必要に応じて Docker 概要 (公式ドキュメント) を参照してください。

イメージ

いくつかのイメージタグを用意しています。現在 linux/amd64 プラットホームのみサポートしています。

docker-compose

環境構築が容易なので docker-compose で導入することをおすすめします。docker-compose についての説明は Docker Compose 概要 (公式ドキュメント) などを参照してください。一言でいうと docker-compose は「複数のアプリケーションを一度に起動するためのツール」で, それを指示するための構成ファイルである docker-compose.yml を作成する必要があります。

docker-compose.yml

version: '3.8'

services:
  saya:
    container_name: saya
    image: ghcr.io/slashnephy/saya:latest
    restart: always
    ports:
      - 1017:1017/tcp # いれいな
    # 環境変数で各種設定を行います
    # () 内の値はデフォルト値を示します
    environment:
      # HTTP サーバのホスト, ポート番号 ("0.0.0.0", 1017)
      # Docker 環境では変更する必要はありません。
      SAYA_HOST: 0.0.0.0
      SAYA_PORT: 1017
      # HTTP サーバのベース URI ("/")
      # リバースプロキシ時に直下以外に置きたい場合に変更します
      SAYA_BASE_URI: /
      # ログレベル ("INFO")
      # 利用可能な値: ALL, TRACE, DEBUG, INFO, WARN, ERROR, OFF
      SAYA_LOG: DEBUG

      # Twitter の資格情報 (null, null, null, null)
      TWITTER_CK: xxx
      TWITTER_CS: xxx
      TWITTER_AT: xxx
      TWITTER_ATS: xxx
      # Twitter からツイートを取得する際にストリーミング API を使用するか (false)
      # 接続に失敗した場合には通常の検索 API にフォールバックします。
      # 試験的な機能のため, 一部の環境で動作しない可能性があります。
      TWITTER_PREFER_STREAMING_API: 'true'
      # 5ch API への接続情報 (null, null, null, null, null)
      GOCHAN_HM_KEY: xxx
      GOCHAN_APP_KEY: xxx
      GOCHAN_AUTH_UA: xxx
      GOCHAN_AUTH_X_2CH_UA: xxx
      GOCHAN_UA: xxx
    volumes:
      # definitions.yml を書き換えて使用したい場合
      # - ./definitions.yml:/app/docs/definitions.yml:ro

このように docker-compose.yml を作成し, 同じディレクトリで docker-compose を実行します。Linux 環境では root 権限で実行する必要があります。

# 更新
docker-compose pull

# バックグラウンドで起動
docker-compose up -d

# ログ表示
docker-compose logs -f

# 破棄
docker-compose down

up -d すると http://localhost:1017/ に saya が起動しているはずです。

直接実行

リリースから Jar を取ってきて実行するか, ./gradlew run で実行できます。

Java の実行環境は JRE 8 以降が必要です。

設定値の変更は現在, 環境変数経由でしか行なえません。ご了承ください。

SAYA_LOG=DEBUG java -jar /path/to/saya.jar

Endpoints

saya が提供する API は endpoints.md に一覧があります。

Contribution

IDE は IntelliJ IDEA をおすすめします。

saya の開発には以下のブランチモデルを採用しています。

不安定なプロジェクトにつき, 互換性のない変更や方針変更が発生する可能性があります。ご了承ください。

# ビルド
./gradlew build

# 実行
./gradlew run

Acknowledgments

saya は次のプロジェクトを利用 / 参考にして実装しています。

DTV 実況コミュニティの皆さまに感謝します。

License

saya is provided under the MIT license.