TohoInfo — Spicetify拡張(東方楽曲メタデータ検出)
概要
TohoInfoSpicetifyは、SpotifyクライアントをカスタマイズするSpicetify用の拡張機能で、再生中の曲が東方Projectの楽曲(ZUNの原曲)をベースにした編曲かを自動検出し、その原曲情報や関連キャラクターをSpotifyのプレイヤーバーに表示します。タイトルやアルバムの文字列照合、TouhouDBとの照合、結果の永続化(ローカルストレージにキャッシュ)を組み合わせることで、頻繁にアクセスする情報を高速に提供します。UIは軽量でSpotifyの操作性を損なわない設計です。(約300字)
リポジトリの統計情報
- スター数: 2
- フォーク数: 0
- ウォッチャー数: 2
- コミット数: 7
- ファイル数: 11
- メインの言語: TypeScript
主な特徴
- 自動編曲検出:再生中の曲タイトル・アルバム名を基にTouhouDBと突合し、原曲の有無を判定。
- 原曲・キャラクター情報表示:原曲タイトル、オリジナル楽曲の出典(作品名)、および関連キャラクターを表示。
- キャッシュと永続化:一度判定した結果はローカルに保存して高速表示、APIコールの節約。
- 軽量なSpicetify統合:Spotifyのプレイヤーバーに違和感なく情報を差し込み、ユーザー体験を損なわない。
技術的なポイント
TohoInfoはTypeScriptで実装されたSpicetify拡張で、Spicetifyの拡張APIによりSpotifyクライアントのDOMにUIを注入します。楽曲の同定ロジックはタイトル文字列とアルバム名の部分一致/正規化(記号や全角半角の正規化、不要語の除去)をベースにし、候補が得られた後にTouhouDBのデータと突合して信頼度を算出します。ネットワーク負荷を抑えるために結果はローカルストレージにキャッシュし、再検証は一定期間ごとに行います。ビルドはTypeScript→JavaScriptのトランスパイルを行い、dist配下に配布用ファイルを生成する一般的なワークフローを採用。manifest.jsonでSpicetifyへの登録情報を定義し、拡張読み込み時の依存解決やUIバインディングを行います。エッジケース(同名の曲やメタデータが不完全な配信)に対するフォールバック処理や、APIのレスポンス遅延に伴う非同期UI更新も考慮されています。(約700字)
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitattributes: file(改行や差分処理の挙動を指定)
- .gitignore: file(ビルド成果物や環境固有ファイルの無視設定)
- README.md: file(使い方、導入方法、スクリーンショットや機能紹介を記載)
- dist: dir(トランスパイル後の配布用JavaScriptやCSSを格納)
- manifest.json: file(Spicetifyに対する拡張のメタ情報。読み込み順やエントリポイントを定義)
- src/index.ts: file(拡張のエントリポイント。Spicetify APIとの接続、UI注入、イベント監視を開始)
- src/touhoudb.ts: file(TouhouDBとの通信や照合ロジックを実装)
- src/cache.ts: file(ローカルストレージを用いた結果キャッシュと有効期限管理)
- package.json: file(ビルドスクリプト、依存関係、バージョン管理)
- screenshot.png: file(READMEで使用される拡張スクリーンショット) …他 1 ファイル(合計11ファイル)
各ファイルの役割(補足)
- src/index.tsはSpicetifyのイベント(曲変更など)にフックして現在再生中の曲情報を取得、照合処理を非同期で起動します。
- src/touhoudb.tsは外部APIのクエリ生成、レスポンスの正規化、候補選定アルゴリズムを持ち、曖昧一致のための正規化ルールが実装されています。
- dist以下はSpicetifyへそのままコピーできる形で出力され、manifest.jsonと共に拡張として読み込まれます。
使い方(README抜粋)
⛩️ TohoInfo - Spicetify Extension
TohoInfo Extension Screenshot showing character and original song metadata in Spotify’s player bar
🌟 Overview
TohoInfo is a lightweight Spicetify extension designed for fans of the Touhou Project music scene. It automatically identifies if the song currently playing on Spotify is an arrangement of a ZUN original and provides immediate, persistent metadata.
✨ Features
- Arrangement Detection: Uses title and album matching against TouhouDB to detect origin tracks.
- Character Info: Displays related characters and original song metadata in the player bar.
- Cache: Saves lookup results to speed up future lookups and reduce API usage.
- Seamless Integration: UI is injected into Spotify’s player bar without interrupting playback controls.
(上記はREADMEの主要抜粋。導入方法やSpicetifyへの反映手順、ビルドコマンドはREADMEに詳述されています。)
まとめ
Spicetify環境で東方楽曲の原曲情報を手早く確認できる、実用的で軽量な拡張です。(約50字)
リポジトリ情報:
- 名前: TohoInfoSpicetify
- 説明: Checks for Touhou song metadata via TouhouDB and provides character info.
- スター数: 2
- 言語: TypeScript
- URL: https://github.com/jps1226/TohoInfoSpicetify
- オーナー: jps1226
- アバター: https://avatars.githubusercontent.com/u/30449321?v=4