YouTubeのおすすめ動画があまりにも不快すぎて、対策として「再生履歴を保存しない」設定にしていました。
こうするとおすすめ動画が表示されなくなり大変快適だったのですが、代わりに動画の再生時間が保存されないので長尺動画を見るのが大変不便になってしまったのです。
仕方がないので渋々再生履歴を保存する設定に戻したところ、再生時間は記憶されないのにおすすめ欄だけ返ってくるという地獄が誕生しました。
ぎゃー!
いろいろ設定をいじっても治らなかったので、非公式のフロントエンドを使って解決することを決意!
「おすすめを出してこない」「再生時間を記憶できる」「チャンネル登録が可能」の3つの要件を満たすWebツールを探した結果、
「Invidious」 に辿り着きました。
おまけで広告が流れなくなる夢もみるようになりました。
不思議だなぁ
セットアップ
python3 -c "import secrets; print(''.join(secrets.choice('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') for _ in range(16)))"
半角英数字16字のパスワードを2つ生成しておきます。
services:
invidious:
image: quay.io/invidious/invidious:latest
# image: quay.io/invidious/invidious:latest-arm64 # ARM64/AArch64 devices
restart: unless-stopped
ports:
- "3000:3000"
environment:
# https://github.com/iv-org/invidious/blob/master/config/config.example.yml
INVIDIOUS_CONFIG: |
db:
dbname: invidious
user: kemal
password: kemal
host: invidious-db
port: 5432
check_tables: true
default_locale: "ja-JP"
locales:
- "ja-JP"
- "en-US"
invidious_companion:
- private_url: "http://companion:8282/companion"
# 先ほど生成したキー1個目
invidious_companion_key: "CHANGE_ME!!"
domain: youtube.local.example.com
# 先ほど生成したキー2個目
hmac_key: "CHANGE_ME!!"
healthcheck:
test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1
interval: 30s
timeout: 5s
retries: 2
logging:
options:
max-size: "10m"
max-file: "2"
depends_on:
- invidious-db
companion:
image: quay.io/invidious/invidious-companion:latest
environment:
# 先ほど生成したキー1個目
- SERVER_SECRET_KEY=CHANGE_ME!!
restart: unless-stopped
logging:
options:
max-size: "10m"
max-file: "2"
cap_drop:
- ALL
read_only: true
volumes:
- companioncache:/var/tmp/youtubei.js:rw
security_opt:
- no-new-privileges:true
invidious-db:
image: postgres:14-alpine
restart: unless-stopped
volumes:
- postgresdata:/var/lib/postgresql/data
- ./config/sql:/config/sql
- ./docker/init-invidious-db.sh:/docker-entrypoint-initdb.d/init-invidious-db.sh
environment:
POSTGRES_DB: invidious
POSTGRES_USER: kemal
POSTGRES_PASSWORD: kemal
LANG: ja_JP.UTF-8
LC_ALL: ja_JP.UTF-8
POSTGRES_INITDB_ARGS: "--locale=ja_JP.UTF-8 --encoding=UTF8"
POSTGRES_SHARED_BUFFERS: "64MB"
POSTGRES_WORK_MEM: "4MB"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
volumes:
postgresdata:
companioncache:
docker-compose.ymlを作成します。 CHANGE_ME!! のところを先ほど作成したパスワードで置き換えてください。
docker-compose up -d で実行します。
YouTube側の仕様変更により動画再生ができなくなることがあります。 そんなときはこのコマンドで更新してやるとたぶん直ります。
docker-compose down && docker-compose pull && docker-compose up -d
リソース消費
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 95677bcf7057 invidious-invidious-1 0.01% 71.59MiB / 3.88GiB 1.80% 75.3MB / 62.6MB 63.8MB / 57.3kB 2 20d36b223ead invidious-companion-1 3.23% 294.1MiB / 3.88GiB 7.40% 123MB / 70.7MB 165MB / 0B 13 30681853f447 invidious-invidious-db-1 0.01% 31.59MiB / 3.88GiB 0.80% 270kB / 1.08MB 74.8MB / 5.85MB 9
リソース消費はこんな感じです。
コンパニオンの消費がちょっと気がかりかなぁ
使用感

アクセスするとこんな感じで動画の一覧が表示されます。 アカウントを作成することでチャンネル登録や再生履歴の記憶が可能です。
動画再生開始時のレスポンスは本家YouTubeには少し劣りますが、ストレスを感じるほどではありませんね。 一度再生を始めれば止まることもなく、快適に視聴できます。 おすすめに変な動画が表示されることもないので、も〜最高!
あと使ってみて始めた気づいたのですが、検索時に登録チャンネルや大手Youtuberの関係ない動画が表示されたりしないので、目的の動画がとても探しやすいです。 不快なおすすめ動画や広告が出ないことよりもこちらの方がダントツでうれしいかな。
アプリなどを作ったりしています! よかったらみていってください→
つくったもの
今のイチオシ↓

