
    ag"                         d Z ddlm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ZddlZddZd Zd Zed	k(  r e         ed
        e        yy)zv
This script gets daily as well as new data for the stocks in the database "bse_data1" -> OHCL from Zerodha Demat API
    )
getBSEdataN)MongoClient)sleepc                 r   	 t        |d      5 }t        j                  |      }ddd       j                  |       }|r|S t	        d|        # 1 sw Y   ,xY w# t
        $ r t        d|        Y yt        j                  $ r t        d|        Y yt        $ r}t        d|        Y d}~yd}~ww xY w)a?  
    Access credentials from a JSON file.

    Args:
    - env (str): Environment to fetch the credentials from ('local' or 'live'). Default is 'local'.
    - filepath (str): Path to the JSON file containing credentials. Default is 'creds.json'.

    Returns:
    - dict: Credentials for the specified environment.
    rNz&No credentials found for environment: zFile not found: zError decoding JSON in file: zAn error occurred: )	openjsonloadget
ValueErrorFileNotFoundErrorprintJSONDecodeError	Exception)envfilepathfdatacredentialses         ./var/www/html/automation/zerodha/zBSE_fetch.pyget_credentialsr      s    )(C  	 A99Q<D	  hhsmEcUKLL	  	   - 
+, :-hZ89 )#A3'(()s?   A AA A AA B64 B6B6B11B6c                     t               } | j                  d      }|j                  d      }|j                  d      }|j                  d      }t        |      }||   }||   }|j                         }|D ]  }	d }
t	        |	d   j                         d       }d}|D ]9  }|	d   |   }d	|vr|
|
|d	<   d
}t        d| d|
        |j                  d      }
; |sg|j                  d|	d   idd|	d   ii        t        d       y )NmongoDB_credsconnection_strdatabasebse_collectionpricesc                 B    t         j                   j                  | d      S )N%Y-%m-%d)datetimestrptime)dates    r   <lambda>z'prev_close_updaterBSE.<locals>.<lambda>F   s    XEVEVE_E_`dfpEq     )keyF
prev_closeTzUpdated prev_close for date : close_idz$setz(prev_close fields updated where missing!)r   r   r   findsortedkeysr   
update_one)credsr   connection_urlmongo_databaser   clientdb
collection	documentsdocprevious_closesorted_datesupdate_neededr#   r   s                  r   prev_close_updaterBSEr:   1   sO   E IIo.M"&&'78N"&&z2N"&&'78N(F		BN#J !I  \ c(m0028qr  ! 	/Dx=&D 4'!-)7D&$(M8b@PQR "XXg.N	/ !!5#e*"53x=@Y7Z[5\8 

45r%   c            
         t               } | j                  d      }|j                  d      }|j                  d      }|j                  d      }| j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }	|j                  d	      }
t        |      }||   }||   }t        j                  ||||	|

      }|j                         }|j                  d       |j                         }dddd}t        j                  j                         j                  d      }t        j                  j                  |d      }|t        j                  d      z
  j                         }t        j                  ddd      }|D ]c  }|j                  d|d   i      }|rU	 t        d |d   j!                         D              }|t        j                  d      z   }||kD  rt%        d|d    d       q|}t%        d|d    d| d|        |j                  d|d    d       |j'                         }||\  }}}}d| d }t)        j*                  t-        j.                  d!||i "      j0                        }t%        |       	 |r8d#|v r3d$|d#   v r+i } |d#   d$   D ]p  }!t        j                  j                  |!d   j3                  d%      d   d      j                         }"|!d   |!d&   |!d'   |!d(   |!d)   d*}#|#| |"j                  d      <   r |rM|d   j5                  |        t        j                  j7                         |d+<   |j9                  d|d   i|       nM|d   ||t;        |      t;        |      t        j                  j7                         d,| d-}$|j=                  |$       t%        d.|d           nt%        d/|d    d0       St%        d3|d           f t%        d4       |jA                          |jA                          y # t"        $ r |}Y Hw xY w# t>        $ r}%t%        d1|d    d2|%        Y d }%~%d }%~%ww xY w)5Nr   r   r   r   sqlDB_credsuserhostpasswordport)r=   r>   r?   r   r@   z=SELECT `tradingsymbol` FROM mytable WHERE `exchange` = 'BSE';z*/*zen-US,en;q=0.9zenctoken yjkybfB4nXKkah/J7cGHoHQ/tTTzskUzqUkkca0JGaFYK4kSxBYgrTAHGQztM3RXoJf0QqlSEGr33vtw2ZLzzp12UGSES3LqBx/fIxvlG26SZw1/OjcO6w==)acceptzaccept-languageauthorizationr       )daysi  symbolr   c              3   x   K   | ]2  }t         j                   j                  |d       j                          4 yw)r    N)r!   r"   r#   ).0r#   s     r   	<genexpr>zbse_fetcher.<locals>.<genexpr>   s3        DX\ 1 1 : :4 L Q Q S   Ds   8:r   z	Data for z is up to date.zProcessing z from z to zbSELECT instrument_token, segment, exchange_token, name FROM `mytable` WHERE `tradingsymbol` LIKE 'z' AND `exchange` LIKE 'BSE';z4https://kite.zerodha.com/oms/instruments/historical/z6/day?user_id=GMG829&oi=0&from=2024-01-01&to=2025-03-11GET)headersr   r   candlesT            )r   highlowr)   volume	timestampBSE)rE   company_name
Instrumentexchange_tokeninstrument_tokenrT   exchanger   zCompleted processing zNo new data available for .zError processing r(   zNo instrument token found for z.Processing completed. Results saved to MongoDB)!r   r   r   mcconnectcursorexecutefetchallr!   todaystrftimer"   	timedeltar#   find_onemaxr-   r   r   fetchoner	   loadsrequestsrequesttextsplitupdatenowreplace_oneint
insert_oner   r)   )&r/   r   r0   r1   r   r<   r=   r>   r?   sql_databaser@   mongo_clientr3   r4   connr^   checkSymbolsrJ   ra   	yesterdaydefault_start_daterE   existing_document	last_date	from_datetoken	instTokensegmentrX   nameurlresponse
new_pricescandlecandle_dateohlcnew_documentr   s&                                         r   bse_fetcherr   `   s   E IIo.M"&&'78N"&&z2N"&&'78N))M*K??6"D??6"Dz*H??:.L??6"D ~.L	n	%BN#J ::4dX[_`D[[]F
NNRS??$L + ]G ##%..z:E&&uj9E++3399;I!tQ2 L@&//6!90EF/   D`qrz`{  aA  aA  aC   D  D	%(:(:(BB	 9$	&)O<= +IF1I;fYKtI;GH 	{  }C  DE  }F  |G  Gc  d  	e!7<4Iw I  TJ  KCzz("2"25#wUW"X"]"]^H(O'<( 2yHVDT7T!#J"*6"29"= 	L&.&7&7&@&@QTAUVWAXZd&e&j&j&l$*1I$*1I#)!9%+AY&,Qi  HL
;#7#7
#CD	L ))(3:::F9A9J9J9N9N9P)+6"..&)/DFWX '-Qi,0*1.1..A03I)1):):)>)>)@(-&0	( #--l;1&)=> 6vaykCD 26!9+>?YL@^ 

:;JJLQ  /.	/~  <)&)Bqc:;;<s+   <P;,EQ;Q
	Q
	Q5Q00Q5__main__rN   )localzzerodha\credentials.json)__doc__z_getBSEdatar   r!   r	   pymongor   mysql.connector	connectorr\   timer   pandaspdrh   r   r:   r   __name__ r%   r   <module>r      s[    $        )>-6^yx zM	!H r%   