@@ -102,6 +102,7 @@ def _get_metadata(self):
102
102
"""Get markets and engines for the given symbols"""
103
103
104
104
markets_n_engines = {}
105
+ boards = {}
105
106
106
107
for symbol in self .symbols :
107
108
response = self ._get_response (self .__url_metadata .format (symbol = symbol ))
@@ -130,6 +131,11 @@ def _get_metadata(self):
130
131
markets_n_engines [symbol ].append (
131
132
(fields [5 ], fields [7 ])
132
133
) # market and engine
134
+
135
+ if fields [14 ] == "1" : # main board for symbol
136
+ symbol = symbol .upper ()
137
+ boards [symbol ] = fields [1 ]
138
+
133
139
if symbol not in markets_n_engines :
134
140
raise IOError (
135
141
"{} request returned no metadata: {}\n "
@@ -141,13 +147,14 @@ def _get_metadata(self):
141
147
)
142
148
if symbol in markets_n_engines :
143
149
markets_n_engines [symbol ] = list (set (markets_n_engines [symbol ]))
144
- return markets_n_engines
150
+ return markets_n_engines , boards
145
151
146
152
def read (self ):
147
153
"""Read data"""
148
154
155
+ markets_n_engines , boards = self ._get_metadata ()
149
156
try :
150
- self .__markets_n_engines = self . _get_metadata ()
157
+ self .__markets_n_engines = markets_n_engines
151
158
152
159
urls = self .url # generate urls per symbols
153
160
dfs = [] # an array of pandas dataframes per symbol to concatenate
@@ -198,9 +205,16 @@ def read(self):
198
205
"check URL or correct a date" .format (self .__class__ .__name__ )
199
206
)
200
207
elif len (dfs ) > 1 :
201
- return concat (dfs , axis = 0 , join = "outer" , sort = True )
208
+ b = concat (dfs , axis = 0 , join = "outer" , sort = True )
202
209
else :
203
- return dfs [0 ]
210
+ b = dfs [0 ]
211
+
212
+ result = pd .DataFrame ()
213
+ for secid in list (set (b ["SECID" ].tolist ())):
214
+ part = b [b ["BOARDID" ] == boards [secid ]]
215
+ result = result .append (part )
216
+ result = result .drop_duplicates ()
217
+ return result
204
218
205
219
def _read_url_as_String (self , url , params = None ):
206
220
"""Open an url (and retry)"""
0 commit comments