
    EQdj                    f    S r SSKJr  SSKJrJr  SSKrSrSrSS jrSS jr	SS	 jr
SS
 jrSS jrg)u|   Оркестратор прогона: тянет посты и метрики по всем платформам в SQLite.    )annotations)datetime	timedeltaNim     c                N    [         R                  " U R                  SS5      5      $ )NZz+00:00)r   fromisoformatreplace)moments    /home/rasp/meta-puller/pull.py_parser      s    !!&..h"?@@    c                J    [        U 5      [        US9-
  R                  S5      $ )uh   Граница окна в том же виде, в каком Meta отдаёт timestamp постов.)daysz%Y-%m-%dT%H:%M:%S%z)r   r   strftime)r   r   s     r   _shiftr      s"    6NYD11;;<QRRr   c                   [         R                  " U 5       nUR                  SR                  [         R                  U   5      5      R                  5       nS S S 5        [        UWc
  [        5      $ [        5      $ ! , (       d  f       N+= f)NzSELECT 1 FROM {} LIMIT 1)	dbconnectexecuteformatTABLESfetchoner   BACKFILL_DAYSINCREMENT_DAYS)db_pathplatformnowconnknowns        r   window_startr!      si    	G	&--bii.ABDDLHJ 	 
 #}JJ>JJ 
	s   A A<<
B
c           
        [        XU5      n[        R                  " XU5       Vs1 s H  oUS   iM	     nn[        5       SpUR	                  U5       Hs  n	[        R
                  " XU	5      (       a  US-  nUR                  U	S   5        UR                  U	S   U	R                  S5      S9n
[        R                  " XU	S   XS9  Mu     Xg-
  nU H  n[        R                  " XU5        M     UR                  5       n[        R                  " XUSS UR                  S	5      UR                  S
5      UR                  S5      S9  [        U5      U[        U5      UR                  S	5      S.$ s  snf )ub   Прогон одной платформы. Возвращает счётчики для лога.post_idr      media_product_type)product_type)r   N
   	followersmedia_countusername)dater(   r)   r*   )seennewdeletedr(   )r!   r   posts_in_windowsetpostsupsert_postaddinsightsgetupdate_statsmark_deletedaccountsave_account_snapshotlen)r   r   clientr   sincer	known_idsr,   	new_countpostmetricsgoner#   r8   s                 r   run_platformrC      sM   C0E')'9'9'U'ST'S!9'SITeQ)U#>>'T22NIi!//O$((3G*H " J
4	?GM $ D
73  nnGCR++k*M8RZ(*
 IiCI [13 31 Us   E-c                   0 0 pCUR                  5        H  u  pV [        XXb5      X5'   M     U(       d  SnO[	        U5      [	        U5      :X  a  SnOSn[
        R                  " X[        R                  " 5       R                  S5      USR                  S UR                  5        5       5      S9  X4$ ! [         a  n[        U5      XE'    SnAM  SnAff = f)	um   Прогоняет все платформы. Падение одной не мешает остальным.Nokfailedpartialz%Y-%m-%dT%H:%M:%SZz; c              3  H   #    U  H  u  pS R                  X5      v   M     g7f)z{}: {}N)r   ).0pes      r   	<genexpr>run.<locals>.<genexpr>R   s     Q.$! 5 5.s    ")
started_atfinished_atstatuserror_summary)itemsrC   	Exceptionstrr:   r   
record_runr   r   r   join)	r   clientsr   statserrorsr   r;   excrP   s	            r   runr[   >   s    6#MMO	(*7fJEO , 	VG	$MMLLN++,@AiiQ&,,.QQ	S
 >  	("3xF	(s   B33
C=CC)r   rT   returnr   )r   rT   r   intr\   rT   )r   rT   r   rT   r\   rT   )r   rT   r   rT   r\   dict)rW   r^   r   rT   )__doc__
__future__r   r   r   r   r   r   r   r   r!   rC   r[    r   r   <module>rb      s<    C " ( 	
 AS
K3>r   