fix: each file in a dated session folder becomes its own song
Files directly in YYMMDD/ (e.g. 231015/take1.wav, 231015/take2.wav) all shared the same nc_folder_path, so take2 was silently merged as a new version of the take1 song instead of being a separate recording. Fix: when a file's parent == the session folder, append the file stem to make a unique virtual nc_folder_path per file. Files in subfolders (e.g. 231015/groove/take1.wav) are unaffected — they still group by folder. Applied in both nc_scan.py (manual scan) and internal.py (watcher uploads). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -13,7 +13,7 @@ from rehearsalhub.repositories.band import BandRepository
|
||||
from rehearsalhub.repositories.rehearsal_session import RehearsalSessionRepository
|
||||
from rehearsalhub.repositories.song import SongRepository
|
||||
from rehearsalhub.schemas.audio_version import AudioVersionCreate
|
||||
from rehearsalhub.services.session import parse_rehearsal_date
|
||||
from rehearsalhub.services.session import extract_session_folder, parse_rehearsal_date
|
||||
from rehearsalhub.services.song import SongService
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
@@ -72,6 +72,12 @@ async def nc_upload(
|
||||
nc_folder = parent.rstrip("/") + "/"
|
||||
title = Path(path).stem
|
||||
|
||||
# If the file sits directly inside a dated session folder, give it a unique
|
||||
# virtual folder so it becomes its own song (not merged with other takes).
|
||||
session_folder_path = extract_session_folder(path)
|
||||
if session_folder_path and session_folder_path.rstrip("/") == nc_folder.rstrip("/"):
|
||||
nc_folder = nc_folder + title + "/"
|
||||
|
||||
version_repo = AudioVersionRepository(session)
|
||||
if event.nc_file_etag and await version_repo.get_by_etag(event.nc_file_etag):
|
||||
return {"status": "skipped", "reason": "version already registered"}
|
||||
|
||||
Reference in New Issue
Block a user