} if not end: end = toLocal(datetime.datetime.now()).date() with open(self.res, 'rb') as csvfile: content = csvfile.readlines() return [ [ measure for measure in ( extract(line) for line in content[1:] ) if measure['datetime'].date() == date # TODO: la mare dels ous ] for date in daterange(start, end + datetime.timedelta(days=1)) ] def disconnect(self): pass def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): pass register("csv", CSVProvider) # vim: et ts=4 sw=4
self.date_fmt.format(**locals())).content def extract(self, date, content): import xlrd sheets = [u'Dades Instantaneas', u'Corba de carrega', u'Sondes', u'Dades Resumides'] book = xlrd.open_workbook(file_contents=content) if book.nsheets != 4 or set(book.sheet_names()) != set(self.sheet_names): raise Exception('Failed parsing data') sheet = book.sheet_by_name('Dades Resumides') var_names = [cell.value for cell in sheet.row(0)] if sheet.ncols != 4 or sheet.nrows != 25 or set(var_names) != set(self.var_names): raise Exception('Corruputed data') return [{'datetime': datetime.datetime.combine(date,datetime.time.min)+datetime.timedelta(hours=3), 'ae': sheet.row(idx)[1].value} for idx in range(1,25)] def get(self, start, end=None): return [self.extract(date, self.download(date)) for date in daterange(start, end)] def disconnect(self): pass def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): pass register("tfm", TFMProvider)
client.cwd(self.res['path']) client.retrbinary('RETR ' + filename, callback=sio.write) except Exception as e: raise BaseProviderDownloadError('Failed downloading %s' % filename) finally: client.quit() sio.seek(0) return sio.read().splitlines() def get(self, start, end): assert start is None or type(start)==datetime.date, ( "start date should be a date but is {}".format(start)) assert end is None or type(end)==datetime.date, ( "start date should be a date but is {}".format(end)) if not end: end = toLocal(datetime.datetime.now()).date() return [self.extract(self.download(date), date) for date in daterange(start, end)] def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): pass register("monsol", MonsolProvider) # vim: et ts=4 sw=4