
    ccj{	                         S r SSKrSSKJr  SSKJrJr  SSKJrJr  SSK	J
r
  SSKrSSKrSrSrS	\4S
 jrS\S	\4S jrS\S\S	\\   4S jr  SS	\\\   \4   4S jjrg)uN  Reddit top.rss?t=week → record-форма. Анонимный JSON заблокирован (403),
RSS-эндпоинт отдаёт топ недели. Score в RSS не приходит → metric=None,
ранг = порядок ленты (она уже отсортирована по топу), кап на сабреддит.    N)timegm)datetimetimezone)ListTuple)urlparsez#https://www.reddit.com/r/{}/top.rssg      @returnc                     S HW  nU R                  U5      nU(       d  M  [        R                  " [        U5      [        R
                  S9R                  5       s  $    g)N)published_parsedupdated_parsed)tz )getr   fromtimestampr   r   utc	isoformat)ekeyts      */home/rasp/mars-trendwatch/fetch_reddit.py_entry_dater      sG    5EE#J1))&)EOOQQ 6     subc                 Z   UR                  S5      =(       d    UR                  S5      =(       d    SnSU;   a  UR                  S5      S   nO?[        U5      R                  R	                  S5      R                  S5      S   =(       d    UnSR                  U R                  5       U5      $ )Nidlinkr   t3_/zreddit:{}:{})r   splitr   pathrstripformatlower)r   r   rawtids       r   	_entry_idr'      s    
%%+
,v
,"C|iir"sm  '',2237;Bs  c22r   capc                     / nUR                   S U  H\  nUR                  [        X5      U R                  5       SUR	                  SS5      [        U5      S UR	                  SS5      S.5        M^     U$ )Nreddittitler   r   )post_idaccountplatformcaption	posted_atmetric	permalink)entriesappendr'   r$   r   r   )r   parsedr(   outr   s        r   
parse_feedr7   "   sn    
C^^DS!

 (yy{ uuWb)$Qvr*
 	 " Jr   c                    U=(       d    [         nSU0n/ 0 p[        U 5       H  u  pU	S:  a  [        R                  " [        5         UR                  [        R                  U
5      USU0SS9nUR                  5         U[        U
[        R                  " UR                  5      U5      -  nM     Xx4$ ! [         R                   a&  n[        U5      XR                  5       '    SnAM  SnAff = f)ui   Топ-`cap` постов недели на сабреддит через top.rss. → (records, errors).z
User-Agentr   r      )headersparamstimeoutN)requests	enumeratetimesleepREQUEST_DELAYr   TOP_RSS_URLr#   raise_for_statusr7   
feedparserparsecontentRequestExceptionstrr$   )
subredditsr(   
user_agentwindowsessionhttpr:   recordserrorsir   respexcs                r   fetch_redditrS   1   s     hDZ(G"VJ'q5JJ}%	+88K..s3W$'="  >D!!#z#z'7'7'EsKKG ( ? (( 	+"%c(F99;	+s   A%B44C.C))C.)weekN)__doc__r?   calendarr   r   r   typingr   r   urllib.parser   rD   r=   rB   rA   rH   r   r'   intdictr7   rS    r   r   <module>r\      s   B   '  !  3c 33 3c 3C c d4j  6<"'T
D(8"9r   