66 lines
1.9 KiB
Python
66 lines
1.9 KiB
Python
import os
|
|
import re
|
|
|
|
def resolve_roman(s):
|
|
extra = re.compile(r'^\d+(.*?)$').findall(s)
|
|
if extra:
|
|
extra = extra[0].lower()
|
|
new = {
|
|
'i': '1', 'ii': '2', 'iii': '3', 'iv': '4', 'v': '5',
|
|
'vi': '6', 'vii': 7, 'viii': '8', 'ix': '9', 'x': '10'
|
|
}.get(extra, extra)
|
|
return s.replace(extra, new)
|
|
return s
|
|
|
|
def upgrade_originals():
|
|
import item.models
|
|
import itemlist.models
|
|
nt = itemlist.models.List.objects.get(name='No Type')
|
|
no = itemlist.models.List.objects.get(name='New Originals')
|
|
for i in nt.get_items(nt.user):
|
|
orig = item.models.Item.objects.get(data__title=i.get('title'), data__type=["Original"])
|
|
print(i, orig)
|
|
orig.files.all().update(selected=False)
|
|
i.files.all().update(item=orig)
|
|
orig.save()
|
|
orig.remove_poster()
|
|
orig.make_poster()
|
|
i.data['type'] = ['Empty']
|
|
i.save()
|
|
no.items.add(orig)
|
|
|
|
|
|
def remove_deselected_files():
|
|
import itemlist.models
|
|
il = itemlist.models.List.objects.get(name='New Originals')
|
|
for i in il.items.all():
|
|
changed = False
|
|
for f in i.files.filter(selected=False):
|
|
f.data.delete()
|
|
f.delete()
|
|
changed = True
|
|
if changed:
|
|
i.save()
|
|
|
|
def write_if_new(path, data, mode=''):
|
|
read_mode = 'r' + mode
|
|
write_mode = 'w' + mode
|
|
if os.path.exists(path):
|
|
with open(path, read_mode) as fd:
|
|
old = fd.read()
|
|
else:
|
|
old = ""
|
|
is_new = data != old
|
|
if path.endswith(".kdenlive"):
|
|
is_new = re.sub(r'\{.{36}\}', '', data) != re.sub(r'\{.{36}\}', '', old)
|
|
if is_new:
|
|
with open(path, write_mode) as fd:
|
|
fd.write(data)
|
|
return is_new
|
|
|
|
def format_duration(duration, fps, audio=False):
|
|
if audio:
|
|
return float('%0.5f' % (int(duration * fps) / fps))
|
|
else:
|
|
return float('%0.5f' % (round(duration * fps) / fps))
|
|
|