client.cpython-312.pyc
1 � 2 ��h� � �* � d dl mZ d dlZd dlmc mZ d dlmZm Z m 3 Z 4 mZmZm Z mZmZ d dlmZ d dlmZ d dlmZ ddlmZ dd lmZ dd 5 lmZ ddlmZ dd �Zddd�Zddd�Z dd�Z e d dd�� Z!y)� )�annotationsN)�Union�List�Optional�Set�Callable� Awaitable�Any�Tuple)�datetime)� 6 quote_plus)� monotonic� )�AsyncHttpClient)� read_metadata)� dual_mode� )� 7 Rule34Postc � � t j | � }|j d� D �cg c] }t di |j 8 ���� c}S # t $ r g cY S w xY wc c}w )zn 9 Parse XML API response into a list of Rule34Post objects. 10 Returns an empty list on parse errors. 11 �post� )�ET� 12 fromstring� Exception�findallr �attrib)�xml_text�root�els �9/root/projects/PAPI/Python_Tests/PornAPI/Rule34/client.py�_parse_postsr! sU � � 13 ��}�}�X�&�� /3�l�l�6�.B�C��J�#����#�C�C�� � �� ���Cs �A �A� A�Ac � �� K � d}t |� D ] } | � � d{ ��� c S |�7 � # t $ r?}|}|dz |k( rY d}~ |�t j |d|z z � � d{ ���7 Y d}~�]d}~ww xY w�w)z< 14 Retry an async operation with exponential backoff. 15 Nr r )�ranger �asyncio�sleep)�coro_factory�retries� 16 base_delay�exc�i�es r �_retryr, s� � �� � �C� �7�^� 7�� 7�%��'�'�7� �I� (��� 7��C��1�u���� 17 �I� �-�-� 18 �a�1�f� 5�6�6�6�� 7�sM �A5� 19 *�(�*�A5�*� A2� 20 A-�A5�A-�"A%�#A-�(A5�-A2�2A5c � �L ����� � 21 K � t j |� � 22 d�d�d����� 23 fd�� |rt dt | � � d|� d�� d�� t � }t j 24 � fd�| D � � � d{ ��� t � |z 25 }|rt d �� d 26 �� d|d�d �� ��fS 7 �-�w)z� 27 Fetch and fill media metadata for a list of posts with bounded concurrency and byte budget. 28 Returns a tuple of (success_count, fail_count). 29 r c � �F �� K � �4 �d { ��� t ��� fd�� � d { ��� }|s�dz � d d d � �d { ��� y |j d� � _ |j d� � _ |j d� � _ |j d� � _ |j d� � _ |j d� � _ |j d i � � _ �dz �d d d � �d { ��� y 7 ��7 ��# t $ r d }Y ��w xY w7 ��7 �# 1 �d { ���7 sw Y y xY w�w) 30 Nc �4 �� t � �j ��� S )N)� max_bytes)r �file_url)�httpr0 �ps ���r �<lambda>z+_enrich_meta.<locals>.one.<locals>.<lambda>6 s �� �M�$�� 31 � 32 �V_�,`� � r �duration�bitrate�sample_rate�channels�bits_per_sample�codec�tags) 33 r, r �getr6 r7 r8 r9 r: r; � meta_tags)r3 �meta�failr2 r0 �ok�sems ` �����r �onez_enrich_meta.<locals>.one2 s �� �� �� � � �#�$`�a�a�� ��� ��� � � � ���*�-�A�J�����+�A�I� �H�H�]�3�A�M����*�-�A�J� $���):� ;�A���h�h�w�'�A�G��(�(�6�2�.�A�K��!�G�B� � � ��a��� ��� �� �� �� � � �s� �D!�C3�D!�D�C7�C5�C7�D�D!�D�D!�B D�"D!�-D 34 �.D!�5C7�7D�D�D�D�D!� 35 D!�D�D�D�D!z[DEBUG] meta.start total=z conc=z budget=�Bc 3 �. �K � | ] } �|� �� � y �w�Nr )�.0r3 rC s �r � <genexpr>z_enrich_meta.<locals>.<genexpr>G s �� �� �1�a�3�q�6�1�s �Nz[DEBUG] meta.done ok=� fail=� took=�.2f�s)r3 r )r$ � Semaphore�print�lenr �gather)�postsr2 �max_concurrencyr0 �debug�t0�dtr@ rA rC rB s ` ` @@@@r �_enrich_metarV * s� �� �� � 36 � 37 � 38 �O� 39 ,�C� 40 �B��D�� �$ � �)�#�e�*��V�O�;L�H�U^�T_�_`�a�b� ��B� 41 �.�.�1�5�1� 42 2�2�2� ��r� �B�� �%�b�T���v�V�B�s�8�1�E�F� �t�8�O� 3�s �A,B$�4B"�5.B$c �J � | j |v ry|r*t | j t � r| j |k ry|r*t | j t � r| j |kD ry|�| j �| j |k ry|�| j �| j |kD ryy)z2 43 Validate a post against filtering rules. 44 FT)�id� 45 isinstance� 46 created_atr r6 )r �blocked�min_date�max_date�min_duration�max_durations r �_validr` N s� � � �w�w�'����J�t����9�d�o�o�PX�>X���J�t����9�d�o�o�PX�>X����D�M�M�$=�$�-�-�R^�B^����D�M�M�$=�$�-�-�R^�B^��r5 c � �h �����K � t | t � rdj | � } t | j � � �t |xs g � }g } t � } 47 d�d}d�|duxs |du}t � 4 �d{ ��� �d���fd��t | � |k �r�t � } |rt d�� d|� �� t j ��fd �t |� D � � � d{ ��� }t d 48 � |D � � }g }d}|D ]I }|D ]B }|j | 49 v r|dz }�| 50 j |j � |j! |� �D �K |r/t � | z 51 }t d|� d t |� � d|� d|d�d� � |s|rt d� n�|r.t# |�dd|�� � d{ ��� \ }}|rt d|� d|� �� d}|D ]9 }t | � |k\ r n)t% ||||||� s�$| j! |� |dz }�; |rt d|� dt | � � d|� �� t | � |k r1�|z �t |� �k r|dkD rd}nt | � dk( r |dk rd}nnt | � |k r���ddd� �d{ ��� |rt dt | � � �� | d| S 7 ��7 ���7 ��7 �*# 1 �d{ ���7 sw Y �:xY w�w)a' 52 Search posts from rule34.xxx API with adaptive paging and optional metadata filtering. 53 If duration constraints are provided, metadata probing is performed with bounded concurrency and byte budget. 54 Set debug=True for verbose progress output with per-wave statistics and timings. 55 � �d � r Nc � �l ��K � d�� d�� d| � ��t ��fd�� � d { ��� }t |� S 7 ��w)Nz;https://rule34.xxx/index.php?page=dapi&s=post&q=index&tags=z&limit=z&pid=c �&