From 78554ea022caf871cbfaf8cab76c45884fd2c452 Mon Sep 17 00:00:00 2001 From: tigerenwork Date: Sun, 16 Aug 2026 19:22:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AA=92=E4=BD=93=E5=BA=93=E5=A4=9A?= =?UTF-8?q?=E6=A0=B9=E9=85=8D=E7=BD=AE=E7=94=9F=E6=95=88=E5=B9=B6=E5=A2=9E?= =?UTF-8?q?=E5=BC=BA=E6=89=AB=E6=8F=8F=E5=81=A5=E5=A3=AE=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DEPLOY.md | 4 ++-- app/main.py | 7 ++++++- docker-compose.yml | 22 +++++++++++----------- ui/src/app/sidebar.component.sass | 6 ++++-- 4 files changed, 23 insertions(+), 16 deletions(-) diff --git a/DEPLOY.md b/DEPLOY.md index fda5336..0272c70 100644 --- a/DEPLOY.md +++ b/DEPLOY.md @@ -47,8 +47,8 @@ guide to switching back to the official build once the upstream fix lands. ./build-ytdlp.sh docker buildx build --platform linux/amd64 \ - --build-arg VERSION=1.30 \ - -t 192.168.2.212:3000/tigeren/metube:1.30 \ + --build-arg VERSION=1.31 \ + -t 192.168.2.212:3000/tigeren/metube:1.31 \ --push . ``` diff --git a/app/main.py b/app/main.py index 8485a25..e6b8fd7 100644 --- a/app/main.py +++ b/app/main.py @@ -95,6 +95,8 @@ class Config: self.LIBRARY_ROOTS = normalize_library_roots(roots) if self.LIBRARY_DIRS and not self.LIBRARY_ROOTS: log.warning('Library feature disabled: none of LIBRARY_DIRS exists') + if self.LIBRARY_ROOTS: + log.info('Library roots: ' + ', '.join(f'{label or "(root)"} -> {path}' for label, path in self.LIBRARY_ROOTS)) if not self.URL_PREFIX.endswith('/'): self.URL_PREFIX += '/' @@ -402,7 +404,10 @@ def _scan_library_folders(roots): exclude = re.compile(config.CUSTOM_DIRS_EXCLUDE_REGEX) if config.CUSTOM_DIRS_EXCLUDE_REGEX else None folders = [] for label, root in roots: - for dirpath, dirnames, filenames in os.walk(root): + def _on_walk_error(exc): + log.warning(f'Library scan error under "{root}": {exc!r}') + + for dirpath, dirnames, filenames in os.walk(root, onerror=_on_walk_error): rel = os.path.relpath(dirpath, root) dirnames[:] = [d for d in dirnames if not (exclude and exclude.search(os.path.normpath(os.path.join(rel, d))))] diff --git a/docker-compose.yml b/docker-compose.yml index 5a045a8..71640f6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,14 +11,14 @@ services: volumes: - ./downloads:/downloads - ./metube-config:/config - # Media library for the organize/browse feature (change the host path to your real library) - - ./library:/library + # Media library for the organize/browse feature (change the host path to your real library) + - ./library:/library # Multiple library mounts share one Library view; each mount becomes a # top-level collapsible group. Uncomment to use instead of ./library: - # - /mnt/media-a:/media/media-a - # - /mnt/media-b:/media/media-b - # Optional: mount cookies file for authenticated downloads - # - ./cookies:/cookies:ro + - ./library/media-a:/media/media-a + - ./library/media-b:/media/media-b + # Optional: mount cookies file for authenticated downloads + # - ./cookies:/cookies:ro environment: # Basic configuration - UID=0 @@ -29,10 +29,10 @@ services: - DOWNLOAD_DIR=/downloads - STATE_DIR=/config - TEMP_DIR=/downloads - # Media library (organize/browse feature); leave empty to disable - - LIBRARY_DIR=/library - # Multi-root alternative (overrides LIBRARY_DIR, comma-separated): - # - LIBRARY_DIRS=/media/media-a,/media/media-b + # Media library (organize/browse feature); leave empty to disable + - LIBRARY_DIR=/library + # Multi-root alternative (overrides LIBRARY_DIR, comma-separated): + - LIBRARY_DIRS=/media/media-a,/media/media-b # Download behavior - DOWNLOAD_MODE=limited @@ -117,4 +117,4 @@ services: # metube-downloads: # driver: local # metube-cookies: -# driver: local +# driver: local diff --git a/ui/src/app/sidebar.component.sass b/ui/src/app/sidebar.component.sass index 02d080f..d8c53e8 100644 --- a/ui/src/app/sidebar.component.sass +++ b/ui/src/app/sidebar.component.sass @@ -177,12 +177,14 @@ background: var(--bg) color: var(--fg) - svg + fa-icon + display: inline-block font-size: 11px + line-height: 1 transition: transform 0.15s ease transform: rotate(90deg) - &.collapsed svg + &.collapsed fa-icon transform: none .lib-group-item