Ë
    Î£jQ  ã                   óv   — d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ  ej                  «       Z
 G d„ d«      Zy)é    N)Úconfig)Úaddon_metadata)Údeletec                   ój   — e Zd Zd„ Zdedefd„Zdeeee   f   fd„Zde	fd„Z
dee   dee	ef   fd„Zy	)
ÚAddonServicec                 ó   — i | _         y ©N)Úaddons_cache)Úselfs    úGC:\Users\pivot\Documents\cueki\casual-preloader\core\services\addons.pyÚ__init__zAddonService.__init__   s
   € ØˆÕó    Ú
addon_nameÚreturnc                 óH  — t         j                  |z  }	 |dz  }|j                  «       r3t        |d«      5 }	 t	        j
                  |«      }||d<   |cd d d «       S |dddg|dœS # t        j                  $ r Y nw xY w	 d d d «       Œ,# 1 sw Y   Œ5xY w# t        $ r Y ŒCw xY w)Númod.jsonÚrÚ	file_pathÚUnknownÚ zCustom content)r   ÚtypeÚdescriptionÚcontentsr   )r   Ú
addons_dirÚexistsÚopenÚjsonÚloadÚJSONDecodeErrorÚFileNotFoundError)r   r   Ú
addon_pathÚmod_json_pathÚ
addon_jsonÚ
addon_infos         r   Úload_addon_infozAddonService.load_addon_info   s»   € ä×&Ñ&¨Ñ3ˆ
ð	Ø&¨Ñ3ˆMØ×#Ñ#Ô%Ü˜-¨Ô-°ðÜ%)§Y¡Y¨zÓ%:˜
Ø2<˜
 ;Ñ/Ø)÷	 .Ñ-ð %ØØØ)Ð*Ø#ñ
ð 	
øô  ×/Ñ/ò ÙðúØ÷ .×-Ñ-ûô !ò 	Ùð	úsK   •!B ¶B	¸A&Á	B Á&A<Á9B	Á;A<Á<B	Â 	B Â	BÂB Â	B!Â B!c                 ó  — t         j                  }t        j                  t        «      }i | _        |j                  dd¬«       |j                  «       D ]t  }|j                  «       sŒ| j                  |j                  «      }|j                  dd«      j                  «       }||   j                  |«       || j
                  |d   <   Œv t        |«      D �ci c]  }|||   “Œ
 }}|D ]  }||   j                  d„ ¬«       Œ |S c c}w )NT©ÚparentsÚexist_okr   Úunknownr   c                 ó(   — | d   j                  «       S )Nr   )Úlower)Úxs    r   Ú<lambda>z1AddonService.get_addons_grouped.<locals>.<lambda><   s   € °1°\±?×3HÑ3HÔ3Jr   )Úkey)r   r   ÚcollectionsÚdefaultdictÚlistr
   ÚmkdirÚiterdirÚis_dirr%   ÚnameÚgetr,   ÚappendÚsortedÚsort)r   r   Úaddon_groupsr!   r$   Ú
addon_typeÚgroups          r   Úget_addons_groupedzAddonService.get_addons_grouped(   s  € Ü×&Ñ&ˆ
Ü"×.Ñ.¬tÓ4ˆàˆÔà×Ñ °ÐÔ5Ø$×,Ñ,Ö.ˆJØ× Ñ Õ"Ø!×1Ñ1°*·/±/ÓB�
Ø'Ÿ^™^¨F°IÓ>×DÑDÓF�
Ø˜ZÑ(×/Ñ/°
Ô;à>H�×!Ñ! *¨\Ñ":Ò;ð /ô AGÀ|Ô@TÓUÑ@T°u˜˜|¨EÑ2Ñ2Ð@TˆÐUó "ˆEØ˜Ñ×$Ñ$Ñ)JÐ$ÕKð "ð Ðùò Vs   ÃDc                 óZ  — t         j                  }|j                  dd¬«       |j                  «       D �cg c]  }|j	                  «       sŒ|‘Œ }}d}d}|D �]  }|j
                  }t        d„ |j                  d«      D «       d¬«      }|dz  }|t        v rt        |   j                  d«      |k(  rŒ\	 g }	|j                  d«      D ]^  }
|
j                  «       sŒ|
j
                  d	k7  sŒ$|
j
                  d
k7  sŒ4t        |
j                  |«      «      }|	j                  |«       Œ` |dz  }|t        vr	i t        |<   t        |   j                  ||	t        |	«      dœ«       �Œ t        j&                  «        |dkD  S c c}w # t         $ r t"        j%                  d|› �«       Y �ŒQw xY w)NTr'   r   c              3   ór   K  — | ]/  }|j                  «       sŒ|j                  «       j                  –— Œ1 y ­wr	   )Úis_fileÚstatÚst_mtime)Ú.0Úfs     r   Ú	<genexpr>z3AddonService.scan_addon_contents.<locals>.<genexpr>K   s+   è ø€ Ð bÑ<R°qÐVW×V_ÑV_ÕVa §¡£×!2Õ!2Ñ<Rùs   ‚7˜7z**/*)Údefaulté   Úlast_modifiedr   zsound.cache)rI   ÚfilesÚ
file_countzError scanning )r   r   r3   r4   r5   r6   ÚmaxÚglobr   r7   rA   ÚstrÚrelative_tor8   ÚupdateÚlenÚ	ExceptionÚlogÚ	exceptionÚsave)r   r   ÚdÚaddonsÚ	processedÚnew_or_updatedÚ	addon_dirr   rI   Úaddon_filesr   Úrel_paths               r   Úscan_addon_contentsz AddonService.scan_addon_contents@   sž  € ä×&Ñ&ˆ
Ø×Ñ °ÐÔ5Ø'×/Ñ/Ô1Ó@Ñ1˜°Q·X±XµZ’!Ð1ˆÐ@Øˆ	ØˆäˆIØ"Ÿ™ˆJäÑ b¸I¿N¹NÈ6Ô<RÓ bÐlmÔnˆMØ˜‰NˆIð œnÑ,Ü" :Ñ.×2Ñ2°?ÓCÀ}ÒTØð>Ø �Ø!*§¡°Ö!7�IØ ×(Ñ(Õ*¨y¯~©~ÀÓ/KÐPY×P^ÑP^ÐboÓPoÜ#& y×'<Ñ'<¸YÓ'GÓ#H˜Ø#×*Ñ*¨8Õ4ð "8ð
  !Ñ#�à¤^Ñ3Ø13”N :Ñ.ä˜zÑ*×1Ñ1Ø%2Ø(Ü"% kÓ"2ñ3ö ð1  ôB 	×ÑÔØ Ñ!Ð!ùòM AøôD ò >Ü—‘ °
¨|Ð<×=ð>ús0   ¶F ÁF Â5&FÃFÃ,FÃ<A(FÆ!F*Æ)F*Úaddon_dir_namesc                 ór  — g }|D ]C  }t         j                  |z  }|j                  «       sŒ'|j                  «       sŒ8	 t	        |«       ŒE |rddj                  |«      fS |D ]  }|t        v sŒt        |= Œ t        j                  «        y# t
        $ r!}|j                  d|› d|›�«       Y d }~Œ¬d }~ww xY w)NzFailed to delete z: FÚ
)Tz"Selected addons have been deleted.)
r   r   r   r5   r   rR   r8   Újoinr   rU   )r   r^   ÚerrorsÚfolder_namer!   Úes         r   Údelete_addonszAddonService.delete_addonsl   s½   € ØˆÛ*ˆKÜ×*Ñ*¨[Ñ8ˆJØ× Ñ Õ" z×'8Ñ'8Õ':ðLÜ˜:Õ&ð	 +ñ Ø˜$Ÿ)™) FÓ+Ð+Ð+ó +ˆKØœnÒ,Ü" ;Ñ/ð +ô 	×ÑÔØ9øô !ò LØ—M‘MÐ$5°k°]À"ÀQÀEÐ"J×KÑKûðLús   ¾BÂ	B6ÂB1Â1B6N)Ú__name__Ú
__module__Ú__qualname__r   rN   Údictr%   r2   r>   Úboolr]   Útuplere   © r   r   r   r      s`   „ òð
¨#ð 
°$ó 
ð0 D¨¨d°4©j¨Ñ$9ó ð0*" Tó *"ðX:¨T°#©Yð :¸5ÀÀsÀÑ;Kô :r   r   )r0   r   ÚloggingÚcore.configr   Úcore.settingsr   Úcore.util.filer   Ú	getLoggerrS   r   rl   r   r   Ú<module>rr      s3   ðÛ Û Û å Ý (Ý !à€g×ÑÓ€÷s:ò s:r   