
    8f7                         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 d dl	Z	 G d d      Z
deeef   fdZed	k(  r8 e       Zej!                         D ]  \  ZZ ed
j)                  ee              yy)    N)Sequence)Path)parsec                   H    e Zd Z	 g fdee   fdZdefdZd	dZd	dZ	d	dZ
y)
OriginWatcherexecutablesc                 :    t        t        d |            | _        y )Nc                 "    | j                         S )N)lower)ss    lC:\Program Files (x86)/Steam/steamapps/common/Skyrim Special Edition/MO2/plugins\basic_games\origin_utils.py<lambda>z(OriginWatcher.__init__.<locals>.<lambda>   s    aggi     )listmapr   )selfr   s     r   __init__zOriginWatcher.__init__   s    $7 EFr   returnc                     | j                          d| _        t        j                  | j                        | _        | j
                  j                          y)NT)target)kill_originworker_alive	threadingThread_workerFuncworkerstartr   s    r   spawn_origin_watcherz"OriginWatcher.spawn_origin_watcher   sA     &&d.>.>?r   Nc                 H    d| _         | j                  j                  d       y )NFg      $@)r   r   joinr   s    r   stop_origin_watcherz!OriginWatcher.stop_origin_watcher!   s    !r   c                     	 t        j                         D ]4  }|j                         j                         dk(  s%|j	                          6 y )Nz
origin.exe)psutilprocess_iternamer   kill)r   procs     r   r   zOriginWatcher.kill_origin%   sA    	 '') 	Dyy{  "l2			r   c                 D   d}| j                   rd}t        j                         D ]0  }|j                         j	                         | j
                  v s.d} n |rd}n!|dz  }|dk  r| j                          d| _         t        j                  d       | j                   ry y )Ni,  FT      r   )	r   r$   r%   r&   r   r   r   timesleep)r   gameAliveCount	gameAliver(   s       r   r   zOriginWatcher._workerFunc-   s    I++- 99;$$&$*:*:: $I !"!#!Q&$$&(-D%JJqM r   )r   N)__name__
__module____qualname__r   strr   boolr   r"   r   r    r   r   r   r      s9     57 GHSM Gd r   r   r   c                     	 i } t         j                  j                  d      }t        |      j	                  dd      }|j                  d      D ]  }d|j                  j                         v r t        |d      5 }|j                         }d d d        t        j                        }t        j                  |j                        }d|vr~d|vr|d   D ]  }|d   D ]  }	t        |	      | |<      | S # 1 sw Y   mxY w)	Nz%PROGRAMDATA%OriginLocalContentz	**/*.mfstz@steamriddipinstallpath)ospath
expandvarsr   joinpathglobr&   r   openreadr   urlparseparse_qsquery)
gamesprogram_data_pathlocal_content_pathmanifestfmanifest_queryurlrE   id_path_s
             r   
find_gamesrO   A   s     E**?;/099(NS&++K8 )x}}**,, (C  	&AVVXN	&nn^,syy)u5(; 	)C/0 )!%[c
)	)#)* L	& 	&s   ;C88D	__main__zFound game with id {} at {}.)r<   r   r,   collections.abcr   pathlibr   urllibr   r$   r   dictr3   rO   r0   rF   itemskvprintformatr5   r   r   <module>rZ      s   
 
   $   / /d!DdO !H zLE ;1,33Aq9:; r   