Files
homelab-docs/homelab/scripts/README-reorganize-games-common.md
2026-02-23 16:47:17 +03:00

3.1 KiB
Raw Blame History

Реорганизация common/ (HDD 4 TB)

Скрипт приводит папки игр в каталоге common/ к виду: GameName/GameName/ (файлы внутри) и кладёт appmanifest_<AppID>.acf в корень папки игры. AppId берётся из steam_library_with_sizes.json по имени папки (сопоставление по нормализованному имени, не 100% точное).

Что нужно

  • В CT 101 должны быть: reorganize-games-common.sh, resolve_steam_appid.py, steam_library_with_sizes.json (например в /opt/scripts/).
  • Корневая директория: /mnt/nextcloud-extra/common/ (или путь 1-м аргументом).

Подготовка (один раз)

С хоста Proxmox (из репозитория plantUML):

# Создать каталог в контейнере и залить файлы
pct exec 101 -- mkdir -p /opt/scripts
pct push 101 homelab/scripts/reorganize-games-common.sh /opt/scripts/
pct push 101 homelab/scripts/resolve_steam_appid.py /opt/scripts/
pct push 101 homelab/scripts/steam_library_with_sizes.json /opt/scripts/

Dry-run (ничего не меняет)

Показывает, что будет сделано, и в конце выводит папки без совпадений (по ним appId не найден в JSON — их можно проставить вручную и перезапустить):

ssh root@192.168.1.150 'pct exec 101 -- bash /opt/scripts/reorganize-games-common.sh /mnt/nextcloud-extra/common 1 /opt/scripts/resolve_steam_appid.py /opt/scripts/steam_library_with_sizes.json'

Реальное выполнение

Второй аргумент 0:

ssh root@192.168.1.150 'pct exec 101 -- bash /opt/scripts/reorganize-games-common.sh /mnt/nextcloud-extra/common 0 /opt/scripts/resolve_steam_appid.py /opt/scripts/steam_library_with_sizes.json'

Папки без совпадений

Если в конце dry-run в блоке «Папки, для которых не найден appId» что-то есть — имена папок не совпали ни с одной записью в steam_library_with_sizes.json. Варианты:

  1. Переименовать папку в common/ так, чтобы оно было ближе к названию в JSON, и снова запустить dry-run.
  2. Добавить вручную маппинг: можно расширить resolve_steam_appid.py (словарь папка → appid) или положить рядом с папкой файл с appid и доработать скрипт — при необходимости можно добавить такой режим.

Манифесты

Скрипт ищет appmanifest_<AppID>.acf в корне common/ или на уровень выше (steamapps/). Если манифеста нет, игра попадёт в блок «Нет файла appmanifest»; манифест нужно будет добавить вручную (скачать или создать).