
    soj                         d dl Z d dlZd dlmZ d dlZd dlm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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 dl!m"Z" dej#        de$ddfdZ%dS )    N)AsyncIterator)Reddit)
Submission	Subreddit)DoesNotExist)Message)
BadRequest)ContextTypes)RedditGroupPost)
SavedMedia)SavedMediaType)full_media_sendescape_valid_markdown_chars)download_temp_file)compress_imagecontextsubreddit_namereturnc           
        K   t           j                                        }|t          j        d           dS t          j        t           j                                        t           j                                        t           j	                                                  4 d{V 	 }|
                    |           d{V }|                    d          }|2 3 d{V }|}|j        r|j        r	 t          j        t          j        |j        k               B# t"          $ r Y nw xY w|j        j        }t(          j        |j        j        z   }t(          j        |j
        j        z   }	d                    t3          |j                  |j                  }
|
dz  }
|
d                    t3          |          |t3          |j
        j                  |	          z  }
	 |j                            d	          s|j                            d
          rt;                      }|j                            d
          rt<          j        |_         n=|j        !                    d          rt<          j"        |_         nt<          j#        |_         |j        |_$        	 |j         t<          j        k    r	 |j%        d         d         }|&                    d          d         }tO          tQ          |          d          5 }|)                                |_$        ddd           n# 1 swxY w Y   n=# tT          $ r0 t          j        d                    |j                             Y w xY wtW          | ||
|           d{V }n!# tX          $ r}|j         t<          j#        k    rt          j        d                    |j                             t[          |j        t(          j.                  }tO          |d          5 }|)                                |_$        ddd           n# 1 swxY w Y   tW          | ||
|           d{V }	 t_          j0        |           n9# tb          $ r* t          j2        d                    |                     Y nw xY w|Y d}~nd}~ww xY wt                      }|j        |_        |j3        |_3        |4                                 t          j5                    6                                dk    rto          t          j5                    8                    t          j9        :                                          ;                    d                    }t          j<                    =                    t          j9        >                    d |D                                 ?                                  n# tX          $ r}t          j        d                    |j        |                     	 t                      }|j        |_        d|_3        |4                                 nD# t          $ r7}t          j        d                    |j        |                     Y d}~nd}~ww xY wY d}~d}~wt          $ r4}t          j        d                    |j        |                     |d}~ww xY w6 	 ddd          d{V  dS # 1 d{V swxY w Y   dS )z
    Send a reddit post to the chat group_chat
    :param context: Context of callback
    :param subreddit_name: Name of the subreddit
    Nz0Main group ID is not set, can't send reddit post)	client_idclient_secret
user_agent
   )limitz[{}]({})z

z$_Posted by [u/{}]({}) on [r/{}]({})_zhttps://i.redd.itzhttps://v.redd.itz.gifreddit_videofallback_url?r   rbzReddit post {} has no video)captionchat_idz,Error sending image {}. Trying to resize it.z!Error deleting temporary image {}   c                     g | ]	}|j         
S  )id).0ps     "/app/src/service/reddit_service.py
<listcomp>zmanage.<locals>.<listcomp>   s    =Y=Y=Yqad=Y=Y=Y    z Error sending reddit post {}: {}z'Error saving skipped reddit post {}: {})AEnvMAIN_GROUP_IDgetloggingerror	asyncprawr   REDDIT_CLIENT_IDREDDIT_CLIENT_SECRETREDDIT_USER_AGENT	subreddithotstickiedover_18r   
short_link	shortlinkr   authornamecREDDIT_USER_URL_PREFIXREDDIT_SUBREDDIT_URL_PREFIXdisplay_nameformatr   titleurl
startswithr   r   VIDEOtypeendswith	ANIMATIONPHOTOmedia_idmediasplitopenr   readKeyErrorr   r	   r   $TG_DEFAULT_IMAGE_COMPRESSION_QUALITYosremoveOSErrorwarning
message_idsaveselectcountlistorder_byr$   descr   deletewherenot_inexecute	Exception)r   r   main_group_id
connectionr3   	hot_postspostauthor_name
author_urlsubreddit_urlr   saved_mediarA   rH   messageexceptionBadRequest
image_pathreddit_group_postlast_n_postsbad_requestsave_exceptiones                         r'   managero      s      %))++MHIII &**,,.2244(,,..   M M M M M M M M 
 &0%9%9.%I%IIIIIII	#,==r=#:#:	# C	 C	 C	 C	 C	 C	 C	$#D }  | #O$>$.$PQQQ    +*K1DK4DDJ9DN<WWM ''(CDJ(O(OQUQ_``GvG=DD+K88+DN,GHH	  Gb8&&':;; Ktx?R?R'@ @ K /9llKx**+>?? @+9+?((**622 @+9+C((+9+?(+/8K(,6&+~/CCC)&*j&@&P&)iinnQ&7%)*<S*A*A4%H%H !KH;C==??K$8!K !K !K !K !K !K !K !K !K !K !K !K !K !K !K#+ ) ) ) '.K.R.RSWSa.b.b c c c ()
 2A#['=2 2 2 , , , , , , & 6 6 6&+~/CCC#M N U UVZV^ _ _  
 *8 $!*P* *J "&j$!7!7 G87?}} 4G G G G G G G G G G G G G G G5D ' +(/(5	6 6 6 0 0 0 0 0 0G% "	* 5 5 5 5#* % % % '0S0Z0Z[e0f0f g g g $%
 #6596> :I9J9J%37>%03:3E%0%**,,, '-//5577"<<'++244==o>P>U>U>W>WXX^^_abb( ( ,244"U?#5#<#<=Y=YL=Y=Y=Y#Z#Z[[$WYYY EWKX    @GGXcddeee

9H9J9J%37>%037%0%**,,,,    MAHH NN            @GGXYZZ[[[C $)M M M M M M M M M M M M M M M M M M M M M M M M M M M M M Msg  +4[[
%[9'D! [!
D.+[-D..B2[!B8WN0AL-;L!L-!L%%L-(L%)L-,N-6M'#N$[&M''NWR#A0R P&	R&P**R-P*.RQ R 1R	RR	RWR##D'W
[
[-Z5X<;Z<
Y=	-Y8	3Z8Y=	=Z [[/[[[
[),[))&r-   rO   typingr   r/   r   asyncpraw.modelsr   r   peeweer   src.tg_compatr   src.tg_compat.errorr	   src.tg_compat.extr
   	constantsr;   resources.EnvironmentEnvironmentr*   src.model.RedditGroupPostr   src.model.enums.SavedMediar   src.model.enums.SavedMediaTyper   src.service.message_servicer   r   src.utils.download_utilsr   src.utils.image_utilsr   DEFAULT_TYPEstrro   r#   r)   r'   <module>r      sv    				                       2 2 2 2 2 2 2 2       ! ! ! ! ! ! * * * * * * * * * * * *     # # # # # # 5 5 5 5 5 5 1 1 1 1 1 1 9 9 9 9 9 9 T T T T T T T T 7 7 7 7 7 7 0 0 0 0 0 0Z,3 ZS ZT Z Z Z Z Z Zr)   