
    i                        U d Z ddlmZ ddlmZ ddlmZ  eh d      Zde	d<   dd	d
ddddddddddddddddddddddddd d!d"d#d$d%d&d'dd(Z
d)e	d*<   d*d)iZ	d+e	d,<   d/d-Zd0d.Zy&)1u   BGM 라이브러리 및 라이선스 검증 모듈.

IDS Phase 5 — 모션 카드뉴스 (HTML→MP4)
- CC0 / YouTube Audio Library Free / Public Domain 라이선스만 허용
- 파일 존재 여부 확인 (다운로드 미지원)
    )annotations)Path)Optional>   CC0Public DomainYouTube Audio Library Freezfrozenset[str]_ALLOWED_LICENSESzChill Lo-Fi Beat 01zYouTube Audio Libraryr   z?https://placeholder.youtube-audio-library.example/chill_lofi_01zchill_lofi_01.mp3x   U   )lofichillambient)namesourcelicenseurlfilenameduration_secbpmtagszGentle Piano CC0zccmixter.orgr   z5https://placeholder.ccmixter.example/gentle_piano_cc0zgentle_piano_cc0.mp3   H   )pianocalminstrumentalzUpbeat Pop CC0zfreemusicarchive.orgz;https://placeholder.freemusicarchive.example/upbeat_pop_cc0zupbeat_pop_cc0.mp3      )popupbeat	energeticzNature Ambiencezfreesound.orgr   z8https://placeholder.freesound.example/nature_ambience_pdznature_ambience_pd.mp3i,  N)naturer   
background)chill_lofi_01gentle_piano_cc0upbeat_pop_cc0nature_ambience_pdzdict[str, dict]BGM_LIBRARYzdict[str, str]__annotations__c           	         | t         vr,t        d|  dt        t         j                                      t         |    }|j	                  dd      }|t
        vrt        d| dt        t
                     y)u#  트랙 라이선스가 허용된 라이선스인지 검증합니다.

    Args:
        track_id: BGM_LIBRARY에 등록된 트랙 ID

    Returns:
        True (라이선스가 허용됨)

    Raises:
        ValueError: 트랙 ID가 없거나 라이선스가 허용되지 않는 경우
    u   알 수 없는 트랙 ID: 'u   '. 사용 가능한 트랙: r    u#   허용되지 않은 라이선스: 'u   '. 허용 라이선스: T)r'   
ValueErrorsortedkeysgetr	   )track_idtracklicense_vals      4/home/jay/workspace/skills/motion-cardnews-ko/bgm.pyvalidate_licenser3   @   s     {")( 4((.{/?/?/A(B'CE
 	

 !E))Ir*K++1+ ?$$*+<$=#>@
 	
     c                    t        |        t        |    }|j                  dd      }|syt        |      |z  }|j	                         r|S y)uc  트랙 ID에 해당하는 BGM 파일 경로를 반환합니다.

    Args:
        track_id: BGM_LIBRARY에 등록된 트랙 ID
        library_dir: BGM 파일이 저장된 디렉토리

    Returns:
        파일이 존재하면 Path, 없으면 None

    Raises:
        ValueError: 트랙 ID가 없거나 라이선스가 허용되지 않는 경우
    r   r*   N)r3   r'   r.   r   exists)r/   library_dirr0   r   	candidates        r2   get_bgm_pathr9   \   sP     X!EyyR(H[!H,Ir4   )r/   strreturnbool)r/   r:   r7   r   r;   zOptional[Path])__doc__
__future__r   pathlibr   typingr   	frozensetr	   r(   r'   r3   r9    r4   r2   <module>rC      s    #  $- / % >  &)/P',	 # F*1	 !(L(.	 "!"I,3	?) _ )V $12C"D D8r4   