Skip to content

Сборка на Arch-based/uv/fish/Wayland/Hyprland #1

Description

@Antony-hash512

С одной стороны у меня получилось всё собрать на моей системе с Arch Linux/uv/fish/Wayland/Hyprland/Kitty
Естественно последовательность команд будет отличаться от Debian-based/pip/venv/bash, для начала я воспроизведу последовательность команд, при помощи которых у меня получилось осуществить сборку на моей системе:

Сборка

1. Клонирование

mkdir -p ~/git
cd ~/git
git clone https://github.com/HelpFreedom/youthub.git
cd youthub

2. Python окружение через uv

uv venv --python 3.11
source .venv/bin/activate.fish

3. Python зависимости

uv pip install curl_cffi "httpx[http2]" Pillow playwright

4. Node.js зависимости

npm install

5. Системные зависимости (Arch)

sudo pacman -S --needed base-devel nasm sdl2 dav1d opus ffmpeg xdotool wmctrl ttf-dejavu

6. Сборка ffplay-yt (самое важное)

Сборка команадами из README у меня упала из-за несовместимости очень старого FFmpeg 4.3.9 (2020 год) и новейшей библиотеки libdav1d (1.5.3), которая стоит у меня на Arch.

API Dav1dSettings изменился, поэтому ошибки:

  • n_tile_threads / n_frame_threads
  • DAV1D_MAX_TILE_THREADS и т.д.

Grok Heavy предложил мне такое Решение:

  • просто отключаем поддержку AV1 (libdav1d). Для YouTube она не нужна (достаточно H.264 + VP9).

Пока собирал именно на той версии 4.3.9, которая прописана в Readme, потом попробую на самой последней.

Переходим в папку и собираем:

# 1. Заходим в папку ffplay-yt
cd ffplay-yt

# 2. Скачиваем и распаковываем FFmpeg заново (если нужно)
mkdir -p src && cd src
wget -q https://ffmpeg.org/releases/ffmpeg-4.3.9.tar.xz
tar xf ffmpeg-4.3.9.tar.xz
cd ffmpeg-4.3.9

# 3. Копируем патченный ffplay.c
cp ../../ffplay.c fftools/ffplay.c

# 4. НОВАЯ КОНФИГУРАЦИЯ (БЕЗ libdav1d)
./configure \
  --disable-everything \
  --enable-gpl --enable-version3 \
  --enable-decoder=h264,vp9,opus,aac,mp3,mjpeg,png \
  --enable-demuxer=matroska,mov,webm \
  --enable-protocol=file,pipe,unix,fd \
  --enable-filter=aresample,scale,atempo,volume \
  --enable-parser=h264,vp9,opus,aac \
  --enable-libopus \
  --enable-sdl2 --enable-ffplay \
  --enable-indev=alsa \
  --disable-doc --disable-htmlpages --disable-manpages \
  --disable-ffmpeg --disable-ffprobe

# 5. Собираем (быстро, потому что без dav1d)
make ffplay -j$(nproc)

# 6. Копируем бинарник
mkdir -p ../../bin
cp ffplay ../../bin/ffplay-yt

cd ../../

7. Запуск (в активированном окружении)

python grid_demo.py

Запуск

Warning

Я тут по невнимательности запостил свой токен авторизации, но к счастью он одноразовый. Но в целом такая невнимательность несёт риски. Всем кто читает: будьте внимательнее и не повторяйте моёй ошибки.

(youthub) mega@vivobook ~/git/youthub (main) 
🦀🐟 python grid_demo.py
[grid] loading home + watch-next pivot…

  +-- YouTube TV pairing --------------------------------------
  |  Open:  https://www.google.com/device
  |  Code:  DPB-HWF-LCWF
  |  Waiting for activation... (Ctrl-C to cancel)
  +------------------------------------------------------------

Traceback (most recent call last):
  File "/home/mega/git/youthub/grid_demo.py", line 1262, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/mega/git/youthub/grid_demo.py", line 892, in main
    initial_videos, initial_shelf_of = load_feed_combined()
                                       ^^^^^^^^^^^^^^^^^^^^
  File "/home/mega/git/youthub/grid_demo.py", line 260, in load_feed_combined
    with innertube.InnerTube() as it:
         ^^^^^^^^^^^^^^^^^^^^^
  File "/home/mega/git/youthub/youthub/innertube.py", line 70, in __init__
    self._tokens = tokens or auth.get_tokens()
                             ^^^^^^^^^^^^^^^^^
  File "/home/mega/git/youthub/youthub/auth.py", line 168, in get_tokens
    return login_interactive()
           ^^^^^^^^^^^^^^^^^^^
  File "/home/mega/git/youthub/youthub/auth.py", line 133, in login_interactive
    td = _poll_token(client, device_code, interval)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/mega/git/youthub/youthub/auth.py", line 110, in _poll_token
    raise RuntimeError(f"OAuth aborted by Google: {err}")
RuntimeError: OAuth aborted by Google: expired_token
(youthub) mega@vivobook ~/git/youthub (main) [1]
🦀🐟 

Мои предположения почему могло не сработать:

  1. судя по ошибкам, гугл предположительно пофиксил маскировку под TV (через тот же ИИ, например)
  2. В ридми, прописана жёсткая привязка к X11, который в данный момент лично я считаю уже полностью устаревшим. У меня негде тестить на X11 кроме виртуалки. На одном из моих ноутбуков Hyprland, на другом Gnome 50 из которого поддержку X11 тоже уже полностью удалили. Раньше я был фанатом openbox, но он давно не обновлялся и некоторый современный софт с ним уже несовместим, в отличие например от Wayland-base аналога labwc.
  3. это могло произойти из-за адаптацию сбоки под мою современную систему
  4. может быть я был уже залогиненным в используемом браузерном движке и это помешало запуску?

Вопрос

Какие именно данные я могу чекнуть/предоставить чтобы выявить в чём именно причина ошибка? Если куда то пишутся логи, то куда именно?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions