TohoInfo — Spicetify拡張(東方楽曲メタデータ検出)

Tool

概要

TohoInfoSpicetifyは、SpotifyクライアントをカスタマイズするSpicetify用の拡張機能で、再生中の曲が東方Projectの楽曲(ZUNの原曲)をベースにした編曲かを自動検出し、その原曲情報や関連キャラクターをSpotifyのプレイヤーバーに表示します。タイトルやアルバムの文字列照合、TouhouDBとの照合、結果の永続化(ローカルストレージにキャッシュ)を組み合わせることで、頻繁にアクセスする情報を高速に提供します。UIは軽量でSpotifyの操作性を損なわない設計です。(約300字)

GitHub

リポジトリの統計情報

  • スター数: 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字)

リポジトリ情報: