- IDHSは、ストリーミングサービスのリンクを検索欄に貼り付けると、同じトラックのリンクを対応する他のプラットフォーム上で見つけて表示するWebアプリで、元リンクがSpotifyの場合は高速なオーディオプレビューも提供する
- 対応対象は個別のトラック、アルバム、アーティスト、ポッドキャストで、プレイリストは対象外であることが明記されている
- Spotify、Tidal、YouTube Music、Apple Music、Deezer、SoundCloud、Qobuz、Bandcamp、Pandoraのアダプターがあり、すべてのアダプターが逆方向検索と検証済みリンクをサポートする
- システムは、入力リンクからメタデータを抽出するパーサーと、対象プラットフォームで検索してリンクを見つけるアダプターに分かれており、検索結果が正確なトラックや楽曲であることは保証されない
- ローカル実行にはBunと一部のAPIキーが必要で、Spotify検索は2026年3月時点のWeb API制限のため、Spotify Webプレイヤーの内部GraphQL APIと自動更新トークンを使用する
IDHSがすること
- IDHS(I Don't Have Spotify) は、ユーザーがお気に入りのストリーミングサービスのリンクをコピーして検索欄に貼り付けると、対応する他のプラットフォーム上の該当項目リンクを表示する
- 元リンクがSpotifyの場合は、ユーザーが正しいトラックかどうか確認できるよう、高速なオーディオプレビューを提供する
- 対応範囲は個別のトラック、アルバム、アーティスト、ポッドキャストである
対応ストリーミングサービス
- Web AppとRaycast Extensionは、アダプターを通じてストリーミングサービス間のリンク変換を処理する
- 対応アダプターは次のとおり
- Spotify
- Tidal
- YouTube Music
- Apple Music
- Deezer
- SoundCloud
- Qobuz
- Bandcamp
- Pandora
- すべてのアダプターはInverted SearchとVerified Linksをサポートする
- 公式APIの利用有無はプラットフォームごとに異なる
- 公式APIを使用: Tidal, Deezer
- 公式APIを使用しない: Spotify, YouTube Music, Apple Music, SoundCloud, Qobuz, Bandcamp, Pandora
パーサーとアダプター構造
- IDHSは、提供されたリンクからメタデータを抽出し、その情報をもとに公開検索エンジンやApple Music、YouTube、SoundCloudなどの公式APIで使う新しい検索語を作成する
- 検索結果の中から最も関連性が高そうな項目を選ぶが、返されたリンクがユーザーの望む正確なトラックや楽曲である保証はない
- 検索語生成ワークフローの改善提案は歓迎されるが、リクエストを高速に保ち速度制限を避けるため、総当たりの再試行は除外するという制約がある
-
Parsers src/parsers
- パーサーは受け取ったリンクのプラットフォームを識別し、正規化されたメタデータを抽出する
- タイトル
- 説明
- タイプ
- 画像
- 任意のオーディオ
- 一貫した検索語
- たとえばSpotifyリンクはOpen Graphメタデータを収集し、トラック・アルバム・アーティスト・ショー・エピソードを表す検索文字列を生成する
- この検索語はその後、他のプラットフォームを検索するために使用される
-
Adapters src/adapters
- アダプターは正規化された検索語を対象プラットフォームの外部リンクへ変換する
- 各アダプターは次を担当する
- 正規化された検索語でプラットフォーム別の検索を実行する
- 検索方式はAPIベースまたはHTMLベースであり得る
type, url, isVerified, notAvailable などの値を含む結果を返す
- プラットフォームが信頼できるマッチングシグナルを提供する場合は、verifiedリンクを優先する
- この分離により、パーサーは元リンクの理解に集中し、アダプターは対象リンクの探索に集中できるようシステムをモジュール化している
Web AppとRaycast Extension
ローカル実行とAPI設定
- 環境変数の一覧は
.env.test で確認できる
- 次の値は別途設定が必要
- アプリ実行コマンドは次のとおり
bun install
bun dev
- URL短縮機もあわせて実行するには、
docker-compose.yml で使う値で URL_SHORTENER_API_KEY を設定したうえで、次のコマンドを使用する
docker compose up -d
bun install
bun dev
Spotify検索の処理方式
- Spotify検索はSpotify Web APIを使わず、
open.spotify.com のSpotify Webプレイヤーから抽出した匿名アクセストークンを使用する
- 認証フローはTOTPベースで、Spotify Webプレイヤーが使用する内部GraphQL APIを利用する
- READMEでは、2026年3月時点でSpotifyがWeb APIを制限し、Development ModeでPremiumアカウントを要求し、利用可能なエンドポイントを制限したと説明している
- このプロジェクトはPremiumアカウントを持たないため、Spotify Webプレイヤーと同じ内部APIを使用する
- トークンは約1時間の期限で自動更新され、開発者アカウントは不要
貢献
1件のコメント
Hacker News のコメント
Spotify を含む20以上のプラットフォームやテキストファイルのプレイリストを、別の20以上のプラットフォームまたはテキストファイルへ移せる、もっと印象的なサイトもある
みんなが押し寄せて落とさないでね :)
https://app.tunemymusic.com/transfer
サードパーティがあらゆる連携の組み合わせを解決しなければならないのではなく、ベンダーニュートラルなインポート/エクスポート形式があればいいのに
お気に入り登録したアーティストを移したところ、名前だけで照合しようとするので、同名が2人以上いると悲惨なほど失敗し、ほとんどランダムに選んでいるようだった。このサービスはどうなのか気になる
不当な著作権申請で削除された音楽だらけのプレイリストが10個以上あるが、削除されたトラックのタイトル/アーティストが分からないので、プレイリストを再構築することもできない
他の音楽サービスのリンクを開くと、自分の好みのサービスへ自動リダイレクトする、とてもシンプルな Chrome 拡張を作った
自分の場合は YouTube Music に設定しているので、Slack で Spotify などのリンクをクリックすると YouTube Music に飛ぶ
https://chromewebstore.google.com/detail/music-link/gnhphofp...
音楽を実際に買って自分で保管したい。Spotify にあった曲がだんだん消えていくのを、以前よりよく目にするようになったから
ところが最近の音楽は買うのがとても難しい。ほとんどがシングルとして出ていて、知る限りではストリーミングプラットフォームにしか上がっていないようだ。ストリーミングプラットフォームにある同種の音楽を、実際のオーディオファイルとして買う方法はまだある?
あるいは、可能なら Bandcamp で買えばいい
その結果、自分が「スター」/「追加」/「いいね」していた大量の曲がグレーアウトして再生できなくなった。いずれにせよ、自分が聴く音楽のコピーを実際に手に入れるという話なら、まったく恥じることなく完全に違法コピーしていいと思う
最新アルバムは問題なく買えたが、最新シングルはよく分からない。米国では Amazon が MP3 購入を許可しているようだが、確かではない
Spotify の購読料くらいで、たいてい毎月新しいアルバムを1枚買えるのは良いし、アルバムコレクションが少しずつ増えていくのが気に入っている
21世紀に入ってもうすぐ25年なのだから、MP3 をストリーミングしなければならなかった Napster の時代は過ぎた
Qobuz には 44.1 kHz / 16-bit ステレオより高音質のアルバムもよくある。違いを聴き分けられるわけではないが、より高いサンプリング周波数やビット深度を提供するほど気を配るアーティスト/音響エンジニアなら、たいてい良い音の音楽にも気を配っている、という意味はある
Qobuz は求めていることをそのまましてくれる。個別トラックやアルバム全体を購入してダウンロードでき、DRM もない
自分で買った CD から 100% ビットパーフェクト/ロスレス方式でリッピングしたオーディオファイルのコレクションもあり、Qobuz のサブスクリプションも併用している。リッピング結果は、同じ CD をリッピングした人たちのオンライン DB で検証した
Qobuz の欠点は、音楽発見機能が最高ではないことと、UI もかなりいまいちなこと。それでも、品質を重視し、自分の音楽を所有したい人には良い
最近のネットワークストリーミング機器の多くは Qobuz に対応している。たとえば自分はネットワークストリーマー内蔵の Yamaha アンプ(Yamaha R-N1000A)を使っており、Yamaha の音楽ストリーミングアプリ MusicCast も Qobuz、Tidal、Spotify に対応している
足元から消えてしまうかもしれない、あるいは聴いていた曲を削除されるかもしれないオンラインサービスの一時的なアクセス権を借りるのではなく、個別トラックを実際に買って所有できる
料金プランを確認するといい。購入する曲数によって、より良いプランは変わるかもしれない
自分の理解では、Spotify も Tidal と Qobuz からの圧力を受けてロスレスストリーミングへ移行すると発表していた。2024年になってようやく
最初に試した2曲で YouTube Music のマッチングに失敗した
Kanye West の Two Words: https://open.spotify.com/track/62wtttQzoIA9HnNmGVd9Yq?si=b1b...
Milabel Ranque の Two Words に飛ばされた: https://music.youtube.com/watch?v=Y64cFG9dfYo
Kanye West の Never Let Me Down: https://open.spotify.com/track/34j4OxJxKznBs88cjSL2j9?si=7ec...
Depeche Mode の Never Let me Down に飛ばされた: https://music.youtube.com/watch?v=snILjFUkk_A
サイトには正しいアルバムアートが表示されていたのにそうなった。実際に入れてみた曲は、どれもまともに動かなかった。もともとこういうものなのか? 似たタイトルの曲を探す方式なのか?
https://open.spotify.com/track/5qFL2uwfnGU8FccwLMgPNQ?si=b-a...
https://idonthavespotify.donado.co/?id=b3Blbi5zcG90aWZ5LmNvb...
ここでは YouTube Music のリンクが抜けている:
https://music.youtube.com/watch?v=0IHBCxs7QPE&si=QYvCtGCjKav...
それでも安定して動くならかなり使いそう。とても便利な小さなツールのアイデアだ
https://idonthavespotify.donado.co/?id=b3Blbi5zcG90aWZ5LmNvb...
Deezer のリンクは正しく、Tidal は動作せず、残りは間違っていた
それでも素晴らしいアイデアだ。数年前、自分もこういうものを実装してみようかと思ったことがある
Spotify を使っていない人が混じっているグループで音楽を共有するときは、たいてい共通項である YouTube リンクに戻ることになる
Spotify リンクをよく受け取るので、これは良い。より良いリンクは GitHub リポジトリではなく実際のサービスページだろう
https://idonthavespotify.donado.co/
Firefox ユーザー向けの 拡張機能としてもあると本当に良い。いつか誰かが作ってくれることを願う
idパラメータがどこから来るのか簡単にわかれば、おそらく ブックマークレットにもできそうだリンクの単純なハッシュのようなものだと推測している
複数の音楽プロバイダへのリンクがあるページを作るときは、このページを使っている: https://odesli.co
アーティスト、アルバム、曲単位で動作する
ログインすると URL をカスタマイズできる
ただのユーザーで、利害関係はない
残念ながらあまり使われず、今はもうメンテナンスしていない
/songlink {url}NAS から得られる最高の機能の一つは、音楽をそこに保存してスマホにストリーミングできることだ
サブスクリプションサービスに依存するより、一部の音楽を買って 自分で保管するほうを好む
以前 Discord 音楽ボットをメンテナンスしていたとき、YouTube からストリーミングしていた
Spotify URL を動作させるには YouTube 検索が安定して当たる必要があったが、うまくいったコツの一つは、曲名やアーティスト名などと一緒に Spotify URL も YouTube の検索語に入れることだった
公式 YouTube 動画の説明に Spotify リンクが含まれていることが多く、YouTube 検索は説明文までマッチするため、「公式」動画を選び出すのにかなり役立つ
このサービスはいくつかのサービスをさらに結び付けてくれるが、既存の URL をそのまま貼り付けることはできない: https://odesli.co/
リンクツリー系のサービスに近いが、曲やアルバムを検索できるので見つけやすい
例: https://song.link/i/1051394215
検索フィールドのプレースホルダーにも “Search or paste URL” と書かれている