
    i              
           S SK r S SKJrJrJrJrJrJr  S SKJ	r	  S SK
JrJrJrJr  S SKJr  \(       a  S SKJr  SrSrS	rS
rSSS\\\4   S\\\4   S\\\4   4S jr " S S\5      rg)    N)TYPE_CHECKINGDictListMappingOptionalUnion)	ParamDict)
RSSArticleRSSFeed	RSSFolderRSSRule)APIGroup)ObjectMapper)RSSAPIuidurlarticlesmapperr   contextdatareturnc                    UR                  [        5      nUR                  [        5      n[        U[        5      (       ar  [        U[        5      (       a]  U R                  [        X!5      nUR                  [        5      n[        U[        5      (       a  U R                  [        Xa5      Ul        U$ 0 nUR                  5        H*  u  p[        U	[        5      (       d   e[        XU	5      Xx'   M,     [        US9$ )N)_items)get_KEY_UID_KEY_URL
isinstancestrcreate_objectr   _KEY_ARTICLESlistcreate_listr
   r   itemsdict_process_itemr   )
r   r   r   r   r   feedr   r#   keyvalues
             ;/app/mltbenv/lib/python3.13/site-packages/aioqbt/api/rss.pyr%   r%      s     ((8
C
((8
C#s
3 4 4##GT;88M*h%%"..z8MDM**,JCeT****&v>EJ ' 
 	
    c            	       D   \ rS rSrSrS\SS4S jrS\S\SS4S jrS\SS4S	 jrS
\S\SS4S jr	SS\
\   S\4S jjrSS
\S\
\   SS4S jjrS
\SS4S jrS\S\\\\\\4   4   SS4S jrS\S\SS4S jrS\SS4S jrS\\\4   4S jrS\S\\\\   4   4S jrSrg)r   0   zc
RSS APIs

.. note::

    RSS API is experimental. Methods and results may change without notice.

pathr   Nc                 z   #    [        5       nUR                  SU5        U R                  SSUS9I Sh  vN   g N7f)z?
Add a new folder.

Raise :exc:`~.exc.ConflictError` if error.
r-   POSTzrss/addFolderr   Nr	   required_str_request_textselfr-   r   s      r)   
add_folderRSSAPI.add_folder:   sD      {&$'   ! 
 	
 	
   1;9;r   c                    #    [        5       nUR                  SU5        UR                  SU5        U R                  SSUS9I Sh  vN   g N7f)z=
Add a new feed.

Raise :exc:`~.exc.ConflictError` if error.
r   r-   r/   zrss/addFeedr0   Nr1   )r5   r   r-   r   s       r)   add_feedRSSAPI.add_feedI   sT      {%%&$'   ! 
 	
 	
   AAAAc                 z   #    [        5       nUR                  SU5        U R                  SSUS9I Sh  vN   g N7f)z@
Add a feed/folder.

Raise :exc:`~.exc.ConflictError` if error.
r-   r/   zrss/removeItemr0   Nr1   r4   s      r)   remove_itemRSSAPI.remove_itemY   sD      {&$'   ! 
 	
 	
r8   	item_path	dest_pathc                    #    [        5       nUR                  SU5        UR                  SU5        U R                  SSUS9I Sh  vN   g N7f)zA
Move a feed/folder.

Raise :exc:`~.exc.ConflictError` if error.
itemPathdestPathr/   zrss/moveItemr0   Nr1   )r5   r@   rA   r   s       r)   	move_itemRSSAPI.move_itemh   sT      {*i0*i0   ! 
 	
 	
r<   	with_datac                   #    [        5       nUR                  SU5        U R                  5       nUR                  SSUS9I Sh  vN nUR                  nUR
                  n[        XVU5      n[        U[        5      (       d   eU$  NA7f)z
Get the root folder, which consists of all feeds and sub-folders.

If ``with_data=True``, feed title and a list of articles will also be available.
See :class:`~.RSSFeed`.
withDataGETz	rss/itemsparamsN)	r	   optional_bool_clientrequest_json_mapper_contextr%   r   r   )r5   rG   rL   clientresultr   r   roots           r)   r#   RSSAPI.itemsx   s      Z3** + 
 
 //Vf5$	****
s   ABBAB
article_idc                    #    [        5       nUR                  SU5        UR                  SU5        U R                  SSUS9I Sh  vN   g N7f)z
Mark an article as read.
rC   	articleIdr/   zrss/markAsReadr0   N)r	   r2   optional_strr3   )r5   r@   rV   r   s       r)   mark_as_readRSSAPI.mark_as_read   sT     
 {*i0+z2   ! 
 	
 	
r<   c                 z   #    [        5       nUR                  SU5        U R                  SSUS9I Sh  vN   g N7f)z
Refresh a folder/feed.
rC   r/   zrss/refreshItemr0   Nr1   )r5   r@   r   s      r)   refresh_itemRSSAPI.refresh_item   sD     
 {*i0   ! 
 	
 	
r8   	rule_namerule_defc                   #    [        U[        5      (       d  [        R                  " [	        U5      SS9n[        5       nUR                  SU5        UR                  SU5        U R                  SSUS9I Sh  vN   g N7f)	z
Add/update a rule.
),:)
separatorsruleNameruleDefr/   zrss/setRuler0   N)r   r   jsondumpsr$   r	   r2   r3   )r5   r_   r`   r   s       r)   set_ruleRSSAPI.set_rule   su      (C((zz$x.ZHH{*i0)X.   ! 
 	
 	
s   A6B 8A>9B new_rule_namec                    #    [        5       nUR                  SU5        UR                  SU5        U R                  SSUS9I Sh  vN   g N7f)z
Rename a rule.

.. note::

    Before API 2.6.1, there was a bug that
    renaming rule would not change the result of :meth:`~.RSSAPI.rules`.

re   newRuleNamer/   zrss/renameRuler0   Nr1   )r5   r_   rk   r   s       r)   rename_ruleRSSAPI.rename_rule   sT      {*i0-7   ! 
 	
 	
r<   c                 z   #    [        5       nUR                  SU5        U R                  SSUS9I Sh  vN   g N7f)z
Remove a rule.
re   r/   zrss/removeRuler0   Nr1   )r5   r_   r   s      r)   remove_ruleRSSAPI.remove_rule   sD      {*i0   ! 
 	
 	
r8   c                 B   #    U R                  SS5      I Sh  vN $  N7f)z
Get all rules.
rJ   z	rss/rulesN)_request_json)r5   s    r)   rulesRSSAPI.rules   s*      ''
 
 	
 
s   c                 x   #    [        5       nUR                  SU5        U R                  SSUS9I Sh  vN $  N7f)zf
Get articles matched by a rule.

The result is a dict mapping feed names to lists of article titles.
re   rJ   zrss/matchingArticlesrK   N)r	   r2   rt   )r5   r_   rL   s      r)   matching_articlesRSSAPI.matching_articles   sI      J	2''" ( 
 
 	
 
s   1:8: )N)__name__
__module____qualname____firstlineno____doc__r   r6   r:   r>   rE   r   boolr   r#   rZ   r]   r   r   r   objectri   rn   rq   r   ru   r   rx   __static_attributes__rz   r*   r)   r   r   0   sB   
S 
T 

# 
S 
T 
 
c 
d 

 
 
 
 Xd^ y 2
C 
Xc] 
VZ 

C 
D 


 Wgc6k&::;
 
	
*
3 
s 
t 
(
3 
4 

T#w,/ 

 
c49n9M 
r*   r   )rg   typingr   r   r   r   r   r   aioqbt._paramdictr	   aioqbt.api.typesr
   r   r   r   aioqbt.clientr   aioqbt.mapperr   __all__r   r   r    r   r   r%   r   rz   r*   r)   <module>r      s     F F ' D D "*


S&[!
 sF{

 7I	
<K
X K
r*   