自動化の極み!Seanimeでアニメ管理をハックする:Goエンジニア視点の導入ガイド
簡単に言うと、「自分専用の最強アニメ・マンガ管理サーバー」 を作れるツールやね。
エンジニア的な視点で「これ、役立つわ〜」ってポイントを3つに絞ってみたで。
技術スタックが現代的で勉強になる バックエンドが Go、フロントエンドが React。この組み合わせはパフォーマンスもええし、コードの見通しもええから、ソースを追うだけでも勉強になるわ。
自動化の極み BitTorrent クライアント(qBittorrent とか)と連携して、アニメの自動ダウンロードからメタデータ(タイトル、画像、あらすじ)の取得まで自動でやってくれる。手動でポチポチ整理する手間が省けるから、開発に集中できるな!
一元管理の心地よさ AniList と同期してくれるから、「どこまで見たっけ?」がなくなる。ローカルのファイル管理とクラウドの視聴履歴がガッチャンコされる快感は、整理好きのエンジニアにはたまらんはずや。
基本的にはデスクトップアプリとして動かすのが一番簡単やけど、エンジニアなら Docker とか バイナリ で動かしたいよな。
GitHub の Releases から最新のインストーラーを落としてくる。
インストールして起動!以上!
もし自分でビルドしてみたいなら、こんな感じや。
# リポジトリをクローン
git clone https://github.com/5rahim/seanime.git
cd seanime
# 依存関係を入れてビルド(Go が入ってる前提な!)
go mod download
go build -o seanime main.go
# 実行
./seanime
あとはブラウザで http://localhost:4321 (デフォルト設定の場合)にアクセスすれば、かっこいいダッシュボードがお目見えや。
Seanime がどうやって動いてるか、構成をパッと見でわかるように整理したで。
Seanime は外部から制御することもできるんや。例えば、自分のスクリプトから「今何が放送中か」を取得したい時のイメージはこんな感じやで(Goでの例)。
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
// Seanime のローカル API にアクセスするイメージ
// ※ 実際には認証トークンとかが必要になる場合があるで
url := "http://localhost:4321/api/v1/library/anime"
resp, err := http.Get(url)
if err != nil {
fmt.Println("エラーや!:", err)
return
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println("アニメ一覧取得したで!:\n", string(body))
}
自分だけのメディアサーバーを Go と React で構築するってのは、趣味と実益を兼ねた最高の遊び場やと思うわ。 特に、既存の Plex とか Jellyfin よりも「アニメに特化」してるから、痒いところに手が届く設計になってるのがニクいな。
「週末にちょっと自作サーバー立てて、アニメ三昧したいな〜」って思てるなら、これ触ってみる価値大アリやで!