
    Mge                     l    S SK Jr  S SKJrJr  S SKrS SKr\" SS9\" S5       " S S5      5       5       rg)	    )Fore)pluginrequireNT)networkzname dayc                   Z    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)NameDay   z
Name Day plugin provides information about your country's name days

You can see today's, tomorrow's, or any other day's name day.

You can also see the name day of a specific name.
c                 0    Xl         U R                  5         g )N)jarvismain)selfr   ss      >/Users/admin/workspace/ai/Jarvis/jarviscli/plugins/name_day.py__call__NameDay.__call__   s    		    c                     S U l         SU l        0 SS_SS_SS_SS	_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S!_S"S#_S$S%S&S'.EU l        g )(N AustriaatBulgariabgCroatiahrzCzech RepublicczDenmarkdkEstoniaeeFinlandfiFrancefrGermanydeGreecegrHungaryhuItalyitLatvialv	LithuanialtPolandplRussiaruSlovakiaskesseus)SpainSwedenzUnited States)r   location	countriesr   s    r   __init__NameDay.__init__   s    
t

 t
 d	

 t
 t
 t
 d
 t
 d
 t
 T
 d
 
 d
  d!
" #
$ !)
r   c                 ^   U R                   S:X  a  U R                  5          U R                  R                  SU R                   -   [        R
                  S9  U R                  R                  S5        U R                  R                  S5        U R                  R                  S5        U R                  R                  S5        U R                  R                  S5        U R                  R                  S	5         [        U R                  R                  S
[        R                  S95      nUS:X  a  U R                  5         OUS:X  a  U R                  5         OiUS:X  a  U R                  5         ORUS:X  a  U R                  5         O;US:X  a  U R                  5         GM  US:X  a  g U R                  R                  S5        U R                  R                  S[        R                  S9nUR!                  5       S:X  a  g GM  ! [         a     U R                  R                  S5         GM
  f = f)Nr   It appears you are in )colorz1 See Today's name daysz2 See Tomorrow's name daysz3 Chose specific datez4 Chose specific namez5 Chose an other countryz6 ExitzSelect the desired number: zPlease select a number                  zPlease select a valid numberzDo you want to continue? (Y/N)n)r;   get_locationr   sayr   BLUEintinputGREEN
ValueErrortodaytomorrowspecific_datespecific_namechange_countryREDlower)r   inps     r   r   NameDay.main/   s   ==BKKOO4t}}DDIIOVKKOO56KKOO89KKOO34KKOO34KKOO67KKOOH%$++++,IQUQ[Q[+\] ax

""$""$##% >? ++##$DDHH#UCyy{c!K    89s   :1H %H,+H,c                 4    U R                   U R                     $ )z"Return the two letter country code)r<   r;   r=   s    r   get_country_codeNameDay.get_country_codeZ   s    ~~dmm,,r   c                    U R                   R                  S5        Sn[        R                  " U5      R	                  5       nUS   nX0R
                  R                  5       ;   a  X0l        gU R                   R                  SU-   5        U R                   R                  S5        U R                   R                  S5        U R                  5         g)z
Get the location of the user.
If the user is in a supported country, the country is saved in location class variable.
otherwise, the user is asked to enter a country from the supported list.
zGetting Location ... z]http://api.ipstack.com/check?access_key=f16ebe59174140a634827d674e605350&output=json&legacy=1country_namerA   zYour Country is not supportedzPlease chose an other countryN)	r   rK   requestsgetjsonr<   keysr;   rU   )r   send_urljslocs       r   rJ   NameDay.get_location^   s     	/0r\\(#((* ..%%''MKKOO4s:;KKOO;<KKOO;<!r   c                 *   U R                  5       n[        R                  " SSU0S9R                  5       nUS   U   nUS:w  a  U R                  R                  SU-   5        gU R                  R                  S[        U R                  5      -   5        g)	z
Show the name days for today.
z'https://nameday.abalin.net/api/V1/todaycountryparamsnamedayn/aSay some kind words to zNo name days today in Nr[   r_   r`   ra   r   rK   strr;   r   country_codejnamess       r   rQ   NameDay.todayq   s     ,,.LLB!*L 9;;?46 	
)\*E>KKOO5=>KKOO4s4==7IIJr   c                 *   U R                  5       n[        R                  " SSU0S9R                  5       nUS   U   nUS:w  a  U R                  R                  SU-   5        gU R                  R                  S[        U R                  5      -   5        g)	z"
Show the name days for tomorrow.
z*https://nameday.abalin.net/api/V1/tomorrowrh   ri   rk   rl   rm   zNo name days for tomorrow in Nrn   rp   s       r   rR   NameDay.tomorrow~   s     ,,.LLE!*L 9;;?46 	
)\*E>KKOO5=>KKOO;c$-->PPQr   c                 b   U R                  5       nU R                  R                  S5         [        R                  " SU R                  R                  5       R                  5       5      u  p#U R                  X#5        [        R                  " SXUS.S9R                  5       nUS   U   nUS:w  a+  U R                  R                  S	U-   S
-   U-   S-   U-   5        gU R                  R                  SU-   S-   U-   S-   U R                  -   5        g! [         a    U R                  5          gf = f)z)
Show the name days for a specific date.
zPlease enter day/monthz[ /-]+Nz)https://nameday.abalin.net/api/V1/getdate)rh   daymonthri   rk   rl   rm   z on /zNo name days at z in )r[   r   rK   resplitrN   stripcheck_if_date_is_validrP   rS   r_   r`   ra   r;   )r   rq   rx   ry   rr   rs   s         r   rS   NameDay.specific_date   s    ,,.01	)T[[->->-@-F-F-HIJC''3 LLD,8u UWW[W[W] 	
)\*E>KKOO5=FLsRUZZ[KKOO.4s:UBVKdmm[\  	 	s   AD D.-D.c                    U R                  5       nU R                  R                  S5        U R                  R                  5       R	                  5       n[
        R                  " SXS.S9R                  5       nUS   (       ah  SnUS    H8  n[        US   5      S-   [        US	   5      -   S
-   nXFR	                  5       -  nM:     U R                  R                  SU-   S-   U-   5        gU R                  R                  SU-   5        g)z)
Show the name days for a specific name.
zPlease enter namez)https://nameday.abalin.net/api/V1/getname)rh   nameri   0r   rx   rz   ry    rm   z at zNo name days found for N)	r[   r   rK   rN   r}   r_   r`   ra   ro   )r   rq   r   rr   datesr   dates          r   rT   NameDay.specific_name   s     ,,.+,{{  "((*LLD,8 GIIM 	
 S6EsV1U8}s*S7_<sB%  KKOO5<vEMNKKOO5<=r   c                    U R                   R                  S5        [        U R                  R	                  5       SS9 H/  u  pU R                   R                  [        U5      S-   U-   5        M1     U R                   R                  [        [        U R                  5      S-   5      S-   5         [        U R                   R                  S5      5      nU[        S[        U R                  5      S-   5      ;   a  OU R                   R                  S5        Mh  U[        U R                  5      S-   :X  a  g	[        U R                  R	                  5       5      US-
     U l        g	)
z+
Change the location of the user manually.
z/Select your country number from the list below:rC   )startr   z CancelzSelect your country number: rD   z$Please select a valid country numberN)r   rK   	enumerater<   rb   ro   lenrM   rN   rangelistr;   )r   ikeyrh   s       r   rU   NameDay.change_country   s    	IJ 3 3 5Q?FAKKOOCFSL3./ @C/!34y@A$++++,JKLG%3t~~#6#:;; FG  c$..)A--T^^0023GaK@r   c                    [        U5      n[        U5      n/ SQn/ SQnX#;   a.  SU:  d  US:  a!  U R                  R                  S5        [        eg	X$;   a.  SU:  d  US:  a!  U R                  R                  S5        [        eg	US:X  a.  SU:  d  US:  a!  U R                  R                  S5        [        eg	U R                  R                  S5        [        e)
zW
Check if the date taken for user is valid.
:raise ValueError: if the date is invalid.
)rC   rE   rG   r	      
      )rF   rH   	      r      zPlease enter a valid date   rD      N)rM   r   rK   rP   )r   rx   ry   m31m30s        r   r~   NameDay.check_if_date_is_valid   s    
 #hE
%<3w#( ;<   # \3w#( ;<   # aZ3w#( ;<   # KKOO78r   )r<   r   r;   N)__name__
__module____qualname____firstlineno____doc__r   r>   r   r[   rJ   rQ   rR   rS   rT   rU   r~   __static_attributes__ r   r   r   r      sC    
4)V-"&KR](>(A(r   r   )coloramar   r   r   r_   r{   r   r   r   r   <module>r      s?     "  	 	
U U  Ur   