@@ -34,75 +34,102 @@ def __init__(self, window: Tk):
3434 self .login_win (window )
3535
3636 def get_data (self , event = None ):
37+ if self .first_run :
38+ return self .get_data_first_run ()
39+ else :
40+ return self .get_data_refresh ()
41+
42+ def get_data_first_run (self ):
3743 request = None
3844 response = None
39- if self .first_run :
40- self .index = self .index_var .get ()
45+ self .index = self .index_var .get ()
46+ try :
47+ url = f"https://www.nseindia.com/api/option-chain-indices?symbol={ self .index } "
48+ request = self .session .get (self .url_oc , headers = self .headers , timeout = 5 )
49+ self .cookies = dict (request .cookies )
50+ response = self .session .get (url , headers = self .headers , timeout = 5 , cookies = self .cookies )
51+ except Exception as err :
52+ print (request )
53+ print (response )
54+ print (err , "1" )
55+ messagebox .showerror (title = "Error" , message = "Error in fetching dates.\n Please retry." )
56+ self .dates .clear ()
57+ self .dates = ["" ]
58+ self .date_menu .config (values = tuple (self .dates ))
59+ self .date_menu .current (0 )
60+ return
61+ if response is not None :
4162 try :
42- url = f"https://www.nseindia.com/api/option-chain-indices?symbol={ self .index } "
43- request = self .session .get (self .url_oc , headers = self .headers , timeout = 5 )
44- self .cookies = dict (request .cookies )
45- response = self .session .get (url , headers = self .headers , timeout = 5 , cookies = self .cookies )
63+ json_data = response .json ()
4664 except Exception as err :
47- print (request )
4865 print (response )
49- print (err , "1" )
50- messagebox .showerror (title = "Error" , message = "Error in fetching dates.\n Please retry." )
51- self .dates .clear ()
52- self .dates = ["" ]
66+ print (err , "2" )
67+ json_data = {}
68+ else :
69+ json_data = {}
70+ if json_data == {}:
71+ messagebox .showerror (title = "Error" , message = "Error in fetching dates.\n Please retry." )
72+ self .dates .clear ()
73+ self .dates = ["" ]
74+ try :
5375 self .date_menu .config (values = tuple (self .dates ))
5476 self .date_menu .current (0 )
55- return
56- else :
77+ except TclError as err :
78+ print (err , "3" )
79+ return
80+ self .dates .clear ()
81+ for dates in json_data ['records' ]['expiryDates' ]:
82+ self .dates .append (dates )
83+ try :
84+ self .date_menu .config (values = tuple (self .dates ))
85+ self .date_menu .current (0 )
86+ except TclError as err :
87+ print (err , "4" )
88+
89+ return response , json_data
90+
91+ def get_data_refresh (self ):
92+ request = None
93+ response = None
94+ try :
95+ url = f"https://www.nseindia.com/api/option-chain-indices?symbol={ self .index } "
96+ response = self .session .get (url , headers = self .headers , timeout = 5 , cookies = self .cookies )
97+ if response .status_code == 401 :
98+ self .session .close ()
99+ self .session = requests .Session ()
100+ url = f"https://www.nseindia.com/api/option-chain-indices?symbol={ self .index } "
101+ request = self .session .get (self .url_oc , headers = self .headers , timeout = 5 )
102+ self .cookies = dict (request .cookies )
103+ response = self .session .get (url , headers = self .headers , timeout = 5 , cookies = self .cookies )
104+ print ("reset cookies" )
105+ except Exception as err :
106+ print (request )
107+ print (response )
108+ print (err , "5" )
57109 try :
110+ self .session .close ()
111+ self .session = requests .Session ()
58112 url = f"https://www.nseindia.com/api/option-chain-indices?symbol={ self .index } "
113+ request = self .session .get (self .url_oc , headers = self .headers , timeout = 5 )
114+ self .cookies = dict (request .cookies )
59115 response = self .session .get (url , headers = self .headers , timeout = 5 , cookies = self .cookies )
60- if response .status_code == 401 :
61- self .session .close ()
62- self .session = requests .Session ()
63- url = f"https://www.nseindia.com/api/option-chain-indices?symbol={ self .index } "
64- request = self .session .get (self .url_oc , headers = self .headers , timeout = 5 )
65- self .cookies = dict (request .cookies )
66- response = self .session .get (url , headers = self .headers , timeout = 5 , cookies = self .cookies )
67- print ("reset cookies" )
116+ print ("reset cookies" )
68117 except Exception as err :
69118 print (request )
70119 print (response )
71- print (err , "2 " )
120+ print (err , "6 " )
72121 return
73-
74122 if response is not None :
75123 try :
76124 json_data = response .json ()
77125 except Exception as err :
78126 print (response )
79- print (err , "3 " )
127+ print (err , "7 " )
80128 json_data = {}
81129 else :
82130 json_data = {}
83-
84- if self .first_run and json_data == {}:
85- messagebox .showerror (title = "Error" , message = "Error in fetching dates.\n Please retry." )
86- self .dates .clear ()
87- self .dates = ["" ]
88- try :
89- self .date_menu .config (values = tuple (self .dates ))
90- self .date_menu .current (0 )
91- except TclError as err :
92- print (err , "4" )
131+ if json_data == {}:
93132 return
94- elif json_data == {}:
95- return
96-
97- if self .first_run :
98- self .dates .clear ()
99- for dates in json_data ['records' ]['expiryDates' ]:
100- self .dates .append (dates )
101- try :
102- self .date_menu .config (values = tuple (self .dates ))
103- self .date_menu .current (0 )
104- except TclError as err :
105- print (err , "5" )
106133
107134 return response , json_data
108135
@@ -165,7 +192,7 @@ def start(self, event=None):
165192 self .login .destroy ()
166193 self .main_win ()
167194 except ValueError as err :
168- print (err , "6 " )
195+ print (err , "8 " )
169196 messagebox .showerror (title = "Error" , message = "Incorrect Strike Price.\n Please enter correct Strike Price." )
170197
171198 def change_state (self , event = None ):
@@ -192,7 +219,7 @@ def export(self, event=None):
192219 messagebox .showinfo (title = "Export Complete" ,
193220 message = "Data has been exported to NSE-Option-Chain-Analyzer.csv." )
194221 except Exception as err :
195- print (err , "7 " )
222+ print (err , "9 " )
196223 messagebox .showerror (title = "Export Failed" ,
197224 message = "An error occurred while exporting the data." )
198225
@@ -253,7 +280,7 @@ def about(self, event=None):
253280 heading .grid (row = 0 , column = 0 , columnspan = 2 , sticky = N + S + W + E )
254281 version_label = Label (self .info , text = "Version:" , relief = RIDGE )
255282 version_label .grid (row = 1 , column = 0 , sticky = N + S + W + E )
256- version_val = Label (self .info , text = "3.4 " , relief = RIDGE )
283+ version_val = Label (self .info , text = "3.5 " , relief = RIDGE )
257284 version_val .grid (row = 1 , column = 1 , sticky = N + S + W + E )
258285 dev_label = Label (self .info , text = "Developer:" , relief = RIDGE )
259286 dev_label .grid (row = 2 , column = 0 , sticky = N + S + W + E )
@@ -636,7 +663,7 @@ def main(self):
636663 try :
637664 index = int (df [df ['Strike Price' ] == self .sp ].index .tolist ()[0 ])
638665 except IndexError as err :
639- print (err , "8 " )
666+ print (err , "10 " )
640667 messagebox .showerror (title = "Error" ,
641668 message = "Incorrect Strike Price.\n Please enter correct Strike Price." )
642669 self .root .destroy ()
0 commit comments