comixify/api/views.py

38 lines
1.2 KiB
Python
Raw Normal View History

2018-07-31 19:51:39 +00:00
from rest_framework.parsers import FormParser, MultiPartParser
from rest_framework.response import Response
from rest_framework.views import APIView
from comic_layout.comic_layout import LayoutGenerator
from keyframes.keyframes import KeyFramesExtractor
from style_transfer.style_transfer import StyleTransfer
from .models import Video, Comic
from .serializers import VideoSerializer
class Comixify(APIView):
parser_classes = (FormParser, MultiPartParser)
def post(self, request):
"""
Receives video, and returns comic image
"""
serializer = VideoSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
2018-08-20 23:00:22 +00:00
video_file = serializer.validated_data["file"]
video = Video.objects.create(file=video_file)
2018-07-31 19:51:39 +00:00
2018-08-20 23:00:22 +00:00
keyframes = KeyFramesExtractor.get_keyframes(video=video)
2018-07-31 19:51:39 +00:00
stylized_keyframes = StyleTransfer.get_stylized_frames(frames=keyframes)
comic_image = LayoutGenerator.get_layout(frames=stylized_keyframes)
comic = Comic.create_from_nparray(comic_image, video)
response = {
2018-08-20 23:00:22 +00:00
"status_message": "ok",
"comic": comic.file.url,
2018-07-31 19:51:39 +00:00
}
2018-08-20 23:00:22 +00:00
# Remove to spare storage
video.file.delete()
2018-07-31 19:51:39 +00:00
return Response(response)