Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.shortcuts import render,redirect
- from .models import Subscription
- from django.contrib.auth import authenticate,login
- from django.contrib.auth.decorators import login_required
- from django.views import generic
- from django.views.generic import View
- from .forms import UserForm
- from django.http import HttpResponse
- from django.conf import settings
- from django.core.files.storage import FileSystemStorage
- import moviepy.editor as mp
- import timeit
- import cv2
- import argparse
- import os
- import authorize
- import functools
- from functools import cmp_to_key
- from PIL import Image
- import sys
- import copy
- fp = settings.MEDIA_ROOT+"/user"
- #os.rmdir(fp)
- # os.mkdir(fp)
- # os.mkdir(fp+"/mp3")
- # os.mkdir(fp+"/image")
- # os.mkdir(fp+"/video")
- path = settings.MEDIA_ROOT+"/user/image/"
- dirs = os.listdir(path)
- def resize(i):
- path2 = settings.MEDIA_ROOT + "/user/image/"
- dirs2 = os.listdir(path2)
- for item in dirs2:
- if os.path.isfile(path2 + item):
- im = Image.open(path2 + item)
- f, e = os.path.splitext(path2 + item)
- imResize = im.resize((1080, 720), Image.ANTIALIAS)
- imResize.save(path2 + str(i) + '.png', 'PNG', quality=90)
- i = i + 1
- os.remove(path2 + item)
- # Function to check if string can be cast to int
- def isnum(num):
- try:
- int(num)
- return True
- except:
- return False
- # Numerically sorts filenames
- def image_sort(x, y):
- x = int(x.split(".")[0])
- y = int(y.split(".")[0])
- return x - y
- def make_video(text, ado):
- print(text)
- path = settings.MEDIA_ROOT + "/user/image/"
- resize(1)
- # Construct the argument parser and parse the arguments
- # arg_parser = argparse.ArgumentParser()
- # arg_parser.add_argument("-e", "--extension", required=False, default='png',
- # help="Extension name. default is 'png'.")
- # arg_parser.add_argument("-o", "--output", required=False, default=settings.MEDIA_ROOT+"/image/", help="Output video file.")
- # arg_parser.add_argument("-d", "--directory", required=False, default=settings.MEDIA_ROOT+"/video/output.mp4", help="Specify image directory.")
- # arg_parser.add_argument("-fps", "--framerate", required=False, default='10', help="Set the video framerate.")
- # arg_parser.add_argument("-s", "--sort", required=False, default='numeric',
- # help="Determines the type of file-order sort that will be used.")
- # arg_parser.add_argument("-t", "--time", required=False, default='10',
- # help="Sets the framerate so that the video length matches the time in seconds.")
- # arg_parser.add_argument("-v", "--visual", required=False, default='false',
- # help="If 'true' then will display preview window.")
- # args = vars(arg_parser.parse_args())
- # Arguments
- dir_path = settings.MEDIA_ROOT+"/user/image/"
- ext = 'png'
- output = settings.MEDIA_ROOT+"/user/video/output.mp4"
- framerate = '10'
- sort_type = 'numeric'
- time = 30
- visual = 'false'
- # Flips 'visual' to a bool
- visual = visual == "true"
- # Sets the framerate to argument, or defaults to 10
- if not isnum(framerate):
- framerate = 10
- else:
- framerate = int(framerate)
- # Get the files from directory
- images2 = []
- for f in os.listdir(dir_path):
- if f.endswith(ext):
- images2.append(f)
- # Sort the files found in the directory
- if sort_type == "numeric":
- int_name = images2[0].split(".")[0]
- if isnum(int_name):
- images2 = sorted(images2, key=cmp_to_key(image_sort))
- else:
- print("Failed to sort numerically, switching to alphabetic sort")
- images2.sort()
- elif sort_type == "alphabetic":
- images2.sort()
- images = []
- h = 0
- # Change framerate to fit the time in seconds if a time has been specified.
- # Overrides the -fps arg
- if isnum(time):
- if int(len(images2)) < 20:
- mode = int(20 % len(images2))
- print('Mode' + str(mode) + ' length ' + str(len(images2)))
- for z in range(int(len(images2))):
- mode = mode - 1
- if mode >= 0:
- ac = 1 + int(20 / len(images2))
- else:
- ac = int(20 / len(images2))
- for k in range(int(ac)):
- print('z :' + str(z))
- images.append(images2[z])
- for w in range(10):
- images.append(settings.MEDIA_ROOT+"/user/brand/brand.png")
- else:
- print('Mode not')
- for l in range(int(len(images2))):
- images.append(images2[l])
- print('images ' + str(len(images)))
- # Determine the width and height from the first image
- # print(len(images))
- framerate = int(len(images) / int(time))
- print("Adjusting framerate to " + str(framerate))
- image_path = os.path.join(dir_path, images[0])
- frame = cv2.imread(image_path)
- if visual:
- cv2.imshow('video', frame)
- regular_size = os.path.getsize(image_path)
- height, width, channels = frame.shape
- # Define the codec and create VideoWriter object
- fourcc = cv2.VideoWriter_fourcc(*'mp4v') # Be sure to use lower case
- out = cv2.VideoWriter(output, fourcc, framerate, (width, height))
- for n, image in enumerate(images):
- image_path = os.path.join(dir_path, image)
- image_size = os.path.getsize(image_path)
- if image_size < 1:
- print("Cancelled: " + image)
- continue
- frame = cv2.imread(image_path)
- out.write(frame) # Write out frame to video
- if visual:
- cv2.imshow('video', frame)
- if (cv2.waitKey(1) & 0xFF) == ord('q'): # Hit `q` to exit
- break
- if n % 100 == 0:
- print("Frame " + str(n))
- # Release everything if job is finished
- out.release()
- cv2.destroyAllWindows()
- # my_clip = mpe.VideoFileClip(format(output))
- # audio_background = mpe.AudioFileClip('some_background.mp3')
- # final_audio = mpe.CompositeAudioClip([my_clip.audio, audio_background])
- # final_clip = my_clip.set_audio(final_audio)
- print("The output video is {}".format(output))
- start = timeit.default_timer()
- video1 = mp.VideoFileClip(settings.MEDIA_ROOT+"/user/video/output.mp4")
- audio = mp.AudioFileClip(settings.MEDIA_ROOT+"/user/mp3/"+ado)
- audio2 = audio.subclip(1, 20)
- final = mp.concatenate_videoclips([video1]).set_audio(audio2)
- # a = "Welcome hag adsj adb asadb aqssadbd. gd sdkd asdddb aa asdj adsfaccs. hghghj hghjggh. hghjg jhg. hghjghj"
- b = text.split(".")
- # print(b[0])
- for v in range(int(len(b))):
- b[v]=b[v].replace('\r', '')
- b[v]=b[v].replace('\n', '')
- # int('avik ' + b[v])
- if b[v]!='':
- final.write_videofile(settings.MEDIA_ROOT + "/user/video/" + b[v] + ".mp4")
- stop = timeit.default_timer()
- print('Time: ', stop - start)
- # dirs = os.listdir(path)
- # for item in dirs:
- # os.remove(path + item);
- # Create your views here.
- posts=[
- {
- 'author':'tarek',
- 'date':'12-21-12'
- },
- {
- 'author': 'tarek2',
- 'date': '12-21-122'
- },
- {
- 'author': 'tarek3',
- 'date': '132-21-12'
- }
- ]
- def home(request):
- context={
- 'posts': posts,
- 'title': 'home'
- }
- return render(request, 'polls/home.html', context);
- @login_required(redirect_field_name='admin/login')
- def about(request):
- return redirect('home')
- def simple_upload(request):
- if request.method == 'POST' and request.FILES.getlist('myfile') and request.POST['btn1']:
- txt = request.POST['test']
- ado = request.FILES['audio']
- ad = FileSystemStorage(location='media/user/mp3')
- adoname = ad.save(ado.name, ado)
- for afile in request.FILES.getlist('myfile'):
- fs = FileSystemStorage(location='media/user/image')
- filename = fs.save(afile.name, afile)
- uploaded_file_url = fs.url(filename)
- make_video(txt,adoname)
- return render(request, 'polls/home.html', {
- 'uploaded_file_url': adoname,
- })
- if request.method == 'POST' and request.POST['card'] and request.POST['btn2']:
- card = request.POST['card']
- authorize.Configuration.configure(
- authorize.Environment.TEST,
- '57vWge84HrX',
- '9ZTy3Rq3m4438L88',
- )
- result = authorize.Recurring.create({
- 'amount': 302.00,
- 'interval_length': 1,
- 'interval_unit': 'months',
- 'credit_card': {
- 'card_number': card,
- 'expiration_date': request.POST['mm']+"-"+request.POST['yy'],
- 'card_code': request.POST['card_code'],
- },
- })
- print(result.subscription_id)
- if result.subscription_id:
- msg='SUCCESS! GO AHEAD AND START'
- return render(request, 'polls/home.html', {
- 'msg': msg,
- })
- else:
- msg = 'FAILED! WRONG CARD INFO'
- return render(request, 'polls/home.html', {
- 'msg': msg,
- })
- return render(request, 'polls/home.html')
- class UserFormView(View):
- form_class = UserForm
- template_name = 'polls/registration.html'
- def get(self, request):
- form = self.form_class(None)
- return render(request, self.template_name, {'form': form})
- def post(self, request):
- form = self.form_class(request.POST)
- if form.is_valid():
- user = form.save(commit=False)
- username = form.cleaned_data['username']
- password = form.cleaned_data['password']
- user.set_password(password)
- user.save()
- user = authenticate(username=username, password=password)
- if user is not None:
- if user.is_active:
- login(request, user)
- return redirect('polls:upload')
- return render(request, self.template_name, {'form': form})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement