
    !\ij                         d Z ddlmZmZ ddlmZ ddlZddlmZmZm	Z	 ddl
mZ ddlmZ ddlmZ  ej                   e      Z G d	 d
e      Zy)z%Flashscore data source implementation    )ListOptional)datetimeN)BaseDataSource	MatchData
LeagueData)FlashscoreClient)FlashscoreParser)settingsc            
       z    e Zd ZdZd Zddedee   fdZ	 	 ddede	e
   d	e	e
   dee   fd
Zdede	e   fdZd Zy)FlashscoreSourcezFlashscore data sourcec                 v    t         j                  st        d      t               | _        t               | _        y )Nz"Flashscore is disabled in settings)r   flashscore_enabled
ValueErrorr	   clientr
   parserselfs    */app/app/data_sources/flashscore/source.py__init__zFlashscoreSource.__init__   s+    **ABB&(&(    sportreturnc                 "   	 d| d}| j                   j                  |      }|st        j                  d       g S | j                  j                  |j                        S # t        $ r$}t        j                  d|        g cY d}~S d}~ww xY w)zGet available leagues/zFailed to fetch leagues pagezError fetching leagues: N)	r   getloggerwarningr   parse_leaguestext	Exceptionerror)r   r   urlresponsees        r   get_leagueszFlashscoreSource.get_leagues   s}    
	eWA,C{{s+H=>	;;,,X]];; 	LL3A378I	s"   9A! $A! !	B*B	B	BNleague_source_id	from_dateto_datec                    	 d| d}| j                   j                  |      }|st        j                  d|        g S | j                  j                  |j                  |      }|r|D cg c]  }|j                  |k\  s| }}|r|D cg c]  }|j                  |k  s| }}|S c c}w c c}w # t        $ r$}t        j                  d|        g cY d}~S d}~ww xY w)zGet matches for a leaguez/football/league/r   z#Failed to fetch matches for league zError fetching matches: N)
r   r   r   r   r   parse_matchesr    
match_dater!   r"   )	r   r'   r(   r)   r#   r$   matchesmr%   s	            r   get_matcheszFlashscoreSource.get_matches$   s    	%&6%7q9C{{s+H!DEUDVWX	kk//?OPG &-Kg1J1gK&-Ig1H1gIN	 LI  	LL3A378I	sL   <B3 ,B3 +B) B)B3 B.!B.%B3 )
B3 3	C <CC C match_source_idc                     	 d| d}| j                   j                  |      }|sy| j                  j                  |j                  |      S # t
        $ r"}t        j                  d|        Y d}~yd}~ww xY w)zGet detailed match informationz/match/r   NzError fetching match details: )r   r   r   parse_match_detailsr    r!   r   r"   )r   r0   r#   r$   r%   s        r   get_match_detailsz"FlashscoreSource.get_match_details@   sp    		O,A.C{{s+H;;228==/RR 	LL9!=>	s   #A %A 	A7A22A7c                 8    | j                   j                          y)zClose the clientN)r   closer   s    r   r5   zFlashscoreSource.closeM   s    r   )football)NN)__name__
__module____qualname____doc__r   strr   r   r&   r   r   r   r/   r3   r5    r   r   r   r      s     ) d:6F " )-&*	 H% (#	
 
i8 )9L r   r   )r:   typingr   r   r   loggingapp.data_sources.baser   r   r   "app.data_sources.flashscore.clientr	   #app.data_sources.flashscore.parsersr
   app.core.configr   	getLoggerr7   r   r   r<   r   r   <module>rD      s@    + !   G G ? @ $			8	$B~ Br   