Skip to content

Latest commit

 

History

History
371 lines (259 loc) · 17.7 KB

README-ja.md

File metadata and controls

371 lines (259 loc) · 17.7 KB

YouTube Music

GitHub release GitHub license eslint code style Build status GitHub All Releases AUR Known Vulnerabilities

Screenshot

他の言語で読む: 🏴 英語, 🇰🇷 韓国語, 🇫🇷 フランス語, 🇮🇸 アイスランド語, 🇪🇸 スペイン語, 🇷🇺 ロシア語

YouTube MusicのElectronラッパーには以下の機能があります:

  • ネイティブの外観と操作感、元のインターフェースを維持することを目指しています
  • カスタムプラグインのフレームワーク: スタイル、コンテンツ、機能など、YouTube Musicをニーズに合わせて変更し、ワンクリックでプラグインを有効/無効にできます

デモ画像

プレーヤースクリーン (アルバムカラーテーマ & アンビエントライト)
Screenshot1

コンテンツ

機能:

  • 一時停止時の自動確認 (常に有効): 一定時間後に音楽を一時停止する"視聴を続けますか?"ポップアップを無効にします

  • その他の機能...

利用可能なプラグイン:

  • 広告ブロッカー: すべての広告とトラッキングをブロックします

  • アルバムアクション: プレイリストやアルバム内のすべての曲に「嫌いではない」「嫌い」「好き」「好きではない」ボタンを追加します

  • アルバムカラーテーマ: アルバムのカラーパレットに基づいて動的なテーマと視覚効果を適用します

  • アンビエントモード: 動画から柔らかい色を画面の背景に投影するライティング効果を適用します

  • ���ーディオコンプレッサー: オーディオにコンプレッションを適用します(信号の最も大きな部分の音量を下げ、最も小さな部分の音量を上げます)

  • ナビゲーションバーのぼかし: ナビゲーションバーを透明でぼやけたものにします

  • 年齢制限の回避: YouTubeの年齢確認を回避します

  • 字幕選択: 字幕を有効にします

  • コンパクトサイドバー: サイドバーを常にコンパクトモードに設定します

  • クロスフェード: 曲間にクロスフェードを適用します

  • 自動再生の無効化: すべての曲を「一時停止」モードで開始します

  • Discord リッチプレゼンス: リッチプレゼンスを使用して、友達にあなたが聴いている曲を表示します

  • ダウンローダー: UIから直接MP3/ソースオーディオをダウンロードします

  • イコライザー: 特定の周波数範囲をブーストまたはカットするフィルターを追加します(例: ベースブースター)

  • 指数音量: 音量スライダーを指数関数的にして、低い音量を選択しやすくします

  • アプリ内メニュー: メニューバーをおしゃれで暗い外観にします

    (このプラグインとメニュー非表示オプションを有効にした後、メニューにアクセスする際に問題がある場合は、この投稿を参照してください)

  • スクロブラー: Last.fmListenBrainzのスクロブリングサポートを追加します

  • Lumia Stream: Lumia Streamのサポートを追加します

  • Genius 歌詞: ほとんどの曲に歌詞サポートを追加します

  • Music Together: プレイリストを他の人と共有します。ホストが曲を再生すると、他の全員が同じ曲を聴くことができます

  • ナビゲーション: お気に入りのブラウザのように、UIに直接統合された次/前のナビゲーション矢印を追加します

  • Googleログインなし: インターフェースからGoogleログインボタンとリンクを削除します

  • 通知: 曲の再生が開始されると通知を表示します(Windowsではインタラクティブ通知が利用可能です)

  • ピクチャーインピクチャー: アプリをピクチャーインピクチャーモードに切り替えることができます

  • 再生速度: 速く聴いたり、遅く聴いたりできます!曲の速度を制御するスライダーを追加します

  • 正確な音量: カスタムHUDとカスタマイズ可能な音量ステップを使用して、マウスホイール/ホットキーで音量を正確に制御します

  • ショートカット (& MPRIS): 再生用のグローバルホットキー(再生/一時停止/次/前)を設定し、メディアキーをオーバーライドしてメディアOSDを無効にし、Ctrl/CMD + Fで検索を有効にし、LinuxのMPRISサポートを有効にし、上級ユーザー向けのカスタムホットキーを追加します

  • 嫌いな曲をスキップ: 嫌いな曲をスキップします

  • 無音部分をスキップ: 無音部分を自動的にスキップします

  • SponsorBlock: イントロ/アウトロなどの音楽以外の部分や、曲が再生されていないミュージックビデオの部分を自動的にスキップします

  • 同期歌詞: LRClibのようなプロバイダーを使用して、曲に同期した歌詞を提供します

  • タスクバーメディアコントロール: Windowsタスクバーから再生を制御します

  • TouchBar: macOS用のカスタムTouchBarレイアウト

  • Tuna OBS: OBSのプラグインTunaとの統合

  • ビデオ品質チェンジャー: ビデオオーバーレイのボタンを使用してビデオ品質を変更できます

  • ビデオ切り替え: ビデオ/ソングモードを切り替えるボタンを追加します。オプションでビデオタブ全体を削除することもできます

  • ビジュアライザー: プレイヤーにさまざまな音楽ビジュアライザーを追加します

翻訳

Hosted Weblateで翻訳を手伝うことができます。

翻訳状況 翻訳状況 2

ダウンロード

最新リリースを確認して、最新バージョンをすばやく見つけることができます。

Arch Linux

AURからyoutube-music-binパッケージをインストールします。AURのインストール手順については、このwikiページを参照してください。

macOS

Homebrewを使用してアプリをインストールできます(cask定義を参照)。

brew install th-ch/youtube-music/youtube-music

アプリを手動でインストールし、アプリの起動時に「破損しているため開けません」というエラーが表示される場合は、ターミナルで次のコマンドを実行します。

/usr/bin/xattr -cr /Applications/YouTube\ Music.app

Windows

Scoopパッケージマネージャーを使用して、extrasバケットからyoutube-musicパッケージをインストールできます。

scoop bucket add extras
scoop install extras/youtube-music

または、Windows 11の公式CLIパッケージマネージャーであるWingetを使用して、th-ch.YouTubeMusicパッケージをインストールできます。

注: 「不明な発行元」からのものであるため、Microsoft Defender SmartScreenがインストールをブロックする場合があります。これは、GitHubで手動でダウンロードした後に実行ファイル(.exe)を実行しようとする場合にも当てはまります。

winget install th-ch.YouTubeMusic

ネットワーク接続なしでインストールする方法 (Windows)

  • リリースページで_デバイスのアーキテクチャ_に対応する*.nsis.7zファイルをダウンロードします。
    • x64は64ビットWindows用
    • ia32は32ビットWindows用
    • arm64はARM64 Windows用
  • リリースページでインストーラーをダウンロードします。(*-Setup.exe)
  • それらを同じディレクトリに配置します。
  • インストーラーを実行します。

テーマ

CSSファイルを読み込んでアプリケーションの外観を変更できます(オプション > 視覚的調整 > テーマ)。

いくつかの事前定義されたテーマは、https://github.com/kerichdev/themes-for-ytmdesktop-player で利用できます。

開発

git clone https://github.com/th-ch/youtube-music
cd youtube-music
pnpm install --frozen-lockfile
pnpm dev

独自のプラグインを作成する

プラグインを使用すると、次のことができます。

  • アプリを操作する - ElectronのBrowserWindowがプラグインハンドラーに渡されます
  • HTML/CSSを操作してフロントエンドを変更する

プラグインの作成

src/plugins/YOUR-PLUGIN-NAMEにフォルダーを作成します。

  • index.ts: プラグインのメインファイル
import style from './style.css?inline'; // スタイルをインラインとしてインポート

import { createPlugin } from '@/utils';

export default createPlugin({
  name: 'プラグインラベル',
  restartNeeded: true, // 値がtrueの場合、ytmusicは再起動ダイアログを表示します
  config: {
    enabled: false,
  }, // カスタム設定
  stylesheets: [style], // カスタムスタイル
  menu: async ({ getConfig, setConfig }) => {
    // すべての*ConfigメソッドはPromise<T>でラップされています
    const config = await getConfig();
    return [
      {
        label: 'メニュー',
        submenu: [1, 2, 3].map((value) => ({
          label: `値 ${value}`,
          type: 'radio',
          checked: config.value === value,
          click() {
            setConfig({ value });
          }, 
        })),
      },
    ];
  },
  backend: {
    start({ window, ipc }) {
      window.maximize();

      // レンダラープラグインと通信できます
      ipc.handle('some-event', () => {
        return 'hello';
      });
    },
    // 設定が変更されたときに発生します
    onConfigChange(newConfig) { /* ... */ },
    // プラグインが無効になったときに発生します
    stop(context) { /* ... */ },
  },
  renderer: {
    async start(context) {
      console.log(await context.ipc.invoke('some-event'));
    },
    // レンダラーでのみ使用可能なフック
    onPlayerApiReady(api: YoutubePlayer, context: RendererContext) {
      // プラグイン設定を簡単に設定
      context.setConfig({ myConfig: api.getVolume() });
    },
    onConfigChange(newConfig) { /* ... */ },
    stop(_context) { /* ... */ },
  },
  preload: {
    async start({ getConfig }) {
      const config = await getConfig();
    },
    onConfigChange(newConfig) {},
    stop(_context) {},
  },
});

一般的な使用例

  • カスタムCSSの挿入: 同じフォルダーにstyle.cssファイルを作成し、次のようにします。
// index.ts
import style from './style.css?inline'; // スタイルをインラインとしてインポート

import { createPlugin } from '@/utils';

export default createPlugin({
  name: 'プラグインラベル',
  restartNeeded: true, // 値がtrueの場合、ytmusicは再起動ダイアログを表示します
  config: {
    enabled: false,
  }, // カスタム設定
  stylesheets: [style], // カスタムスタイル
  renderer() {} // レンダラーフックを定義
});
  • HTMLを変更したい場合:
import { createPlugin } from '@/utils';

export default createPlugin({
  name: 'プラグインラベル',
  restartNeeded: true, // 値がtrueの場合、ytmusicは再起動ダイアログを表示します
  config: {
    enabled: false,
  }, // カスタム設定
  renderer() {
    // ログインボタンを削除
    document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
  } // レンダラーフックを定義
});
  • フロントエンドとバックエンドの通信: ElectronのipcMainモジュールを使用して行うことができます。index.tsファイルとsponsorblockプラグインの例を参照してください。

ビルド

  1. リポジトリをクローン
  2. このガイドに従ってpnpmをインストール
  3. pnpm install --frozen-lockfileを実行して依存関係をインストール
  4. pnpm build:OSを実行
  • pnpm dist:win - Windows
  • pnpm dist:linux - Linux (amd64)
  • pnpm dist:linux:deb-arm64 - Linux (Debian用arm64)
  • pnpm dist:linux:rpm-arm64 - Linux (Fedora用arm64)
  • pnpm dist:mac - macOS (amd64)
  • pnpm dist:mac:arm64 - macOS (arm64)

electron-builderを使用して、macOS、Linux、およびWindows用のアプリをビルドします。

プロダクションプレビュー

pnpm start

テスト

pnpm test

Playwrightを使用してアプリをテストします。

ライセンス

MIT © th-ch

FAQ

アプリのメニューが表示されないのはなぜですか?

メニューを非表示オプションがオンの場合 - altキー(またはアプリ内メニュープラグインを使用している場合は` [バックティック]キー)でメニューを表示できます