12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import os
- import dm
- import datetime
- import logging
- import logging.config
- import xdg.BaseDirectory
- APP_NAME = 'recofoo'
- LOG_INI = 'log.ini'
- DATA_PATH = xdg.BaseDirectory.save_data_path(APP_NAME)
- CONFIG_PATH = xdg.BaseDirectory.save_config_path(APP_NAME)
- TIMESTAMP_PATH = os.path.join(DATA_PATH, 'timestamp')
- def get_last_timestamp():
- if not os.path.exists(TIMESTAMP_PATH):
- return datetime.datetime.min
- with open(TIMESTAMP_PATH) as f:
- time = f.read()
- return datetime.datetime.strptime(time, '%Y-%m-%dT%H:%M:%S')
- def update_timestamp(timestamp):
- with open(TIMESTAMP_PATH, 'w') as f:
- f.write(timestamp.strftime('%Y-%m-%dT%H:%M:%S'))
- def configure_logging():
- config_path = os.path.join(CONFIG_PATH, LOG_INI)
- log_path = LOG_INI if os.path.exists(LOG_INI) else None
- if not log_path:
- log_path = config_path if os.path.exists(config_path) else None
- if log_path:
- logging.config.fileConfig(log_path)
- else:
- logging.basicConfig(level=logging.INFO)
- class Application(object):
- def __init__(self):
- self.client = dm.Client()
- self.log = logging.getLogger(APP_NAME)
- def run(self):
- last_update = get_last_timestamp()
- for oid in self.client.get_object_ids(since=last_update):
- self.reconstruct(oid)
- now = datetime.datetime.now()
- update_timestamp(now)
- def reconstruct(self, oid):
- obj = self.client.get_object(oid)
- self.log.info("Reconstructing {}".format(obj.identifier))
- if __name__ == '__main__':
- configure_logging()
- Application().run()
|