
    \ie                         d dl Z d dlmZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d d	lmZmZ d d
lmZ dZdZdede
dedefdZy)    N)datetimetimezone)Bot)TelegramBadRequest)logger)AsyncSession)settings)upsert_movie)SyncLog
SyncStatus)parse_caption2   i botsessiontriggered_byreturnc           
      b  K   t        t        j                  |      }|j                  |       |j	                          d{    |j                  |       d{    d}d}d}d}	 t        j                  dt        j                   d|        d}d}	|t        k  r	 | j                  |t        j                  |       d{   }
d}		 | j                  ||
j                         d{    |
j                  xs |
j                   }|
j"                  r|
j"                  d	   j$                  nd}|rt'        ||      }|rt)        d$i d
|d|j*                  d|d|j,                  d|j.                  d|j0                  d|j2                  d|j4                  d|j6                  d|j8                  d|j:                  d|j<                  d|j>                  d|j@                  d|jB                  d|jD                  d|jF                  d| d{   \  }}|r|dz  }n|dz  }n|dz  }n|dz  }|dz  }tM        jN                  d       d{    |t        k  rt        jP                  |_)        ||_.        ||_/        ||_0        tc        jd                  tf        jh                        |_5        |j	                          d{    t        j                  d!| d"| d#|        |S 7 7 7 57 # t        $ r Y w xY w7 # tH        $ r4 |	dz  }	|	tJ        k\  r"t        j                  dtJ         d| d       Y Y w xY w7 # t        $ rS}t        jT                  d |        t        jV                  |_)        tY        |      |_-        tY        |      }Y d}~,d}~ww xY w7 # ||_.        ||_/        ||_0        tc        jd                  tf        jh                        |_5        |j	                          d{  7   t        j                  d!| d"| d#|        w xY ww)%aH  
    Kino kanalidan barcha kinolarni DB'ga sync qiladi.

    Jarayon:
    1. Har bir message_id uchun forward_message orqali xabarni admin chatiga yuboradi
    2. Caption'ni parse qilib kinoni DB'ga upsert qiladi
    3. Forward qilingan xabarni admin chatidan o'chiradi
    4. 50 ta ketma-ket topilmagan message_id kelsa to'xtatiladi
    5. Sync natijasini SyncLog'ga yozadi

    Eslatma: Bot API kanaldan tarix o'qishni qo'llab-quvvatlamaydi, shuning
    uchun biz forward_message "probe" usulidan foydalanamiz. Admin chatida
    xabarlar bir zumga ko'rinib, darhol o'chiriladi.
    )statusr   Nr   zSync boshlandi. Kanal: z	, admin:    )chat_idfrom_chat_id
message_id)r   r   r   codechannel_message_idtitle_uztitle_rutitle_endescription_uzdescription_rudescription_enyeardurationcountrydirectorcastimdb_ratingkinopoisk_rating
age_ratingposter_file_idzSync: u7    ta ketma-ket topilmadi — to'xtatildi (oxirgi msg_id=)g?zSync xatolik: zSync yakunlandi: added=z
, updated=z
, skipped= )6r   r   RUNNINGaddcommitrefreshr   infor	   movie_channel_id_MAX_MSG_IDforward_messagedelete_messager   	Exceptioncaptiontextphotofile_idr   r
   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r   _MAX_CONSECUTIVE_FAILSasynciosleepDONEr   errorFAILEDstrerror_messagemovies_addedmovies_updatedmovies_skippedr   nowr   utcfinished_at)r   r   r   sync_logaddedupdatedskipped	error_msgmsg_idconsecutive_fails	forwardedr7   photo_file_idparsed_createdes                    E/home/empty/Documents/pet_projects/kinoBot/bot/services/movie_sync.pysync_movies_from_channelrW      sQ    & !!!H KK
..

//(
###EGGIX
-h.G.G-H	R^Q_`a#;"%"5"5(!)!:!:% #6 # 	
 %&!,, ,#,#7#7 -    $++=y~~?H	 3 ; ;TX*7F;F+7 ,$+,!', 06, &,__	,
 &,__, &,__, ,2+@+@, ,2+@+@, ,2+@+@, "(, &,__, %+NN, &,__, "(, )/(:(:,  .4-D-D!," (.'8'8#,$ ,9%, &
7( #!QJE#qLG1qLG aKF--%%% #B %// !&")")'||HLL9nn%eWJwiz'S	
 OE # ! &: & !Q&!$(>>KK !7 8 966<XQ@  ? &  ~aS)*$++!$QF		 		 !&")")'||HLL9nn%eWJwiz'S	
s  A P/K5P/K8P/)7M !%L K;L  L .K>/L 3D*L L L >M MM +M  AP/N4%P/8P/;L >L 	L
L LL 7M
M MM 	N1AN,&N6 ,N11N6 4P/6AP,P
$P,,P/)r<   r   r   aiogramr   aiogram.exceptionsr   logurur   sqlalchemy.ext.asyncior   
bot.configr	   bot.database.crud.movier
   bot.database.modelsr   r   bot.services.caption_parserr   r;   r3   intrW   r,       rV   <module>rb      s^     '  1  /  0 3 5  z	zz z 	zra   