pandora/pandora/annotation/management/commands/import_srt.py

55 lines
1.7 KiB
Python
Raw Normal View History

2013-03-06 14:08:42 +00:00
# -*- coding: utf-8 -*-
2018-07-29 21:12:56 +01:00
from django.conf import settings
from django.contrib.auth import get_user_model
2013-03-06 14:08:42 +00:00
from django.core.management.base import BaseCommand
from django.db import transaction
import ox
import app.monkey_patch
2013-03-06 14:08:42 +00:00
from item.models import Item
2018-12-31 14:48:10 +01:00
from ... import models, tasks
2013-03-06 14:08:42 +00:00
2018-07-29 21:12:56 +01:00
User = get_user_model()
2013-03-06 14:08:42 +00:00
class Command(BaseCommand):
"""
import annotations
"""
2016-07-01 18:10:01 +02:00
help = 'import annotations from srt or vtt'
2018-12-31 14:48:10 +01:00
args = 'username item layer filename.srt'
2018-06-19 20:36:22 +02:00
def add_arguments(self, parser):
parser.add_argument('username', help='username')
parser.add_argument('item', help='item')
2018-12-31 14:48:10 +01:00
parser.add_argument('layer', help='layer')
2018-06-19 20:36:22 +02:00
parser.add_argument('filename', help='filename.srt')
2013-03-06 14:08:42 +00:00
def handle(self, *args, **options):
2018-06-19 20:36:22 +02:00
username = options['username']
public_id = options['item']
layer_id = options['layer']
filename = options['filename']
2013-03-06 14:08:42 +00:00
user = User.objects.get(username=username)
2014-09-19 12:26:46 +00:00
item = Item.objects.get(public_id=public_id)
2017-02-16 14:24:51 +01:00
layer = list(filter(lambda l: l['id'] == layer_id, settings.CONFIG['layers']))[0]
2013-03-06 14:08:42 +00:00
2016-07-01 18:10:01 +02:00
if filename.endswith('.vtt'):
annotations = ox.vtt.load(filename)
else:
annotations = ox.srt.load(filename)
2016-02-18 16:19:26 +05:30
print('importing %d annotations into %s/%s' % (len(annotations), public_id, layer_id))
2013-03-06 14:19:13 +00:00
for i in range(len(annotations)-1):
if annotations[i]['out'] == annotations[i+1]['in']:
annotations[i]['out'] = annotations[i]['out'] - 0.001
2018-12-31 14:48:10 +01:00
tasks.add_annotations.delay({
'item': item.public_id,
'layer': layer_id,
'user': username,
'annotations': annotations
})