
    lj                     <    d dl mZ d dlmZ d dlmZ  G d d      Zy)    )	urlencode)settings)NotFoundc                   (    e Zd ZdZd Zd Zd Zd Zy)AdvancedSettingsMixinz9 Mixin for Plex objects that can have advanced settings. c                 d    | j                    d}| j                  |t        j                  d      S )zC Returns a list of :class:`~plexapi.settings.Preferences` objects. z?includePreferences=1Preferences)clsrtag)key
fetchItemsr   r	   )selfr   s     M/DATA/.local/lib/python3.12/site-packages/plexapi/mixins/advanced_settings.pypreferencesz!AdvancedSettingsMixin.preferences
   s.    
/0s(<(<=QQ    c           	          | j                         }	 t        fd|D              S # t        $ r? |D cg c]  }|j                   nc c}w }}t	        d d| j
                   d|       dw xY w)z Returns a :class:`~plexapi.settings.Preferences` object for the specified pref.

            Parameters:
                pref (str): The id of the preference to return.
        c              3   B   K   | ]  }|j                   k(  s|  y w)N)id).0pprefs     r   	<genexpr>z3AdvancedSettingsMixin.preference.<locals>.<genexpr>   s     95aADDDL5s   zUnknown preference "z" for z. Available preferences: N)r   nextStopIterationr   r   TYPE)r   r   prefsr   availablePrefss    `   r   
preferencez AdvancedSettingsMixin.preference   s       "	Q95999 	Q,12EqaddE2N21$vdii[ I55C4DF GLPQ	Qs   ' A/A(A/c           
      z   i }| j                    d}| j                         D ci c]  }|j                  s|j                  | }}|j	                         D ]_  \  }}	 ||   }|j                  }|j                  ||j                  t        |                  r|||<   Ht        | dt        |              |t        |      z   }	| j                  j                  |	| j                  j                  j                         | S c c}w # t
        $ r( t        | dt        |j                                      w xY w)z) Edit a Plex object's advanced settings. /prefs?z not found in method)r   r   
enumValuesr   itemsKeyErrorr   listkeysgetstrr   _serverquery_sessionput)
r   kwargsdatar   r   r   	settingIDvaluer#   urls
             r   editAdvancedz"AdvancedSettingsMixin.editAdvanced   s.   
'"151A1A1CW1Cttww}1CW &IuS"9- J~~eZ^^CJ%?@"'Y%tJ7G6HIJJ !/ IdO#3t||'<'<'@'@A X  S%tK<L<L<N7O6PQRRSs   DDD		1D:c                    i }| j                    d}| j                         D ]  }|j                  ||j                  <    |t	        |      z   }| j
                  j                  || j
                  j                  j                         | S )z; Edit all of a Plex object's advanced settings to default. r    r!   )	r   r   defaultr   r   r*   r+   r,   r-   )r   r/   r   r   r2   s        r   defaultAdvancedz%AdvancedSettingsMixin.defaultAdvanced1   sx    
'"**,J","4"4D -IdO#3t||'<'<'@'@Ar   N)__name__
__module____qualname____doc__r   r   r3   r6    r   r   r   r      s    CR
Q(r   r   N)urllib.parser   plexapir   plexapi.exceptionsr   r   r;   r   r   <module>r?      s    "  '2 2r   