예제 #1
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()
        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)
        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:
            extract_frames_task = TEvent()
            extract_frames_task.arguments_json = json.dumps({'rate': rate, 'rescale': rescale})
            extract_frames_task.video = video
            task_name = 'extract_frames_by_id'
            extract_frames_task.operation = task_name
            extract_frames_task.save()
            app.send_task(name=task_name, args=[extract_frames_task.pk, ],
                          queue=settings.TASK_NAMES_TO_QUEUE[task_name])
    else:
        raise ValueError, "Extension {} not allowed".format(filename.split('.')[-1])
    return video
예제 #2
0
def handle_youtube_video(name,
                         url,
                         extract=True,
                         user=None,
                         perform_scene_detection=True,
                         rate=30,
                         rescale=0):
    video = Video()
    if user:
        video.uploader = user
    video.name = name
    video.url = url
    video.youtube_video = True
    video.save()
    task_name = 'extract_frames_by_id'
    extract_frames_task = TEvent()
    extract_frames_task.video = video
    extract_frames_task.operation = task_name
    extract_frames_task.arguments_json = json.dumps({
        'perform_scene_detection': perform_scene_detection,
        'rate': rate,
        'rescale': rescale
    })
    extract_frames_task.save()
    if extract:
        app.send_task(name=task_name,
                      args=[
                          extract_frames_task.pk,
                      ],
                      queue=settings.TASK_NAMES_TO_QUEUE[task_name])
    return video
예제 #3
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()
        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)
        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:
            extract_frames_task = TEvent()
            extract_frames_task.arguments_json = json.dumps({'rate': rate, 'rescale': rescale})
            extract_frames_task.video = video
            task_name = 'extract_frames' if video.dataset else 'segment_video'
            extract_frames_task.operation = task_name
            extract_frames_task.save()
            app.send_task(name=task_name, args=[extract_frames_task.pk, ],
                          queue=settings.TASK_NAMES_TO_QUEUE[task_name])
    else:
        raise ValueError, "Extension {} not allowed".format(filename.split('.')[-1])
    return video
예제 #4
0
def handle_uploaded_file(f, name, extract=True, user=None, perform_scene_detection=True, 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:
            extract_frames_task = TEvent()
            extract_frames_task.arguments_json = json.dumps({'perform_scene_detection': perform_scene_detection,
                                                             'rate': rate,
                                                             'rescale': rescale})
            extract_frames_task.video = video
            task_name = 'extract_frames_by_id'
            extract_frames_task.operation = task_name
            extract_frames_task.save()
            app.send_task(name=task_name, args=[extract_frames_task.pk, ],
                          queue=settings.TASK_NAMES_TO_QUEUE[task_name])
    else:
        raise ValueError, "Extension {} not allowed".format(filename.split('.')[-1])
    return video
예제 #5
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()
    task_name = 'segment_video'
    extract_frames_task = TEvent()
    extract_frames_task.video = video
    extract_frames_task.operation = task_name
    extract_frames_task.arguments_json = json.dumps({'rate': rate,'rescale': rescale})
    extract_frames_task.save()
    if extract:
        app.send_task(name=task_name, args=[extract_frames_task.pk, ], queue=settings.TASK_NAMES_TO_QUEUE[task_name])
    return video
예제 #6
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:
        delete_task = TEvent()
        delete_task.arguments_json = json.dumps({'video_pk': video_pk})
        delete_task.operation = 'delete_video_by_id'
        delete_task.save()
        queue = settings.TASK_NAMES_TO_QUEUE[delete_task.operation]
        _ = app.send_task(name=delete_task.operation, args=[delete_task.pk], queue=queue)
예제 #7
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:
            extract_frames_task = TEvent()
            extract_frames_task.arguments_json = json.dumps({'rate': rate,'rescale': rescale})
            extract_frames_task.video = video
            task_name = 'extract_frames' if video.dataset else 'segment_video'
            extract_frames_task.operation = task_name
            extract_frames_task.save()
            app.send_task(name=task_name, args=[extract_frames_task.pk, ],
                          queue=settings.TASK_NAMES_TO_QUEUE[task_name])
    else:
        raise ValueError, "Extension {} not allowed".format(filename.split('.')[-1])
    return video
예제 #8
0
def create_event(e, v):
    de = TEvent()
    de.event_type = e.get('event_type', de.VIDEO)
    de.started = e.get('started', False)
    de.completed = e.get('completed', False)
    de.errored = e.get('errored', False)
    de.error_message = e.get('error_message', "")
    de.video_id = v.pk
    de.operation = e.get('operation', "")
    de.created = e['created']
    de.seconds = e.get('seconds', -1)
    de.file_name = e.get('file_name', "")
    de.key = e.get('key', "")
    de.bucket = e.get('bucket', "")
    de.requester_pays = e.get('requester_pays', False)
    de.clustering = e.get('clustering', None)
    de.arguments_json = e.get('arguments_json', {})
    de.task_id = e.get('task_id', "")
    return de
예제 #9
0
def create_event(e,v):
    de = TEvent()
    de.event_type = e.get('event_type',de.VIDEO)
    de.started = e.get('started',False)
    de.completed = e.get('completed',False)
    de.errored = e.get('errored',False)
    de.error_message = e.get('error_message',"")
    de.video_id = v.pk
    de.operation = e.get('operation',"")
    de.created = e['created']
    de.seconds = e.get('seconds',-1)
    de.file_name = e.get('file_name',"")
    de.key = e.get('key',"")
    de.bucket = e.get('bucket',"")
    de.requester_pays = e.get('requester_pays',False)
    de.clustering = e.get('clustering',None)
    de.arguments_json = e.get('arguments_json',"")
    de.task_id = e.get('task_id',"")
    return de
예제 #10
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:
        task_name = 'import_vdn_detector_file'
        import_vdn_detector_task = TEvent()
        import_vdn_detector_task.operation = task_name
        import_vdn_detector_task.arguments_json = json.dumps({'detector_pk': detector.pk})
        import_vdn_detector_task.save()
        app.send_task(name=task_name, args=[import_vdn_detector_task.pk, ],
                      queue=settings.TASK_NAMES_TO_QUEUE[task_name])
    elif vdn_detector.aws_key and vdn_detector.aws_bucket:
        raise NotImplementedError
    else:
        raise NotImplementedError
예제 #11
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:
        task_name = 'import_vdn_detector_file'
        import_vdn_detector_task = TEvent()
        import_vdn_detector_task.operation = task_name
        import_vdn_detector_task.arguments_json = json.dumps({'detector_pk': detector.pk})
        import_vdn_detector_task.save()
        app.send_task(name=task_name, args=[import_vdn_detector_task.pk, ],
                      queue=settings.TASK_NAMES_TO_QUEUE[task_name])
    elif vdn_detector.aws_key and vdn_detector.aws_bucket:
        raise NotImplementedError
    else:
        raise NotImplementedError