pandora_client_eightfiftyeight/mosireen.py
2016-11-05 15:55:06 +01:00

68 lines
2.4 KiB
Python

'''
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<day>\d+|NA)_(?P<month>\d+|NA)_(?P<year>\d{4})((-(?P<tilday>\d+|NA)_(?P<tilmonth>\d+|NA)_(?P<tilyear>\d{4}))?)/(?P<location1>.+?)/(?P<location2>.+?)/(?P<subject1>.+?)/(?P<shooter>.+?)/((?P<subject2>.+?)/|).*').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']],
'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