# -*- coding: utf-8 -*- from media.monitor.handler import ReportHandler import media.monitor.pure as mmp from media.monitor.log import Loggable from media.monitor.exceptions import BadSongFile class Organizer(ReportHandler,Loggable): def __init__(self, channel, target_path): self.channel = channel self.target_path = target_path super(Organizer, self).__init__(signal=self.channel.signal) def handle(self, sender, event): """Intercept events where a new file has been added to the organize directory and place it in the correct path (starting with self.target_path)""" try: normal_md = mmp.normalized_metadata(event.metadata, event.path) new_path = mmp.organized_path(event.path, self.target_path, normal_md) mmp.magic_move(event.path, new_path) self.logger.info('Organized: "%s" into "%s"' % (event.path, new_path)) except BadSongFile as e: self.report_problem_file(event=event, exception=e) # probably general error in mmp.magic.move... except Exception as e: self.report_problem_file(event=event, exception=e)