a
    }h                    @   s   d dl Z d dlZd dlZd dlZd dlZd dl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mZmZmZ d dlmZ d dlmZmZmZ d dlmZmZmZ d d	lmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% G d
d dZ&dS )    N)Image)close_old_connections)timezone)AccountBoughtItemConsoleSpecialNames
PlayerCardAccountSalablePlayerCard)BASE_DIR)6ARZBAZI_REPORT_TOPIC_DISCHARGE_ERROR_THREAD_MESSAGE_IDONE_WEEK_SECONDSONE_HOUR_SECONDS)SBCTargetFilterClubMovesSBCTargetFilterLeagueMovesSBCTargetFilterNationMoves)		new_printtelegram_send_photoget_round_priceget_player_data_by_asset_idget_player_fifa_name_by_idset_sbc_statusget_previous_price_gradeget_image_positionget_next_price_gradec                   @   s  e Zd Zdd Zdd Zdd Zd[dd	Zd\d
dZd]ddZd^ddZ	d_ddZ
d`ddZdaddZdd ZdbeedddZedd d!Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zdcd,d-Zd.d/ Zd0d1 Zd2d3 Zddd4d5Zd6d7 Zd8d9 Zded:dZdfd;d<Zed=d>d?Zd@dA ZdBdC Z e!dDdEdFZ"e#dGdHdIZ$e%dJdKdLZ&e'dMdNdOZ(dPdQ Z)dgdSdTZ*dUdV Z+dhdWdXZ,dYdZ Z-dS )iTransferListUtilsc                 C   s4   ddl m} || _| jj| _| jj| _| jj| _d S )Nr   )PublicMoves)utils.public_movesr   public_movesfifa_account
sbc_workerps4_buttons)selfpublic_moves_instancer    r"   LC:\Users\Administrator\Downloads\futplus_django\utils\transfer_list_utils.py__init__   s
    

zTransferListUtils.__init__c           	   	   C   sN  t | jd|d| | j  td | j  d\}}| jt	j
td| jj ddr| jdd	 td
 | j  td}|ddddf }tj|d ddtjd}t|tj}td| | jjddddd}zt|}W n&   t | jdt d| d	}Y n0 |r*|t|krPt | jd|d| | jjddddd}zt|}W n&   t | jdt d| d	}Y n0 t | jd|d| t||krt | jd| d| d | j  td
 d||d S | j  td
 | j  | jt	j
td| jj d!drBt | jd" | j  td
 d#||d S )$Nzcheck owner and contract :  --    )r   r   utils/z%_controls/player_data_play_styles.pngscreen_shot_tmp.jpgi r          i  i     fxfyinterpolationzcard_owner_count_tmp.jpg5--psm 7 --oem 3 -c tessedit_char_whitelist=0123456789Tconfigconvertconvert_typez$read owner contract mode 1 failed : z owner_count_text : z owner read not equal to count , z5--psm 8 --oem 3 -c tessedit_char_whitelist=0123456789zread owner contract error : z!read owner and contract result : z - z!error on discharge , owner count z not equal text z , press circlefailed)statusowner_countcontract_countz)_transfer_list_icons/player_data_icon.pngz1check owner and contract but still in player datasuccess)r   r   r   r3timesleepr   get_screen_shot	has_imageospathjoinr	   platform press_and_release_right_joystickcv2imreadresizeINTER_LANCZOS4cvtColorCOLOR_BGR2GRAYimwriteget_screen_textint	traceback
format_exccircle)	r    r8   r9   Zowner_count_numZcontract_count_numimgZcrop_player_ownerZowner_count_textZint_owner_count_textr"   r"   r#   check_owner_contract   s    














z&TransferListUtils.check_owner_contractc           	   	   C   s\  t | jd| | jdd td | j  td | j  td | jj	dd | jj	dd | j  td | jj
dd | j  td | jjddd}|d	kr| j  td
 | j  td
 | |S td | j  td | jjdd t|D ]6}d}tdD ]}td | j  | jjtjtd| jj dddd}|du r| j|| d    S td
D ]}| j  td qtdD ]d}|  rd}tjj| jdddd | j  | j jd8  _| jjdgd  q&| j	  q| j  td  qDq0| j|d
 d  S d S )Nzneed to buy heals, need = ultimate_teamsearch_consumables      ?sleep_afteri,     pricedefault_pricecan not find pricer)   F   r&   r'   ._controls/transfer_market_no_search_result.pnglive_search_results.png
   special	wait_time)
need_healsT   Zhealsquadr   	buy_price	item_typerequested_workercreditupdate_fields)r   r   r   go_to_stater<   r=   r   r;   crossrightdownsearch_player_pricerP   buy_healinguprangetrianglewait_for_imager@   rA   rB   r	   rC   r1buy_nowr   objectscreaterefresh_from_dbrk   save)	r    rd   
search_resiboughtjwait_resultnmkr"   r"   r#   rs      sv    

























zTransferListUtils.buy_healingFc                 C   s  t | jd d S | jj	dd | j  td | jj
dd | j  | jjdd | jj
dd | j  td | jjdd	d
}|dk r| j  td | j  td | j||dS | j  td | jjdd t|D ]}d}tdD ],}td | j  | jjtjtd| jj dddd}|du rl| j|| |d    S |rvdnttdd}t|D ]}	| j  td qtdD ]d}
|  r
d}tjj| jdddd | j   | j j!d8  _!| jj"dgd  q| j	  q| j  td  q6qtd | j#  | j$tjtd| jj dds| j$tjtd| jj ddr| j  td | j|d |d  S d S ) Nz(no contract need any more . this is bug.zneed to buy contracts, need = rS   rT   rU   rV   r)   re   rX   rY   r\   )managerFr]   r&   r'   r^   r_   r`   ra   )need_contractsr      Tcontractrf   rg   rk   rl   !_controls/live_search_results.pngr(   _controls/time_remaining.png)%r   r   r   rn   r<   r=   r   r;   ro   rp   rq   leftrr   rP   buy_contractrt   ru   rv   rw   r@   rA   rB   r	   rC   rM   randomrandintrx   ry   r   rz   r{   r|   rk   r}   r>   r?   )r    r   r   r~   r   r   r   r   next_page_pressr   r   r"   r"   r#   r      s                
























zTransferListUtils.buy_contractc              	   C   s  t | jd| | j  td | jjtj	
td| jj ddddsNdS | j  d	}|d
krt| jtj	
tdd| j dtd t | jd dS | j  | jtj	
td| jj dds| j  td nq|d7 }q\| j  td | j  | j  td | jjtj	
td| jj ddddrt | jd tdD ]V}| j  | jtj	
td| jj ddsZ| j  t | jd td qZ| j  td | jjtj	
td| jj dtj	
td| jj dgddrt | jd |st | jd | j  | jtj	
td| jj ddrt | jd | j  td | j  td | jd d! td | j  td d"S dS )#Nz!buy now player , wait for list : rU   r'   z&_controls/check_for_inside_bidding.pngr&   no_wait_after_findrc   rb   Fr   r,   r(   zaccount z+ error on discharge , can not find buy sign)captionmessage_thread_idzcant find buy now signz_controls/buy_now_sign.pngr)   z"_controls/purchase_was_success.png   check_failedzbuy item successr]   z_controls/after_buy.pngzpress up to find assign nowz_controls/after_buy_in_list.pngz"_controls/transfers_keep_items.png)rc   zin new items listz'after buy item. have not wait for list.z!_controls/swap_with_duplicate.pngzfind swap with duplicate.      T)r   r   r   ro   r<   r=   r   rw   r@   rA   rB   r	   rC   r>   r   r
   r?   rq   rt   ru   wait_for_imagesrD   r2)r    wait_for_listcountiir"   r"   r#   ry     s    














'







zTransferListUtils.buy_nowr   c           
      C   s4  t | jd|| |s| j  td |st | jd| |sz| j|||dd W nb ty } zJ| dkrt | jd | j	||d|||d	W  Y d }~S |W Y d }~n
d }~0 0 nd
}	|	d7 }	t | jd |	dkr| j
  |	dkrdS | j  | jjtjtd| jj ddddr>| j|||ddr>q| jjtjtd| jj ddddr|| j
  td | j  td qn| j  td | j  td |st | jd| |s| j||t|ddd nd
}	|	d7 }	t | jd |	dkr| j
  |	dkr*dS | j  | jjtjtd| jj ddddr|| j||t|dddr|q| jjtjtd| jj ddddr| j
  td | j  td qn| j  td d
}	| j  | j  t | jd |	d7 }	|	dkr(| j
  |	dkr6dS | j  | jjtjtd| jj dddds| jtjtd| jj ddrq| jtjtd| jj ddr| j
  td | jjdd q |s0td | j  td | jtjtd| jj d | j  dS ) Nzlist item on transfer market : r)   z.not list with default values 1 , the second : bid
bid_or_buy!cant set price for this one errorz(cant set price so set price with defaultT)start_pricebuy_now_pricelist_with_default_valuessecondplayer_min_pricer   r   ztry to find start pricer`      Fr'   z'_controls/start_price_active_second.pngr(   皙?	thresholdz$_controls/control_set_price_sign.pngrU   z.not list with default values 2 , the second : buy)ry   r   ztry to find buy now pricez)_controls/buy_now_price_active_second.pngz'try to find list on transfer the secondz0_controls/list_on_transfer_market_the_second.pngz/_controls/list_on_transfer_market_the_first.pngrV   z"_controls/item_transfer_sucess.png)r   r   r   ro   r<   r=   	set_price	Exception__str__list_on_transfer_marketrP   r   r>   r?   r@   rA   rB   r	   rC   rq   l2r   r   rw   )
r    r   r   r   r   r   player_max_pricer   errr   r"   r"   r#   r     s    































z)TransferListUtils.list_on_transfer_marketr   c           	   	   C   sP  d}t | jd|d| |r$| j  d}|dkrNt | jd | j  tdz|d7 }| j  | j||d	 |rt	|}nt | jd
 zFt | jd | jj
ddddd d dddd}t	t|}W nh   zHt | jd | jj
dddddd d dddd}t	t|}W n   Y Y W dS 0 Y n0 t	||krPW qL|d dkrzt | jd t	t|d }dt| d | }t | jd| t|dk r| t|t| n$d}| j  d}| j||d d}|st|dk s|rW qLtd W q(   t | jd t  |r:| j  td Y q(0 q(dS )!NFzmain_default_number = z
buy now = r   r   zcant set price for this one 4r   r)   r   zneed to get price from picturezreading start pricestart_price_tmp.jpgTr&   )r4   r5   , .zreading start price step 26--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789r2   r,   z8change default number to some thing else to pass the bugr   0zdefault number = i  )default_numberi rU   zset price error : )r   r   r   r   rP   r   r   r>   #_TransferListUtils__get_start_pricestrrL   replacer   rM   lenset_price_with_l_and_rro   search_player_select_pricer<   r=   rN   rO   )	r    rZ   r   Zmain_default_numberry   r   Z
inside_setr   r   r"   r"   r#   r   ,  s    





zTransferListUtils.set_pricec                 C   s   t | jd| td}|rX|dkr:|ddddf }q|dkr|d	d
ddf }n:|dkrv|ddddf }n|dkr|dd
ddf }t|tj}td| d S )Nzget start price. second is : r(   r   ih  i  i<    r   i  r*   i  i  iJ  ir  ir  i  r   )r   r   rE   rF   rI   rJ   rK   )r    r   r   rQ   crop_player_namer"   r"   r#   Z__get_start_pricej  s    
z#TransferListUtils.__get_start_priceNc              	   C   s   |dkrt | jd dS |s |r|p&d |p.d }t | jd| | ddkrxt | jd	 | j|||||||d
 dS | j  td
 | | td | 	|st | jd | j|||||||d
 dS |rFt | jd| | ddkrt | jd | jd d |||||d
 dS | j  td
 | 
| td
 |rtjj|d }	|	st | jd t| jd td dS t | jd| | ddkrt | jd | jd d d ||||d
 dS | j  td
 | |	 td |rJt | jd| tjj|d }
|
sJt | jd t| jd td dS tjj|d }|st | jd t| jd td dS | ddkrt | jd | jd d d d |||d
 dS | j  td
 | | td
 | ddkr t | jd  | jd d d d |||d
 dS | j  td
 | |
 td n|rt | jd!| tjj|d }|st | jd t| jd td dS | ddkrt | jd | jd d d d |||d
 dS | j  td
 | | td dS "Nr`   try more than 10 times. breakr6   bronzer   zsearch player find quality 1 qualityr:   znot hovered qualityr)   )level
rarity_idspositionnationteamleaguetry_counterr&   zselected quality not fixedzsearch player find positionr   znot hovered positionr   znation not foundd   Fzsearch player find nationr   znot hovered nationzsearch player find club)r   zclub not foundr   zleague not foundr   znot hovered leagueclubznot hovered clubzsearch player find leaguer   r   move_to_next_iconsearch_player_set_filtersr   ro   r<   r=   find_qualitycheck_selected_qualityfind_positionr   rz   filterfirstr   r   find_nationr   r   find_league	find_clubr    r   r   r   r   r   r   r   quality_namenation_moves
team_movesleague_movesr"   r"   r#   r     s    


































z+TransferListUtils.search_player_set_filtersc           
      C   sb  |   }|r|dkrdS g dg dg}g }||d v rT||d v rT|| jj n&||d v rz||d v rz|| jj ||d v r|d |}n|d |}||d v r|d |}n|d |}||krt|| D ]}|| jj qn"t|| D ]}|| jj q|D ]}	|	dd q|   |krBd	S t	
d
 | j||d dS d S )Nr&   z
missed way)namer   r   )pricingr   r   r   r   r)   rU   rV   r:   r`   )next_icon_namer   )what_search_icon_hoveredappendr   rt   rq   indexru   rp   r   r<   r=   r   )
r    r   r   current_positionZ	movementsZneed_movementsZcurrent_move_indexZnext_move_indexnnitemr"   r"   r#   r     s8    
z#TransferListUtils.move_to_next_iconc                 C   s*  | j   | j tjtd| jj ddr2dS | j tjtd| jj ddrZdS | j tjtd| jj ddrdS | j tjtd| jj d	drd
S | j tjtd| jj ddrdS | j tjtd| jj dd rdS | j tjtd| jj ddr&dS d S )Nr'   z#_search_player_icons/name_hover.pngr(   r   z&_search_player_icons/quality_hover.pngr   z'_search_player_icons/position_hover.pngr   z&_search_player_icons/country_hover.pngr   z%_search_player_icons/league_hover.pngr   z#_search_player_icons/club_hover.pngr   z&_search_player_icons/pricing_hover.pngr   )	r   r>   r?   r@   rA   rB   r	   r   rC   )r    r"   r"   r#   r     sd    
z*TransferListUtils.what_search_icon_hoveredT)player_nameplayer_ratec           %      C   s2  t | jd|d|d|d|d|dt|p*|p*d  |}tjj||d }|rj|jrj|j}t | jd| z:|r|dk rt | jd	|d
| | 	|}	n
| 	|}	W n   |dk rt | j|d  d Y dS t | jdt
  | j  | jj}
d| j_t | j_| j  tjj||d\}}|rtjjddj|dd }|rt|d}| jjj|j|j|d |j|d |d |jd}t|d|_nd|_| j|_ t |_!|  t"dD ]x}t#$d |  |jr|
| j_| j  | j%&  t#$d  Y dS | j%j'dd | j%(  |dkr Y dS qY n0 |}|r`|j)r`|j)}|}| j* }| +ddks| j,t-j./t0d | jj1 d!d"rt | jd# dS | j2d dkr| j%j3dd | j%j3dd n| j%j3dd | 4|}|r| 4|}|}d$}d}g }| 5 }|d 6d%d7  }| 8|}d}|9 D ]@}|rT|d d&kr|d'|dd   d( 7 }n||d( 7 }qT|d d }|d 6d%d7 }|d)ks|d*krd+}t | jd,|d
|d
|d
|d-t| d
t| d
t:|pdd
t:|d.t;|d
t;|d/|d
t;|p6d t:|pFdt:|krt;|7 t;|7 krd}d}|t;|k r|| || kr|| d0krd}q|d7 }qv|rd| j%<  d$S n|rdt:|pdt:|krdt;|7 t;|7 krdd}d}|t;|k rP|| || krD|| d0krDd}qP|d7 }q|rd| j%<  d$S d}||v r| j=  |s| j,t-j./t0d | jj1 d1d"sd$}g }d$}t>|d$d2}| 4|}nq|s|?| | j%3  t#$d q| j=  | j,t-j./t0d | jj1 d1d"r8t | jd3 z|}|rN|dk rN|}d} d}!| t;|k rt@||  t@|vrt@||  d0kr|!d7 }!| d7 } qVtA|!t;| d4k rt | jd5|| | j%<  W d$S tBCd | | D d6 }"t | jd7|d
| d
|d8|"d9d: W n   t | jdt
  Y n0 |dk r\t | j|d  d; dS t | jd<|d=| tjj||d\}}#d|_| j|_ t |_!|  | j  | jj}$tE| jd |du rdS t#$d |  |jr|$| j_| j  | j%&  t#$d dS | j%j'dd | j%(  qd S )>Nzfind player , data : z--z -- player_special_name z unicode name r   )r   player_ratingzfind player , check special : r&   z*search player name , using special name , r%   r,   r)   z4 time get error when see target.will try 1 more timeFzerror on find player : zplayer not foundr   )rating)asset_idrareplayer_asset_idr]   )r   r   player_known_asplayer_rareplayer_fplayer_lr   display_name2   rU   rV   1   zplayer name not foundzno results were foundr   r'   %_controls/player_search_not_found.pngr(   z1in search player with price No results were foundTr   l Z719Z79379zplayer data =z
player data2 =z len player name : z special name : *$_controls/just_one_search_result.png)need_first_namez+in searching name , just one result foundedg?zI think its equalr   zname is not equal z similarity_ratio z.2f%z. time cant see the target.will try 1 more timezplayer not found z
 - rate : )Fr   r   	unidecodelowerr   rz   r   r   edited_namesearch_player_enter_textrN   rO   r   r|   r7   r   	localtimestatus_change_timer}   get_or_creater   excludeorder_byr   r   sbc_solver_instance$get_player_price_from_futbin_web_appr   r   r   r   getlast_fifa_account	last_timeru   r<   r=   r   rP   rp   r   compare_namerL   findr?   r@   rA   rB   r	   rC   current_letter_posrq   fix_name_for_compareget_players_positionr   strip!remove_other_letters_except_latinsplitrM   r   ro   r>   r   r   r   floatdifflibSequenceMatcherratior   )%r    r   r   r   counterwait_for_fix_nameplayer_special_nameZoriginal_player_nameZcheck_specialr7   Zold_status_1special_nameZname_createdZplayer_card_item	card_infofutbin_resultr   r  screen_textZmain_player_name
first_timeZtry_with_first_nameplayers_listZ
new_playerZnew_player_nameplayer_name_fix_i_problemnZnew_player_rateZ	counter_2equalZignore_this_oneZsearching_nameZ	counter_3Znot_match_countZsimilarity_ratiocreatedZ
old_statusr"   r"   r#   find_playerH  s   




 












	2 
 


	













zTransferListUtils.find_player)textc              	   C   s  |  }t|  }d}| D ]0}|ddksB|ddkr"d}t| jd q"|r| D ]$}|ddkr`|ddkr`|}q`| j  | jj	| 
 pd}d}|D ]2}|d	kr| j  | jtjtd
| jj ddr dS | jtjtd
| jj ddr d S |d7 }|dkr<| j  q| jj	|}|d |d  }	|d |d krv| j  |	dkrt|	D ]}
| j  qn(|	dk rtt|	D ]}
| j  q| j  | jj	|}|| _qdS )NF-r   'Tneed_to_change_wordar   r&   r'   r   r(   z	half namer   r)   r   zcomplete name)r  r  r  r  r   r   r   r>   keyboardr  get_current_active_characterr?   r@   rA   rB   r	   rC   r   r   rt   ru   rp   absr   ro   r  )r    r*  english_textr-  Z	each_wordcurrent_characterr   	characterselect_character
result_numr   r"   r"   r#   r  C  sb    









z*TransferListUtils.search_player_enter_textc                 C   sT   t jtd}t |}| j  |D ](}| jt j||dr&|d   S q&d S )Nzutils/keyboards/r(   r   )r@   rA   rB   r	   listdirr   r>   r?   )r    keyboards_pathkeyboard_charactersactive_characterr"   r"   r#   r0  t  s    

z.TransferListUtils.get_current_active_characterc           	      C   s   | j   ttjtd| jj dd}|	d}|	d}t
d}||d d |d d dd	f }||d d |d d d
df }t
j|d ddt
jd}t
j|d ddt
jd}t
d| t
d| | j jddd}| j jdddd}||fS )Nr'   z%_controls/line_icon_search_player.pngr(   top_leftbottom_leftr)      i0  iL  i    r,   r-   zplayers_list_name_tmp.jpgzplayers_rate_tmp.jpgT)r4   r   r3   r4   )r   r>   r   r@   rA   rB   r	   r   rC   r  rE   rF   rG   rH   rK   rL   )	r    liner;  r<  rQ   r   Zcrop_player_rater   r   r"   r"   r#   r  }  s,    



$$z&TransferListUtils.get_players_positionc                 C   sx   t | jd| | }| |}d}| D ]:}|r,|d dkrZ|d|dd   d 7 }q,||d 7 }q,|d d }|S )	Nzfix name for compare r   r   r   r   r)   r   r   )r   r   r  r  r  )r    r   r%  r&  r"   r"   r#   r    s    
z&TransferListUtils.fix_name_for_comparec                 C   s,   d}|D ]}|dvr|d7 }q||7 }q|S )Nr   zabcdefghijklmnopqrstuvwxyz r   r"   )r    wordZchanged_wordpr"   r"   r#   r    s    

z3TransferListUtils.remove_other_letters_except_latinc                 C   s  t | jd t  d}tdD ]6}t | jd| | j  | jtj	t
d| jj dds| jtj	t
d| jj ddrd	}ddg}d }z| jd
d}tjj| jt|d d}	t|	dkr|	 }|j|j g}t | jd|d|jd|jjd|jj	 d
}W nL tyb }
 z2t | jdt  dt|
v rNt  W Y d }
~
n
d }
~
0 0 |s zx|  }t | jd| |r| j   t!"d t | jd|d|d|d|d ztjj| jt|d d}	t|	dkr$|	 }|j|j g}t | jd| nrt|	dkrBt | jd|	 nt | jd |#|d|d|d|d}|dpd|dpdg}W n&   t | jdt  ddg}Y n0 t | jd |d |d  nddg}W n:   t | jd!t  | j   t!"d" ddg}Y n0 |r4|jr4|jj$r4zd#t|jj$ }|j%|}t&|jj'd$}|r|d%t!! t( krt | jd&d'| |}nX|j)|d |jj|d |jj*|jj|d( |d) |jj'd*}|d+r|j%j+||t,d, |dr|d|d+g}W n   t | jd-t  Y n0 |d d.krJddg}|d rt-|d }|rnt.|}t | jd/| | j/tt.|t|d0s| j0  | j1d1d2 n*| j/ddd
d3s| j0  | j1d1d2 t!"d( q| j  | 2  | j3  t!"d | j  | jjd4dd5d6rR|d(krHt | jd7  qX|d7 }qd}qt | jd8 t  tjj| jd94 }t | jd:| d S );Nz7searching transfer list items, selling items on consoler   rX   ztransfer counter , r'   z _controls/compare_price_icon.pngr(   z"_controls/compare_price_icon_2.pngFT)
short_datar   )r   Z$player_card__unicode_name__icontainsr)   z$find player price with card name 1: z player name : z player rating : z player rare : z"cant get short data , exception : zconnection already closedzitem in transfer list : zplayer name rate known asr   r   player_clubz#find player price with card name : zfind two of one cardz3can not find any card with this data in saved cardsfirst_priceupdate_timez,exception in get player price from futbin : zprice and update timez,exception in processing player image data :       ?futbin_player_r   local_time_stampzAlog 5, this item was selected from futbin less than one hour ago z , so use old data again : r&   r]   )rD  r   r   r   r   update_time_stamp)timeoutz.exception 2 in get player price from futbin : r   zbuy now price)r   r   ps4_maintransfer_list)r   r   r   transfer_list_cards_tmp.jpggGz?r   z end of list. no any cards found.zfifa account delete old cards)r   zaccount cards deleted : )5r   r   r   ru   r   r>   r?   r@   rA   rB   r	   rC   /_TransferListUtils__transfer_list_get_card_infor   rz   r   r  r  r  r   lastr   create_time	timestampplayer_cardr   r   r   rN   rO   r   r   rP   r<   r=   %get_player_data_from_futbin_with_nameresource_idplayers_log_cacher   r   r   r  r   setr   rM   r   r   errorsrn    get_transfer_list_cards_positionrp   delete)r    parent_instanceZhave_to_sellZone_more_chanceZtransfer_counterZplayer_short_data_foundrZ   Z	last_itemZimage_card_infoZplayer_itemsZerror_3search_resultplayer_cache_namefutbin_dataZlocal_card_infor!  r   Zdeleted_countr"   r"   r#   search_transfer_list_item  sD   






	










z+TransferListUtils.search_transfer_list_itemc              	   C   s  |r~| j   |   | j dd d  }| j jddddd d  }d}|D ]}|dv rT||7 }qT|}| d|d	S | j  | j jt	j
td
| jj ddddrtdD ]B}| j   | j t	j
td
| jj ddrt| jd  qqtd | j   |   | j dd d  }| j dd d  }| j jddddd d  }d}|D ]}|dv rp||7 }qp|}| ||d	S i S d S )Nplayer_short_name_crop_tmp.jpgr   player_rate_crop2_tmp.jpgr1   Tr?  r   Z
1234567890)r   r   r   r'   z_controls/player_bio_sign.pngr]   r   r   r(   zfind player bior)   player_name_crop_tmp.jpgplayer_known_as_crop_tmp.jpgplayer_rate_crop_tmp.jpgr   )r   r>   get_player_short_info_croprL   r  r  r   r;   rw   r@   rA   rB   r	   r   rC   ru   r?   r   r<   r=   ,_TransferListUtils__get_player_bio_info_crop)r    rC  r   r   Zplayer_just_raterB  Ziiinr   r"   r"   r#   Z__transfer_list_get_card_infol  sp    






z/TransferListUtils.__transfer_list_get_card_infoc                 C   s  t tjtd| jj dd}t tjtd| jj dd}|d}|dd |dd  }|dd |dd  }t	d}||d |d | |d |d | f }t
|tj}td	| | jjd
v r|ddddf }	n t| jd |ddddf }	t
|	tj}	td|	 | jjd
v rR|ddddf }
n t| jd |ddddf }
tj|
d ddtjd}
t
|
tj}
td|
 dddS )Nr'   z)_transfer_list_icons/corners_left_top.pngr(   z+_transfer_list_icons/corners_right_down.pngr<  	top_rightr   r)   zplayer_card_crop_tmp.jpgxboxsxbox360      r   re   zcant read data   r`  r   <   r,   r-   ra  Tr:   )status_boolr7   )r   r@   rA   rB   r	   r   rC   r  rE   rF   rI   rJ   rK   r   rG   INTER_CUBIC)r    Zcorners_left_topZcorners_right_downr;  
name_widthname_heightscreen_shotZcrop_player_card_pureZcrop_player_cardZcrop_player_short_name_positioncrop_player_rate_positionr"   r"   r#   re    sF    

z,TransferListUtils.get_player_short_info_cropc                 C   s  t tjtd| jj dd}|d}|d}|d}t	d}||d |d | |d |d |d	  f }t
|tj}td
| t tjtd| jj dd}|d}|d}|d}	||d t|	d  |d |	 |d |d t|d  f }
t
|
tj}
td|
 t tjtd| jj dd}|d}|d}|d}| jjdv r|ddddf }n@||d | |d t|d  |d |d  |d | f }t
|tj}td| d S )Nr'   z"_transfer_list_icons/name_icon.pngr(   r<  widthheightr)   r      rb  z&_transfer_list_icons/known_as_icon.pngg?   rc  r;  rh  i  r+      i"  rG  r&   rd  )r   r@   rA   rB   r	   r   rC   r  rE   rF   rI   rJ   rK   rM   )r    Z	name_iconr;  rq  rr  rs  r   Zknown_as_iconZknown_as_widthZknown_as_heightZcrop_player_known_asZplayer_rate_positionZrate_position_widthZrate_position_heightrt  r"   r"   r#   Z__get_player_bio_info_crop  sb    






 



z,TransferListUtils.__get_player_bio_info_cropc                 C   s   t tjtd| jj dd}|d}|d}|d}t	d}||d |d | |d |d |d	  f }t
|tj}td
| d S )Nr'   z"_transfer_list_icons/club_icon.pngr(   r<  ru  rv  r)   r   rw  zplayer_club_crop_tmp.png)r   r@   rA   rB   r	   r   rC   r  rE   rF   rI   rJ   rK   )r    Z	club_iconr;  Z
club_widthZclub_heightrs  Zcrop_player_clubr"   r"   r#   Z__get_player_detail_info_crop  s    



z/TransferListUtils.__get_player_detail_info_cropc              	   C   s  d}t dD ]}| j  | jtjtd| jj	 ddrF dS |st| jtjtd| jj	 ddrt dS |s| jtjtd| jj	 d	drz.| 
 }|r|d
k rt| jd| W  dS W n   Y n0  dS |s dS t| jd t dD ]B}z|   W n.   td | j  t| jd| Y n0  qt| jd | j  td | j  | jjdddds|d7 }n| jd t| jd  qt| jd q|S )Nr)   r   r'   z_controls/next_page_icon.pngr(      z_controls/2_results.pngr&   r   iH  z%searching for player , remain time : r,   r]   zafter check 2 pager`   zmore try for get cards positionzafter __get_cards_positioncards_position_tmp.jpgg?r   ztest_screen.jpgzend of cardszafter last staffs)ru   r   r>   r?   r@   rA   rB   r	   r   rC   get_remaining_timer   &_TransferListUtils__get_cards_positionr<   r=   r   rp   )r    have_tor  r   Zremain_timer   r"   r"   r#   get_live_search_count'  sd    







z'TransferListUtils.get_live_search_countc                 C   s   t tjtd| jj dd}|d}|d}t|d |d  t|d |d	  g}t	
d}|d
dddf }t	|t	j}t	d| d S )Nr'   r   r(   r<  ru  r   r   r)   g      @  X  rX   :  r{  )r   r@   rA   rB   r	   r   rC   r  rM   rE   rF   rI   rJ   rK   )r    Zlive_searchr;  Ztransfer_list_widthbottom_rightrQ   r   r"   r"   r#   Z__get_cards_positionV  s    

(
z&TransferListUtils.__get_cards_positionc                 C   s<   t d}|ddddf }t |t j}t d| d S )Nr(   r  r  rX   r  rN  )rE   rF   rI   rJ   rK   )r    rQ   r   r"   r"   r#   rY  g  s    

z2TransferListUtils.get_transfer_list_cards_positionc              	   C   s   |dkrt | jd dS |s |r|p&d |p.d }t | jd| | ddkrxt | jd	 | j|||||||d
 dS | j  td
 | | td | 	|st | jd | j|||||||d
 dS |rFt | jd| | ddkrt | jd | jd d |||||d
 dS | j  td
 | 
| td
 |rtjj|d }	|	st | jd t| jd td dS t | jd| | ddkrt | jd | jd d d ||||d
 dS | j  td
 | |	 td |rJt | jd| tjj|d }
|
sJt | jd t| jd td dS tjj|d }|st | jd t| jd td dS | ddkrt | jd | jd d d d |||d
 dS | j  td
 | | td
 | ddkr t | jd  | jd d d d |||d
 dS | j  td
 | |
 td n|rt | jd!| tjj|d }|st | jd t| jd td dS | ddkrt | jd | jd d d d |||d
 dS | j  td
 | | td dS r   r   r   r"   r"   r#   r   y  s    


































c                 C   s   |dkrt | jd dS | ddkrHt | jd | j||||d dS d	}t | jd
|d| | j  td |dkrt|d}|d r|d }t | jd| d|  | j	||||ddu rdS |d7 }| j
  td qLd S )Nr`   r   r6   r   r:   znot hovered namer)   )r   r   zsearch player find player 2z rate : r&   r   rx  zcan not find player z time so change player rate to )r  T)r   r   r   search_player_set_player_namer   ro   r<   r=   r   r)  rP   )r    r   r   r   r   r  r   r"   r"   r#   r    s8    




z/TransferListUtils.search_player_set_player_name)filter_namec                 C   s   g dg dg dg dg dd}| |}td}td| ||d	 |d
 |d |d f }t|tj}tj|d ddtjd}td| td tt	j
tddd d S )N)  &  r    )r  r    r>  )>  \  r  r  )r  r  r  r>  )r  r  r   i  )r   r   r   r   r   r(   zimg positions : r   r)   r&   r]   g333333?r-   znew_img_tmp.jpgokeng)lang)r  rE   rF   printrI   rJ   rG   rH   rK   pytesseractimage_to_stringr   open)r    r  compare_textZfilter_name_positionsZimg_positionsrQ   Zcrop_filter_textr"   r"   r#   check_selected_filter_text   s    


$z,TransferListUtils.check_selected_filter_textc                 C   s   ddgddgddgddgddgddgddgddgddgddgddgddgddgddgg dg dg dg dg dg dg d	g d	g d
g d
g dg dg dg dd}|  || | j  d S )Nr   r)   r&   rx  rw  )r)   r)   r   r&   )r&   r)   r   r)   )r   r)   r   r&   )r)   r   r   r&   )r   rx  r   r&   )r   r   r,   r   )r)   r)   r&   r   )anybronze0r   silver0gold0bronze11silver1gold1gold3134	bronze134111	bronze11165bronze6530bronze30161	bronze16111bronze115bronze536bronze3671bronze71move_per_listr  r   ro   r    r   Zqualities_dictr"   r"   r#   r     s    zTransferListUtils.find_qualityc                 C   s~   ddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgd}|  || | j  d S )	Nr)   r&   r   r]   rx  r,   rw  )GKRWBRBCBLBLWBCDMRMCMLMCAMCFRWSTLWr  )r    r   Zpositions_dictr"   r"   r#   r   )  s    zTransferListUtils.find_positionr   c                 C   s$   |  |j|j|jg | j  d S Nr  	move_down
move_rightmove_r1r   ro   )r    r   r"   r"   r#   r   5  s    zTransferListUtils.find_nationr   c                 C   s$   |  |j|j|jg | j  d S r  r  )r    r   r"   r"   r#   r   >  s    zTransferListUtils.find_league)r   c                 C   s$   |  |j|j|jg | j  d S r  r  )r    r   r"   r"   r#   r   D  s    zTransferListUtils.find_club)movementc                 C   s   t |dkr2t|d D ]}| j  td qt |dkrdt|d D ]}| j  td qJt|d D ]}| jjdd qpt|d D ]}| jjdd qd S )Nr&   rU   r]   r   g333333?rV   r)   )	r   ru   r   rx   r<   r=   l1rq   rp   )r    r  rx   r  yxr"   r"   r#   r  K  s    

zTransferListUtils.move_per_listc                 C   s   | j   ddddddddddd	d
d
ddddddddddddddddd}| j tjtd| jj d|	|d ddrdS dS )Nr  Zbronze_commonZsilver_commonZgold_commonZbronze_rareZsilver_rareZ	gold_rareZgold_team_of_the_weekposition_modifierZfantasy_futZ
fantasy_fcZteam_of_the_season_momentZteam_of_the_seasonZfut_birthdayZshapeshiftersZteam_of_the_yearZlive_team_of_the_seasonZfuture_stars)r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r'   z_qualities/z.pngr(   TF)
r   r>   r?   r@   rA   rB   r	   r   rC   r  r  r"   r"   r#   r   Y  s,    
z(TransferListUtils.check_selected_quality00000150c           	      C   s   dt t| d t| }d}t| jd|d| |D ]}td| t | D ]}| j  |d7 }qNt|t||  }|dkrt|D ]}| j  qntt	|D ]}| j
  q|dd  }q6| j  d S )Nr   r   r   znumbers , selecting = z current = r)   )r   r   r   r   ru   r   rp   rM   rt   r1  rq   ro   )	r    numberr   Znumber_textZcurrent_placeZnumber_characternumZnumber_character_2r   r"   r"   r#   r   p  s    

z,TransferListUtils.search_player_select_pricec                 C   sF   d}||kr(||krBt |}|d8 }qn||krBt|}|d7 }q(|S )Nr   r)   )r   r   )r    Zprice_1Zprice_2r   r"   r"   r#   get_price_difference_level  s    
z,TransferListUtils.get_price_difference_levelc              
   C   s  ||kr|}t dD ]}t|}q|}t dD ]}t|}q0||  k rR|k snn ||  krj|krn n| ||}| ||}t| jd|d|d|d|	 |}	t|t|kr|r| j  nt dD ]}
| j	  q|}	t t|	D ]$}|	dk r| j	  q| j
  q|}q ||kr^||kr^|r>| j  nt dD ]}
| j
  qF|}q |rp| j  nt dD ]}
| j	  qx|}q d S )Nr`   zdiff_with_default = zdiff_with_next =z default price : z	 price : r   )ru   r   r   r  r   r   r1  r   rx   rp   r   r  )r    r[   rZ   Z	use_r1_l1Z
next_grader   Zten_pre_gradeZdiff_with_defaultZdiff_with_nextdiffnnnr"   r"   r#   r     sJ    


0
z(TransferListUtils.set_price_with_l_and_rc                 C   s  | j   ttjtd| jj dd}|	d}|	d}t
|d |d  t
|d |	d	 g}td}||d |d |d t
| |d f }t|tj}td
| | j jd
ddd d  }| }d}	t|dkst|dkr|d dkr,t
|d }
|
dkr"d}
|	|
7 }	n|d dkrbt
|d }|dkrTd}|	|d 7 }	n`|d dkr|	t
|d d 7 }	n<|d dkr|	t
|d d d 7 }	n|	t
|d d 7 }	t|dkr|d dkrt
|d }|dkrd}|	|7 }	n|d dkr8t
|d }|dkr*d}|	|d 7 }	nJ|d dkr\|	t
|d d 7 }	n&|d dkr|	t
|d d d 7 }	nt| jd| dS |	S )Nr'   r   r(   rg  ru  r   g@r)   rv  ztime_remaining_tmp.jpgz--psm 10 --oem 3)r3   r   rx  r&   ZSecs;   ZMinsrn  ZHoursi  ZDays   r]   z"remain time is not fixed format : F)r   r>   r   r@   rA   rB   r	   r   rC   r  rM   rE   rF   rI   rJ   rK   rL   r  r  r   r   )r    Ztime_remaining_picr;  Ztime_remaining_pic_widthr  rQ   r   remaining_timeZremaining_time_splitedsecondssecsZsecs2Zsecs_1Zsecs_2r"   r"   r#   r|    sv    









z$TransferListUtils.get_remaining_time)F)F)FFr   r   F)Fr   Fr   )r   )NNNNNNr   )r   )r   TN)F)F)NNNNNNr   )r   )r  )T).__name__
__module____qualname__r$   rR   rs   r   ry   r   r   r   r   r   r   r   r)  r  r0  r  r  r  r_  rO  re  rf  Z/_TransferListUtils__get_player_detail_info_cropr  r}  rY  r  r  r   r   r   r   r   r   r   r   listr  r   r   r  r   r|  r"   r"   r"   r#   r      sd   aB
S
t  
 %
>
'  
h
#,   |1	)	 0
E%C
/  
i
	

+r   )'r  r@   r<   rN   rE   r  r  PILr   	django.dbr   django.utilsr   accounts.modelsr   r   r   r   futplus.settingsr	   sbcr
   r   r   
sbc.modelsr   r   r   sbc.public_methodsr   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   <module>   s   ,