django_youtube/views.py
def direct_upload(request):
    """
    direct upload method
    starts with uploading video to our server
    then sends the video file to youtube

    param:
        (optional) `only_data`: if set, a json response is returns i.e. {'video_id':'124weg'}

    return:
        if `only_data` set, a json object.
        otherwise redirects to the video display page
    """
    if request.method == "POST":
        try:
            form = YoutubeDirectUploadForm(request.POST, request.FILES)
            # upload the file to our server
            if form.is_valid():
                uploaded_video = form.save()

                # send this file to youtube
                api = Api()
                api.authenticate()
                video_entry = api.upload_direct(uploaded_video.file_on_server.path, "Uploaded video from zuqqa")

                # get data from video entry
                swf_url = video_entry.GetSwfUrl()
                youtube_url = video_entry.id.text

                # getting video_id is tricky, I can only reach the url which
                # contains the video_id.
                # so the only option is to parse the id element
                # https://groups.google.com/forum/?fromgroups=#!topic/youtube-api-gdata/RRl_h4zuKDQ
                url_parts = youtube_url.split("/")
                url_parts.reverse()
                video_id = url_parts[0]

                # save video_id to video instance
                video = Video()
                video.user = request.user
                video.video_id = video_id
                video.title = 'tmp video'
                video.youtube_url = youtube_url
                video.swf_url = swf_url
                video.save()

                # send a signal
                video_created.send(sender=video, video=video)

                # delete the uploaded video instance
                uploaded_video.delete()

                # return the response
                return_only_data = request.GET.get('only_data')
                if return_only_data:
                    return HttpResponse(json.dumps({"video_id": video_id}), content_type="application/json")
                else:
                    # Redirect to the video page or the specified page
                    try:
                        next_url = settings.YOUTUBE_UPLOAD_REDIRECT_URL
                    except AttributeError:
                        next_url = reverse(
                            "django_youtube.views.video", kwargs={"video_id": video_id})

                    return HttpResponseRedirect(next_url)
        except:
            import sys
            logger.error("Unexpected error: %s - %s" % (sys.exc_info()[
                0], sys.exc_info()[1]))
            # @todo: proper error management
            return HttpResponse("error happened")

    form = YoutubeDirectUploadForm()

    if return_only_data:
        return HttpResponse(json.dumps({"error": 500}), content_type="application/json")
    else:
        return render_to_response(
            "django_youtube/direct-upload.html",
            {"form": form},
            context_instance=RequestContext(request)
        )
def direct_upload(request):
    if request.method == "POST":
        try:
            form = YoutubeDirectUploadForm(request.POST, request.FILES)
            # upload the file to our server
            if form.is_valid():
                uploaded_video = form.save()

                # send this file to youtube
                api = Api()
                api.authenticate()
                video_entry = api.upload_direct(uploaded_video.file_on_server.path, "Uploaded video from zuqqa")

                # get data from video entry
                swf_url = video_entry.GetSwfUrl()
                youtube_url = video_entry.id.text

                # getting video_id is tricky, I can only reach the url which
                # contains the video_id.
                # so the only option is to parse the id element
                # https://groups.google.com/forum/?fromgroups=#!topic/youtube-api-gdata/RRl_h4zuKDQ
                url_parts = youtube_url.split("/")
                url_parts.reverse()
                video_id = url_parts[0]

                # save video_id to video instance
                video = Video()
                video.user = request.user
                video.video_id = video_id
                video.title = 'tmp video'
                video.youtube_url = youtube_url
                video.swf_url = swf_url
                video.save()

                # send a signal
                video_created.send(sender=video, video=video)

                # delete the uploaded video instance
                uploaded_video.delete()

                # return the response
                return_only_data = request.GET.get('only_data')
                if return_only_data:
                    return HttpResponse(json.dumps({"video_id": video_id}), content_type="application/json")
                else:
                    # Redirect to the video page or the specified page
                    try:
                        next_url = settings.YOUTUBE_UPLOAD_REDIRECT_URL
                    except AttributeError:
                        next_url = reverse(
                            "django_youtube.views.video", kwargs={"video_id": video_id})

                    return HttpResponseRedirect(next_url)
        except:
            import sys
            logger.error("Unexpected error: %s - %s" % (sys.exc_info()[
                0], sys.exc_info()[1]))
            # @todo: proper error management
            return HttpResponse("error happened")

    form = YoutubeDirectUploadForm()

    if return_only_data:
        return HttpResponse(json.dumps({"error": 500}), content_type="application/json")
    else:
        return render_to_response(
            "django_youtube/direct-upload.html",
            {"form": form},
            context_instance=RequestContext(request)
        )
def direct_upload ( request ) : if request . method == "POST" : try : form = YoutubeDirectUploadForm ( request . POST , request . FILES ) # upload the file to our server if form . is_valid ( ) : uploaded_video = form . save ( ) # send this file to youtube api = Api ( ) api . authenticate ( ) video_entry = api . upload_direct ( uploaded_video . file_on_server . path , "Uploaded video from zuqqa" ) # get data from video entry swf_url = video_entry . GetSwfUrl ( ) youtube_url = video_entry . id . text # getting video_id is tricky, I can only reach the url which # contains the video_id. # so the only option is to parse the id element # https://groups.google.com/forum/?fromgroups=#!topic/youtube-api-gdata/RRl_h4zuKDQ url_parts = youtube_url . split ( "/" ) url_parts . reverse ( ) video_id = url_parts [ 0 ] # save video_id to video instance video = Video ( ) video . user = request . user video . video_id = video_id video . title = 'tmp video' video . youtube_url = youtube_url video . swf_url = swf_url video . save ( ) # send a signal video_created . send ( sender = video , video = video ) # delete the uploaded video instance uploaded_video . delete ( ) # return the response return_only_data = request . GET . get ( 'only_data' ) if return_only_data : return HttpResponse ( json . dumps ( { "video_id" : video_id } ) , content_type = "application/json" ) else : # Redirect to the video page or the specified page try : next_url = settings . YOUTUBE_UPLOAD_REDIRECT_URL except AttributeError : next_url = reverse ( "django_youtube.views.video" , kwargs = { "video_id" : video_id } ) return HttpResponseRedirect ( next_url ) except : import sys logger . error ( "Unexpected error: %s - %s" % ( sys . exc_info ( ) [ 0 ] , sys . exc_info ( ) [ 1 ] ) ) # @todo: proper error management return HttpResponse ( "error happened" ) form = YoutubeDirectUploadForm ( ) if return_only_data : return HttpResponse ( json . dumps ( { "error" : 500 } ) , content_type = "application/json" ) else : return render_to_response ( "django_youtube/direct-upload.html" , { "form" : form } , context_instance = RequestContext ( request ) )
direct upload method
    starts with uploading video to our server
    then sends the video file to youtube

    param:
        (optional) `only_data`: if set, a json response is returns i.e. {'video_id':'124weg'}

    return:
        if `only_data` set, a json object.
        otherwise redirects to the video display page
direct upload method starts with uploading video to our server then sends the video file to youtube