このプロジェクトについて

Limusicは、Tauri 2、Rust、SvelteKitのシングルページUIで構築されたYouTube Music用のネイティブデスクトップクライアントです。YouTubeの内部APIと直接通信し、libmpvを通じて音声を再生するため、バンドルされたブラウザランタイムも、バックエンドサーバーも、Electronもありません。このプロジェクトは、Android向けYouTube MusicクライアントであるMetrolistの背後にある再生エンジンをデスクトップ向けに再構築したものとして始まりました。 再生とライブラリ ストリームはYouTubeのAPIから取得され、広告は再生されません。検索とブラウジングは曲、アルバム、アーティスト、プレイリスト、YouTube Musicのホームフィードをカバーし、入力中に結果がプレビューされます。ユーザーはアプリ内のGoogleログインまたはCookieの貼り付けによりYouTube Musicアカウントでサインインでき、複数のアカウントを同時に保持して切り替えることができます。ライブラリビューでは、プレイリスト、高評価した曲、保存したアルバムとアーティスト、アップロード、および高評価、プレイリストへの追加、カバーアートを含むプレイリストの作成・編集・削除、登録、ライブラリへの保存といった書き込み操作が可能です。再生履歴はYouTube Music自身の日別バケットに保持されます。ギャップレス再生とラウドネス正規化はlibmpvによって処理され、キューはラジオ/オートミックスの継続、ドラッグによる並べ替え、再起動をまたいだ復元をサポートします。ローカルの音声ファイルもメタデータを保ったまま再生できます。 インターフェースと連携 同期歌詞はサイドパネルに表示され、自動スクロールとクリックによるジャンプ、ソースがタイミングを提供する場合は単語単位で表示され、各行の下に翻訳が表示されます。歌詞はまずBoiduから取得され、次にLRCLIB、YouTube Musicのタイミング付き歌詞、Netease、QQ Music、Kugouの順で取得され、プレーンテキストにフォールバックし、結果はローカルにキャッシュされます。任意のミュージックビデオはアートワークの位置で再生されます。ミニプレイヤーとシアターモードも利用できます。Last.fmスクロブルはタイトルバーから接続し、再生の半分または4分のいずれか早い方でスクロブルします。Discord Rich Presenceはトラック、アーティスト、アートワーク、プログレスバーを表示します。OSのメディアキーと再生中表示の連携は、LinuxではMPRIS、WindowsではSMTCを通じてサポートされ、タスクバーのプレビューボタンもあります。システムトレイはウィンドウを閉じても再生を維持し、再生/一時停止とスキップのコントロール、および任意のログイン時起動を提供します。Listen Togetherは、小さなセルフホスト型リレーを介して同期リスニングルームを提供します。各参加者は自分の音声をストリーミングし、ルームは再生/一時停止、シーク、トラック変更、キューをリレーし、参加コードとホストの承認があります。キーボードショートカットには検索用のCtrl+Kとショートカット一覧用のCtrl+Hがあり、Ctrlとホイールでインターフェースがズームします。 カスタマイズと言語 アプリはアクセントパレット、カスタムカラー、カスタムフォント、角の丸み、カスタムアプリアイコン、および再生中のカバーから色を再設定するアダプティブテーマを提供します。現在6つの言語が出荷されています:英語、スペイン語、フランス語、トルコ語、ブラジルポルトガル語、インドネシア語で、さらに進行中です。翻訳はプルリクエストではなくWeblateで管理されています。 プラットフォームとパッケージング ビルドはWindows(自己更新付きsetup.exe、または.msi)、Linux(libmpvをバンドルした自己更新AppImage、.deb、.rpm)、macOS Apple Silicon(.dmg、未署名)で利用可能です。Intel macOSビルドはソースからです。コミュニティが保守するパッケージはArch AUR、Fedora COPR、openSUSE Tumbleweedに存在します。ソースからのビルドにはlibmpvとwebkit2gtkの開発パッケージ、UI用のpnpm、Rust側用のCargo/Tauriが必要です。ソースからビルドする際のLast.fm連携には、開発者自身のAPIキーとシークレットをsrc-tauri/lastfm.keysに置く必要があります。そのファイルがなくても残りはビルドおよび実行できます。 アーキテクチャに関する注記 純粋なRustクレートがYouTubeのInnerTube APIを扱い、複数の公式クライアントIDを偽装してそれらの間でフォールバックします。ストリームURLは難読化されたJavaScript(署名暗号とnパラメータ)およびBotGuard認証によって保護されており、LimusicはそのJavaScriptをUIプロセスから分離された隠れた実際のwebviewで実行します。音声はオンディスクキャッシュ付きのlibmpvを通ります。SvelteKit UIはRustコアとのみ通信し、YouTubeに直接接触することはありません。このプロジェクトはGPL-3.0でライセンスされ、YouTubeやGoogleとは提携していないと明記しています。