@@ -34,75 +34,102 @@ def __init__(self, window: Tk):
34
34
self .login_win (window )
35
35
36
36
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 ):
37
43
request = None
38
44
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 :
41
62
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 ()
46
64
except Exception as err :
47
- print (request )
48
65
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 :
53
75
self .date_menu .config (values = tuple (self .dates ))
54
76
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" )
57
109
try :
110
+ self .session .close ()
111
+ self .session = requests .Session ()
58
112
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 )
59
115
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" )
68
117
except Exception as err :
69
118
print (request )
70
119
print (response )
71
- print (err , "2 " )
120
+ print (err , "6 " )
72
121
return
73
-
74
122
if response is not None :
75
123
try :
76
124
json_data = response .json ()
77
125
except Exception as err :
78
126
print (response )
79
- print (err , "3 " )
127
+ print (err , "7 " )
80
128
json_data = {}
81
129
else :
82
130
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 == {}:
93
132
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" )
106
133
107
134
return response , json_data
108
135
@@ -165,7 +192,7 @@ def start(self, event=None):
165
192
self .login .destroy ()
166
193
self .main_win ()
167
194
except ValueError as err :
168
- print (err , "6 " )
195
+ print (err , "8 " )
169
196
messagebox .showerror (title = "Error" , message = "Incorrect Strike Price.\n Please enter correct Strike Price." )
170
197
171
198
def change_state (self , event = None ):
@@ -192,7 +219,7 @@ def export(self, event=None):
192
219
messagebox .showinfo (title = "Export Complete" ,
193
220
message = "Data has been exported to NSE-Option-Chain-Analyzer.csv." )
194
221
except Exception as err :
195
- print (err , "7 " )
222
+ print (err , "9 " )
196
223
messagebox .showerror (title = "Export Failed" ,
197
224
message = "An error occurred while exporting the data." )
198
225
@@ -253,7 +280,7 @@ def about(self, event=None):
253
280
heading .grid (row = 0 , column = 0 , columnspan = 2 , sticky = N + S + W + E )
254
281
version_label = Label (self .info , text = "Version:" , relief = RIDGE )
255
282
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 )
257
284
version_val .grid (row = 1 , column = 1 , sticky = N + S + W + E )
258
285
dev_label = Label (self .info , text = "Developer:" , relief = RIDGE )
259
286
dev_label .grid (row = 2 , column = 0 , sticky = N + S + W + E )
@@ -636,7 +663,7 @@ def main(self):
636
663
try :
637
664
index = int (df [df ['Strike Price' ] == self .sp ].index .tolist ()[0 ])
638
665
except IndexError as err :
639
- print (err , "8 " )
666
+ print (err , "10 " )
640
667
messagebox .showerror (title = "Error" ,
641
668
message = "Incorrect Strike Price.\n Please enter correct Strike Price." )
642
669
self .root .destroy ()
0 commit comments