Пример #1
0
def import_vdn_dataset_url(server, url, user, cached_response):
    response = None
    try:
        r = requests.get(url)
        response = r.json()
    except:
        pass
    if not response:
        response = cached_response
    video = Video()
    video.description = "import from {} : {} ".format(server.url,
                                                      response['description'])
    if user:
        video.uploader = user
    video.name = response['name']
    video.save()
    if response['download_url']:
        p = processing.DVAPQLProcess()
        query = {
            'process_type':
            DVAPQL.PROCESS,
            'tasks': [{
                'arguments': {
                    'source': 'VDN_URL',
                    'url': response['download_url']
                },
                'video_id': video.pk,
                'operation': 'perform_import',
            }]
        }
        p.create_from_json(j=query, user=user)
        p.launch()
    elif response['aws_key'] and response['aws_bucket']:
        p = processing.DVAPQLProcess()
        query = {
            'process_type':
            DVAPQL.PROCESS,
            'tasks': [{
                'arguments': {
                    'source': 'VDN_S3',
                    'key': response['aws_key'],
                    'bucket': response['aws_bucket']
                },
                'video_id': video.pk,
                'operation': 'perform_import',
            }]
        }
        p.create_from_json(j=query, user=user)
        p.launch()
    else:
        raise NotImplementedError
Пример #2
0
def import_vdn_detector_url(server, url, user, cached_response):
    response = None
    try:
        r = requests.get(url)
        response = r.json()
    except:
        pass
    if not response:
        response = cached_response
    detector = Detector()
    detector.name = response['name']
    detector.detector_type = response.get('detector_type', detector.YOLO)
    detector.save()
    if response.get('download_url', False):
        p = processing.DVAPQLProcess()
        query = {
            'process_type':
            DVAPQL.PROCESS,
            'tasks': [{
                'arguments': {
                    'detector_pk': detector.pk,
                    'download_url': response['download_url']
                },
                'operation': 'perform_detector_import',
            }]
        }
        p.create_from_json(j=query, user=user)
        p.launch()
    elif response.get('aws_key', False) and response.get('aws_bucket', False):
        raise NotImplementedError
    else:
        raise NotImplementedError
Пример #3
0
def import_vdn_detector_url(server, url, user):
    r = requests.get(url)
    response = r.json()
    vdn_detector = create_vdn_detector(response, server)
    detector = CustomDetector()
    detector.name = vdn_detector.name
    detector.vdn_detector = vdn_detector
    detector.save()
    if vdn_detector.download_url:
        p = processing.DVAPQLProcess()
        query = {
            'process_type':
            DVAPQL.PROCESS,
            'tasks': [{
                'arguments': {
                    'detector_pk': detector.pk
                },
                'operation': 'perform_detector_import',
            }]
        }
        p.create_from_json(j=query, user=user)
        p.launch()
    elif vdn_detector.aws_key and vdn_detector.aws_bucket:
        raise NotImplementedError
    else:
        raise NotImplementedError
Пример #4
0
def handle_youtube_video(name, url, extract=True, user=None, rate=30, rescale=0):
    video = Video()
    if user:
        video.uploader = user
    video.name = name
    video.url = url
    video.youtube_video = True
    video.save()
    if extract:
        p = processing.DVAPQLProcess()
        query = {
            'process_type': DVAPQL.PROCESS,
            'tasks': [
                {
                    'arguments': {'next_tasks': [
                        {'operation': 'decode_video',
                         'arguments': {
                             'rate': rate,
                             'rescale': rescale,
                             'next_tasks': settings.DEFAULT_PROCESSING_PLAN
                         }
                         }
                    ]},
                    'video_id': video.pk,
                    'operation': 'segment_video',
                }
            ]
        }
        p.create_from_json(j=query, user=user)
        p.launch()
    return video
Пример #5
0
def delete_video_object(video_pk, deleter, garbage_collection=True):
    video = Video.objects.get(pk=video_pk)
    deleted = DeletedVideo()
    deleted.name = video.name
    deleted.deleter = deleter
    deleted.uploader = video.uploader
    deleted.url = video.url
    deleted.description = video.description
    deleted.original_pk = video_pk
    deleted.save()
    video.delete()
    if garbage_collection:
        p = processing.DVAPQLProcess()
        query = {
            'process_type':
            DVAPQL.PROCESS,
            'tasks': [{
                'arguments': {
                    'video_pk': video.pk
                },
                'operation': 'delete_video_by_id',
            }]
        }
        p.create_from_json(j=query, user=deleter)
        p.launch()
Пример #6
0
def handle_downloaded_file(downloaded, video, name, extract=True, user=None, rate=30, rescale=0):
    video.name = name
    video.save()
    filename = downloaded.split('/')[-1]
    if filename.endswith('.dva_export.zip'):
        create_video_folders(video, create_subdirs=False)
        os.rename(downloaded, '{}/{}/{}.{}'.format(settings.MEDIA_ROOT, video.pk, video.pk, filename.split('.')[-1]))
        video.uploaded = True
        video.save()
        operation = 'import_video_by_id'
        import_video_task = TEvent()
        import_video_task.video = video
        import_video_task.save()
        app.send_task(name=operation, args=[import_video_task.pk, ], queue=settings.TASK_NAMES_TO_QUEUE[operation])
    elif filename.endswith('.mp4') or filename.endswith('.flv') or filename.endswith('.zip'):
        create_video_folders(video, create_subdirs=True)
        os.rename(downloaded,
                  '{}/{}/video/{}.{}'.format(settings.MEDIA_ROOT, video.pk, video.pk, filename.split('.')[-1]))
        video.uploaded = True
        if filename.endswith('.zip'):
            video.dataset = True
        video.save()
        if extract:
            p = processing.DVAPQLProcess()
            if video.dataset:
                query = {
                    'process_type':DVAPQL.PROCESS,
                    'tasks':[
                        {
                            'arguments':{'rate': rate, 'rescale': rescale,'next_tasks':settings.DEFAULT_PROCESSING_PLAN},
                            'video_id':video.pk,
                            'operation': 'extract_frames',
                        }
                    ]
                }
            else:
                query = {
                    'process_type':DVAPQL.PROCESS,
                    'tasks':[
                        {
                            'arguments':{'next_tasks':[
                                             {'operation':'decode_video',
                                              'arguments':{
                                                   'rate': rate,
                                                   'rescale': rescale,
                                                   'next_tasks':settings.DEFAULT_PROCESSING_PLAN
                                               }
                                              }
                                            ]},
                            'video_id':video.pk,
                            'operation': 'segment_video',
                        }
                    ]
                }
            p.create_from_json(j=query,user=user)
            p.launch()
    else:
        raise ValueError, "Extension {} not allowed".format(filename.split('.')[-1])
    return video
Пример #7
0
def import_vdn_dataset_url(server, url, user):
    r = requests.get(url)
    response = r.json()
    vdn_dataset = create_dataset(response, server)
    vdn_dataset.save()
    video = Video()
    if user:
        video.uploader = user
    video.name = vdn_dataset.name
    video.vdn_dataset = vdn_dataset
    video.save()
    if vdn_dataset.download_url:
        p = processing.DVAPQLProcess()
        query = {
            'process_type':
            DVAPQL.PROCESS,
            'tasks': [{
                'arguments': {
                    'source': 'VDN_URL'
                },
                'video_id': video.pk,
                'operation': 'perform_import',
            }]
        }
        p.create_from_json(j=query, user=user)
        p.launch()
    elif vdn_dataset.aws_key and vdn_dataset.aws_bucket:
        p = processing.DVAPQLProcess()
        query = {
            'process_type':
            DVAPQL.PROCESS,
            'tasks': [{
                'arguments': {
                    'source': 'VDN_S3'
                },
                'video_id': video.pk,
                'operation': 'perform_import',
            }]
        }
        p.create_from_json(j=query, user=user)
        p.launch()
    else:
        raise NotImplementedError
Пример #8
0
def handle_uploaded_file(f, name, extract=True, user=None, rate=30, rescale=0):
    video = Video()
    if user:
        video.uploader = user
    video.name = name
    video.save()
    primary_key = video.pk
    filename = f.name
    filename = filename.lower()
    if filename.endswith('.dva_export.zip'):
        create_video_folders(video, create_subdirs=False)
        with open('{}/{}/{}.{}'.format(settings.MEDIA_ROOT, video.pk, video.pk, filename.split('.')[-1]),
                  'wb+') as destination:
            for chunk in f.chunks():
                destination.write(chunk)
        video.uploaded = True
        video.save()
        task_name = 'import_video_by_id'
        import_video_task = TEvent()
        import_video_task.video = video
        import_video_task.save()
        app.send_task(name=task_name, args=[import_video_task.pk, ], queue=settings.TASK_NAMES_TO_QUEUE[task_name])
    elif filename.endswith('.mp4') or filename.endswith('.flv') or filename.endswith('.zip'):
        create_video_folders(video, create_subdirs=True)
        with open('{}/{}/video/{}.{}'.format(settings.MEDIA_ROOT, video.pk, video.pk, filename.split('.')[-1]),
                  'wb+') as destination:
            for chunk in f.chunks():
                destination.write(chunk)
        video.uploaded = True
        if filename.endswith('.zip'):
            video.dataset = True
        video.save()
        if extract:
            p = processing.DVAPQLProcess()
            query = {
                'process_type':DVAPQL.PROCESS,
                'tasks':[
                    {
                        'arguments_json':{'rate': rate, 'rescale': rescale},
                        'video_id':video.pk,
                        'operation': 'extract_frames' if video.dataset else 'segment_video',
                    }
                ]
            }
            p.create_from_json(j=query,user=user)
            p.launch()
    else:
        raise ValueError, "Extension {} not allowed".format(filename.split('.')[-1])
    return video
Пример #9
0
def delete_video_object(video_pk, deleter):
    p = processing.DVAPQLProcess()
    query = {
        'process_type':
        DVAPQL.PROCESS,
        'tasks': [{
            'arguments': {
                'video_pk': video_pk,
                'deleter_pk': deleter.pk
            },
            'operation': 'perform_deletion',
        }]
    }
    p.create_from_json(j=query, user=deleter)
    p.launch()
Пример #10
0
def handle_uploaded_file(f,
                         name,
                         extract=True,
                         user=None,
                         rate=None,
                         rescale=None):
    if rate is None:
        rate = defaults.DEFAULT_RATE
    if rescale is None:
        rescale = defaults.DEFAULT_RESCALE
    video = Video()
    if user:
        video.uploader = user
    video.name = name
    video.save()
    filename = f.name
    filename = filename.lower()
    if filename.endswith('.dva_export.zip'):
        video.create_directory(create_subdirs=False)
        with open(
                '{}/{}/{}.{}'.format(settings.MEDIA_ROOT, video.pk, video.pk,
                                     filename.split('.')[-1]),
                'wb+') as destination:
            for chunk in f.chunks():
                destination.write(chunk)
        video.uploaded = True
        video.save()
        p = processing.DVAPQLProcess()
        query = {
            'process_type':
            DVAPQL.PROCESS,
            'tasks': [{
                'arguments': {
                    'source': 'LOCAL'
                },
                'video_id': video.pk,
                'operation': 'perform_import',
            }]
        }
        p.create_from_json(j=query, user=user)
        p.launch()
    elif filename.endswith('.mp4') or filename.endswith(
            '.flv') or filename.endswith('.zip'):
        video.create_directory(create_subdirs=True)
        with open(
                '{}/{}/video/{}.{}'.format(settings.MEDIA_ROOT, video.pk,
                                           video.pk,
                                           filename.split('.')[-1]),
                'wb+') as destination:
            for chunk in f.chunks():
                destination.write(chunk)
        video.uploaded = True
        if filename.endswith('.zip'):
            video.dataset = True
        video.save()
        if extract:
            p = processing.DVAPQLProcess()
            if video.dataset:
                query = {
                    'process_type':
                    DVAPQL.PROCESS,
                    'tasks': [{
                        'arguments': {
                            'rescale': rescale,
                            'next_tasks':
                            defaults.DEFAULT_PROCESSING_PLAN_DATASET
                        },
                        'video_id': video.pk,
                        'operation': 'perform_dataset_extraction',
                    }]
                }
            else:
                query = {
                    'process_type':
                    DVAPQL.PROCESS,
                    'tasks': [{
                        'arguments': {
                            'next_tasks': [{
                                'operation': 'perform_video_decode',
                                'arguments': {
                                    'segments_batch_size':
                                    defaults.DEFAULT_SEGMENTS_BATCH_SIZE,
                                    'rate':
                                    rate,
                                    'rescale':
                                    rescale,
                                    'next_tasks':
                                    defaults.DEFAULT_PROCESSING_PLAN_VIDEO
                                }
                            }]
                        },
                        'video_id': video.pk,
                        'operation': 'perform_video_segmentation',
                    }]
                }
            p.create_from_json(j=query, user=user)
            p.launch()
    else:
        raise ValueError, "Extension {} not allowed".format(
            filename.split('.')[-1])
    return video