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))