Giter Club home page Giter Club logo

saya's Introduction

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

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

  • ライブ再生 / 録画番組再生での実況コメントの配信
    • ライブ再生時には次のソースから取得します。
      • ニコニコ実況 の公式放送およびコミュニティ放送 (ログイン不要)
      • Twitter ハッシュタグ (Filter ストリーム or 検索 API)
      • 5ch DAT
    • 録画番組再生時には次のソースから取得します。

その他実装予定の機能などは 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... |
             +--------------------------+     +----------------+     +----------------+     +-------------+
  • ci7lus/elaina
    • EPGStation を介した Web ベースのプレイヤーです。
    • コメントの取得に saya を使用しています。
  • ci7lus/MirakTest
    • Mirakurun を介した Electron ベースのプレイヤーです。 (マルチプラットフォーム TVTest のようなもの)
    • コメントの取得に saya を使用しています。

Get Started

Docker

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

イメージ

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

  • ghcr.io/slashnephy/saya:latest
    • master ブランチへのプッシュの際にビルドされます。基本的に最新の安定版バージョンになります。
    • 比較的安定しています。
  • ghcr.io/slashnephy/saya:dev
    • dev ブランチへのプッシュの際にビルドされます。
    • 開発版のため, 不安定である可能性があります。
  • ghcr.io/slashnephy/saya:<version>
    • GitHub 上のリリースに対応します。

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 の開発には以下のブランチモデルを採用しています。

  • master ブランチ
    安定版とみなされます。基本的にバージョンアップの際に dev から merge されます。
  • dev ブランチ
    開発版とみなされます。
  • feature-*** ブランチ
    特定の機能の開発に使用します。開発が一段落したのちに dev に squash merge されます。

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

# ビルド
./gradlew build

# 実行
./gradlew run

Acknowledgments

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

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

License

saya is provided under the MIT license.

saya's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

saya's Issues

インストールマニュアルについて

すみません、いきなりこういうことを言うのも不躾ではありますが……

  • Elainaとsayaがあり、どうもニコニコ実況を載せられるらしい
  • Dockerで入れるらしい
    というのはわかるのですが、インストール方法や前提となるソフト(Docker等)が少々わかりづらいです。

Mirakurunの表記を参考にインストールマニュアルさえ書いていただければ、こちらで動かしてみてマニュアル的なものがかけるかもしれません。

見た感じ面白そうで、将来性もありそうなソフトなので、使ってみたいです。
インストールマニュアルについてご一考いただけますでしょうか。

Dependency Dashboard

This issue provides visibility into Renovate updates and their statuses. Learn more

Awaiting Schedule

These updates are awaiting their schedule. Click on a checkbox to get an update now.

  • Update Ktor to v2 (major) (io.ktor:ktor-client-logging, io.ktor:ktor-client-serialization, io.ktor:ktor-client-apache, io.ktor:ktor-client-cio, io.ktor:ktor-serialization, io.ktor:ktor-websockets, io.ktor:ktor-server-cio)

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

dockerfile
Dockerfile
  • gradle 7.4.2-jdk17
  • gradle 7.4.2-jdk17
  • amazoncorretto 18.0.1
github-actions
.github/workflows/check.yml
  • actions/checkout v3
  • actions/cache v3
  • actions/setup-java v3
.github/workflows/docker.yml
  • actions/checkout v3
  • docker/setup-qemu-action v2
  • docker/setup-buildx-action v2
  • docker/login-action v2
  • docker/build-push-action v3
gradle
gradle.properties
settings.gradle.kts
build.gradle.kts
  • org.jetbrains.kotlin.jvm 1.6.21
  • org.jetbrains.kotlin.plugin.serialization 1.6.21
  • blue.starry.scriptextender 0.0.2
  • com.github.johnrengelman.shadow 7.1.2
  • io.ktor:ktor-server-cio 1.6.8
  • io.ktor:ktor-websockets 1.6.8
  • io.ktor:ktor-serialization 1.6.8
  • io.ktor:ktor-client-cio 1.6.8
  • io.ktor:ktor-client-apache 1.6.8
  • io.ktor:ktor-client-serialization 1.6.8
  • io.ktor:ktor-client-logging 1.6.8
  • com.charleskorn.kaml:kaml 0.45.0
  • blue.starry:penicillin 6.2.3
  • commons-codec:commons-codec 1.15
  • org.jsoup:jsoup 1.15.1
  • com.google.guava:guava 31.1-jre
  • io.github.microutils:kotlin-logging 2.1.23
  • ch.qos.logback:logback-classic 1.2.11
gradle-wrapper
gradle/wrapper/gradle-wrapper.properties
  • gradle 7.4.2

  • Check this box to trigger a request for Renovate to run again on this repository

TVRemotePlus 相当の機能を提供する

  • ライブ再生機能 w/ 実況
  • 録画番組再生機能 w/ 実況
  • ファイル再生機能 (EPGStation から管理を外れた TS ファイルを再生可能にする)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.