pandora_p_for_power/utils.py
2026-02-02 17:22:38 +01:00

78 lines
2.2 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 needs_update(src, out):
mtime_src = os.lstat(src).st_mtime
if os.path.exists(out)
mtime_out = os.lstat(out).st_mtime
else:
mtime_out = 0
#print("compare", src, out)
#print("ts", mtime_src, mtime_out, mtime_src > mtime_out)
if mtime_src > mtime_out:
return True
return False
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))