o
    2gz                     @   s   d dl Z d dlmZ d dlZd dlmZmZmZmZm	Z	m
Z
mZmZmZ ddlmZ ddlmZmZ eeZG dd deZd	ed
efddZdd Zd
ee fddZG dd dZd
efddZdddZdd Z edkrte  dS dS )    N)
NamedTuple)	CommentMessageMultiredditPollData
PollOptionRedditor
Submission	SubredditUserSubreddit   )Json)make_loggersetup_loggerc                   @   sv   e Zd ZU eed< ee ed< ee ed< ee ed< ee ed< ee ed< ee ed< ee ed< ee ed	< d
S )
RedditDataprofilemultireddits
subredditssavedupvoted	downvotedcommentssubmissionsinboxN)__name__
__module____qualname__r   __annotations__list r   r   F/home/garg/my-data/venv/lib/python3.10/site-packages/rexport/export.pyr      s   
 r   keyreturnc                 C   s*   t |rdS | drdS | dv rdS dS )NT__>   preview	body_htmlselftext_htmldescription_htmlF)callable
startswith)r!   valuer   r   r    ignore_item%   s   
r+   c                 C   s   t | tttttd fr| S t | trdd | D S t | tr(dd |  D S t | t	t
tttttttf	r<tt| S t | tjrDd S tdt|  )Nc                 S   s   g | ]}t |qS r   )jsonify).0xr   r   r    
<listcomp>=   s    zjsonify.<locals>.<listcomp>c                 S   s$   i | ]\}}t ||s|t|qS r   )r+   r,   )r-   kvr   r   r    
<dictcomp>@   s   $ zjsonify.<locals>.<dictcomp>zUnexpected type: )
isinstancestrfloatintbooltyper   dictitemsr   r
   r   r	   r   r   r   r   r   r,   varsprawRedditRuntimeError)dr   r   r    r,   8   s*   

r,   c                 K   s"   t d|  tt| di |S )Nzfetching %sr   )loggerinfor,   r   )from_kwargsr   r   r    _extractW   s   rD   c                   @   sL   e Zd ZdddZedd ZdefddZdefd	d
ZdefddZ	dS )Exporterr"   Nc                 O   s   t j|ddi|| _d S )N
user_agentrexport)r<   r=   api)selfargsrC   r   r   r    __init__]   s   zExporter.__init__c                 C   s   | j j S N)rH   usermerI   r   r   r    _me`   s   zExporter._mec                 C   s
   t | jS rL   )r,   rP   rO   r   r   r    extract_profiled   s   
zExporter.extract_profilec                 C   s   t |  t| jjjt| jjjd dt| jjd dt| jj	d dt| jj
d dt| jjjd dt| jjjd dt| jjjd dd	}| S )N)limit)	r   r   r   r   r   r   r   r   r   )r   rQ   rD   rH   rM   r   r   rP   r   r   r   r   newr   r   all_asdict)rI   rbr   r   r    export_jsong   s   zExporter.export_jsonc                 C   s   |   S rL   )rW   rO   r   r   r    exportw   s   zExporter.exportr"   N)
r   r   r   rK   propertyrP   r   rQ   rW   rX   r   r   r   r    rE   \   s    

rE   c                  K   s   t di |  S )Nr   )rE   rW   )paramsr   r   r    get_json|   s   r\   c                  C   sP   t ddd t } |  }|j}|j}tdi |}tj|ddd}|| d S )NprawcoreINFO)levelFr   )ensure_asciiindentr   )r   make_parser
parse_argsr[   dumperr\   jsondumps)parserrJ   r[   rd   jjsr   r   r    main   s   rj   c                  C   s.   ddl m} m} | d}||g ddd |S )Nr   )Parsersetup_parserzKExport your personal Reddit data: saves, upvotes, submissions etc. as JSON.)usernamepassword	client_idclient_secretzl
You can also import ~export.py~ as a module and call ~get_json~ function directly to get raw JSON.
        )rg   r[   extra_usage)exporthelpers.export_helperrk   rl   )rk   rl   rg   r   r   r    rb      s   rb   __main__rY   )!re   typingr   r<   praw.modelsr   r   r   r   r   r   r	   r
   r   rr   r   exporthelpers.logging_helperr   r   r   r@   r   r4   r7   r+   r,   r   r9   rD   rE   r\   rj   rb   r   r   r   r    <module>   s$    , 

