@@ -102,6 +102,7 @@ def _get_metadata(self):
102102 """Get markets and engines for the given symbols"""
103103
104104 markets_n_engines = {}
105+ boards = {}
105106
106107 for symbol in self .symbols :
107108 response = self ._get_response (self .__url_metadata .format (symbol = symbol ))
@@ -130,6 +131,11 @@ def _get_metadata(self):
130131 markets_n_engines [symbol ].append (
131132 (fields [5 ], fields [7 ])
132133 ) # market and engine
134+
135+ if fields [14 ] == "1" : # main board for symbol
136+ symbol_U = symbol .upper ()
137+ boards [symbol_U ] = fields [1 ]
138+
133139 if symbol not in markets_n_engines :
134140 raise IOError (
135141 "{} request returned no metadata: {}\n "
@@ -141,13 +147,14 @@ def _get_metadata(self):
141147 )
142148 if symbol in markets_n_engines :
143149 markets_n_engines [symbol ] = list (set (markets_n_engines [symbol ]))
144- return markets_n_engines
150+ return markets_n_engines , boards
145151
146- def read (self ):
147- """Read data"""
152+ def read_all_boards (self ):
153+ """Read all data from every board for every ticker """
148154
155+ markets_n_engines , boards = self ._get_metadata ()
149156 try :
150- self .__markets_n_engines = self . _get_metadata ()
157+ self .__markets_n_engines = markets_n_engines
151158
152159 urls = self .url # generate urls per symbols
153160 dfs = [] # an array of pandas dataframes per symbol to concatenate
@@ -198,9 +205,21 @@ def read(self):
198205 "check URL or correct a date" .format (self .__class__ .__name__ )
199206 )
200207 elif len (dfs ) > 1 :
201- return concat (dfs , axis = 0 , join = "outer" , sort = True )
208+ b = concat (dfs , axis = 0 , join = "outer" , sort = True )
202209 else :
203- return dfs [0 ]
210+ b = dfs [0 ]
211+ return b
212+
213+ def read (self ):
214+ """Read data from the primary board for each ticker"""
215+ markets_n_engines , boards = self ._get_metadata ()
216+ b = self .read_all_boards ()
217+ result = pd .DataFrame ()
218+ for secid in list (set (b ["SECID" ].tolist ())):
219+ part = b [b ["BOARDID" ] == boards [secid ]]
220+ result = result .append (part )
221+ result = result .drop_duplicates ()
222+ return result
204223
205224 def _read_url_as_String (self , url , params = None ):
206225 """Open an url (and retry)"""
0 commit comments