''' mosireen.py - pandora_client plugin custom parse_path for pandora_client to parse musereen archive paths in the form YYYY/MM_YYYY/DD_MM_YYYY/Location 1/Location 2/Subject 1/Cinematographer/Subject 2(optional)/MVI_2036.MOV ''' import re import ox import os def example_path(client): return '\t' + 'YYYY/MM_YYYY/DD_MM_YYYY/Location 1/Location 2/Subject 1/Shooter/Subject 2(optional)/MVI_2036.MOV' def parse_path(client, path, context): ''' args: client - Client instance path - path without volume prefix return: return None if file is ignored, dict with parsed item information otherwise ''' m = re.compile('^(\d{4})/(\d{2}|NA)_(\d{4})/(?P\d+|NA)_(?P\d+|NA)_(?P\d{4})((-(?P\d+|NA)_(?P\d+|NA)_(?P\d{4}))?)/(?P.+?)/(?P.+?)/(?P.+?)/(?P.+?)/((?P.+?)/|).*').match(path) if not m: return None info = m.groupdict() date = '%s-%s-%s' % (info['year'], info['month'], info['day']) if info['tilday']: date = '%s-%s-%s - %s-%s-%s' % (info['year'], info['month'], info['day'], info['tilyear'],info['tilmonth'],info['tilday']) for key in info: if info[key]: info[key] = info[key].replace('_', ' ') topic = info['subject1'].split(",") if info['subject2']: topic+=info['subject2'].split(",") title = "%s, %s (%s)" % (info['subject1'], info['subject2'], date) else: title = "%s (%s)" % (info['subject1'], date) title = "%s %s at %s, %s" % (title, info['shooter'],info['location2'],info['location1']) r = { 'cinematographer': info['shooter'].split(', '), 'date': date, 'location': '%s, %s' % (info['location2'], info['location1']), 'title': title, 'topic': topic } _info = ox.movie.parse_path(path) for key in ('extension', 'type'): r[key] = _info[key] return r def ignore_file(client, path): ''' return True if file should not even be considered. i.e. to filter out .DS_Store, empty files ''' filename = os.path.basename(path) if filename.startswith('._') \ or filename in ('.DS_Store',) \ or filename.endswith('~') \ or not os.path.exists(path) \ or os.stat(path).st_size == 0: return True return False