Advertisement
tarek79

Untitled

Jan 1st, 2019
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.29 KB | None | 0 0
  1. from django.shortcuts import render,redirect
  2. from .models import Subscription
  3. from django.contrib.auth import authenticate,login
  4. from django.contrib.auth.decorators import login_required
  5. from django.views import generic
  6. from django.views.generic import View
  7. from .forms import UserForm
  8. from django.http import HttpResponse
  9. from django.conf import settings
  10. from django.core.files.storage import FileSystemStorage
  11. import moviepy.editor as mp
  12. import timeit
  13. import cv2
  14. import argparse
  15. import os
  16. import authorize
  17. import functools
  18. from functools import cmp_to_key
  19.  
  20. from PIL import Image
  21. import sys
  22. import copy
  23.  
  24. fp = settings.MEDIA_ROOT+"/user"
  25. #os.rmdir(fp)
  26. # os.mkdir(fp)
  27. # os.mkdir(fp+"/mp3")
  28. # os.mkdir(fp+"/image")
  29. # os.mkdir(fp+"/video")
  30. path = settings.MEDIA_ROOT+"/user/image/"
  31. dirs = os.listdir(path)
  32.  
  33. def resize(i):
  34. path2 = settings.MEDIA_ROOT + "/user/image/"
  35. dirs2 = os.listdir(path2)
  36. for item in dirs2:
  37. if os.path.isfile(path2 + item):
  38. im = Image.open(path2 + item)
  39. f, e = os.path.splitext(path2 + item)
  40. imResize = im.resize((1080, 720), Image.ANTIALIAS)
  41. imResize.save(path2 + str(i) + '.png', 'PNG', quality=90)
  42. i = i + 1
  43. os.remove(path2 + item)
  44.  
  45.  
  46.  
  47.  
  48.  
  49. # Function to check if string can be cast to int
  50. def isnum(num):
  51. try:
  52. int(num)
  53. return True
  54. except:
  55. return False
  56.  
  57.  
  58. # Numerically sorts filenames
  59. def image_sort(x, y):
  60. x = int(x.split(".")[0])
  61. y = int(y.split(".")[0])
  62. return x - y
  63.  
  64. def make_video(text, ado):
  65. print(text)
  66. path = settings.MEDIA_ROOT + "/user/image/"
  67.  
  68. resize(1)
  69. # Construct the argument parser and parse the arguments
  70. # arg_parser = argparse.ArgumentParser()
  71. # arg_parser.add_argument("-e", "--extension", required=False, default='png',
  72. # help="Extension name. default is 'png'.")
  73. # arg_parser.add_argument("-o", "--output", required=False, default=settings.MEDIA_ROOT+"/image/", help="Output video file.")
  74. # arg_parser.add_argument("-d", "--directory", required=False, default=settings.MEDIA_ROOT+"/video/output.mp4", help="Specify image directory.")
  75. # arg_parser.add_argument("-fps", "--framerate", required=False, default='10', help="Set the video framerate.")
  76. # arg_parser.add_argument("-s", "--sort", required=False, default='numeric',
  77. # help="Determines the type of file-order sort that will be used.")
  78. # arg_parser.add_argument("-t", "--time", required=False, default='10',
  79. # help="Sets the framerate so that the video length matches the time in seconds.")
  80. # arg_parser.add_argument("-v", "--visual", required=False, default='false',
  81. # help="If 'true' then will display preview window.")
  82. # args = vars(arg_parser.parse_args())
  83.  
  84. # Arguments
  85. dir_path = settings.MEDIA_ROOT+"/user/image/"
  86. ext = 'png'
  87. output = settings.MEDIA_ROOT+"/user/video/output.mp4"
  88. framerate = '10'
  89. sort_type = 'numeric'
  90. time = 30
  91. visual = 'false'
  92.  
  93. # Flips 'visual' to a bool
  94. visual = visual == "true"
  95.  
  96. # Sets the framerate to argument, or defaults to 10
  97. if not isnum(framerate):
  98. framerate = 10
  99. else:
  100. framerate = int(framerate)
  101.  
  102. # Get the files from directory
  103. images2 = []
  104. for f in os.listdir(dir_path):
  105. if f.endswith(ext):
  106. images2.append(f)
  107.  
  108. # Sort the files found in the directory
  109. if sort_type == "numeric":
  110. int_name = images2[0].split(".")[0]
  111. if isnum(int_name):
  112. images2 = sorted(images2, key=cmp_to_key(image_sort))
  113. else:
  114. print("Failed to sort numerically, switching to alphabetic sort")
  115. images2.sort()
  116. elif sort_type == "alphabetic":
  117. images2.sort()
  118.  
  119. images = []
  120. h = 0
  121. # Change framerate to fit the time in seconds if a time has been specified.
  122. # Overrides the -fps arg
  123. if isnum(time):
  124. if int(len(images2)) < 20:
  125.  
  126. mode = int(20 % len(images2))
  127. print('Mode' + str(mode) + ' length ' + str(len(images2)))
  128. for z in range(int(len(images2))):
  129. mode = mode - 1
  130. if mode >= 0:
  131. ac = 1 + int(20 / len(images2))
  132. else:
  133. ac = int(20 / len(images2))
  134. for k in range(int(ac)):
  135. print('z :' + str(z))
  136. images.append(images2[z])
  137.  
  138.  
  139. for w in range(10):
  140. images.append(settings.MEDIA_ROOT+"/user/brand/brand.png")
  141.  
  142.  
  143.  
  144. else:
  145. print('Mode not')
  146. for l in range(int(len(images2))):
  147. images.append(images2[l])
  148.  
  149. print('images ' + str(len(images)))
  150. # Determine the width and height from the first image
  151. # print(len(images))
  152. framerate = int(len(images) / int(time))
  153. print("Adjusting framerate to " + str(framerate))
  154. image_path = os.path.join(dir_path, images[0])
  155. frame = cv2.imread(image_path)
  156.  
  157. if visual:
  158. cv2.imshow('video', frame)
  159. regular_size = os.path.getsize(image_path)
  160. height, width, channels = frame.shape
  161.  
  162. # Define the codec and create VideoWriter object
  163. fourcc = cv2.VideoWriter_fourcc(*'mp4v') # Be sure to use lower case
  164. out = cv2.VideoWriter(output, fourcc, framerate, (width, height))
  165.  
  166. for n, image in enumerate(images):
  167. image_path = os.path.join(dir_path, image)
  168. image_size = os.path.getsize(image_path)
  169. if image_size < 1:
  170. print("Cancelled: " + image)
  171. continue
  172.  
  173. frame = cv2.imread(image_path)
  174. out.write(frame) # Write out frame to video
  175. if visual:
  176. cv2.imshow('video', frame)
  177.  
  178. if (cv2.waitKey(1) & 0xFF) == ord('q'): # Hit `q` to exit
  179. break
  180. if n % 100 == 0:
  181. print("Frame " + str(n))
  182.  
  183. # Release everything if job is finished
  184.  
  185. out.release()
  186. cv2.destroyAllWindows()
  187. # my_clip = mpe.VideoFileClip(format(output))
  188. # audio_background = mpe.AudioFileClip('some_background.mp3')
  189. # final_audio = mpe.CompositeAudioClip([my_clip.audio, audio_background])
  190. # final_clip = my_clip.set_audio(final_audio)
  191. print("The output video is {}".format(output))
  192.  
  193. start = timeit.default_timer()
  194. video1 = mp.VideoFileClip(settings.MEDIA_ROOT+"/user/video/output.mp4")
  195. audio = mp.AudioFileClip(settings.MEDIA_ROOT+"/user/mp3/"+ado)
  196. audio2 = audio.subclip(1, 20)
  197.  
  198. final = mp.concatenate_videoclips([video1]).set_audio(audio2)
  199. # a = "Welcome hag adsj adb asadb aqssadbd. gd sdkd asdddb aa asdj adsfaccs. hghghj hghjggh. hghjg jhg. hghjghj"
  200. b = text.split(".")
  201.  
  202. # print(b[0])
  203. for v in range(int(len(b))):
  204.  
  205. b[v]=b[v].replace('\r', '')
  206. b[v]=b[v].replace('\n', '')
  207. # int('avik ' + b[v])
  208. if b[v]!='':
  209. final.write_videofile(settings.MEDIA_ROOT + "/user/video/" + b[v] + ".mp4")
  210.  
  211.  
  212.  
  213. stop = timeit.default_timer()
  214.  
  215. print('Time: ', stop - start)
  216.  
  217. # dirs = os.listdir(path)
  218. # for item in dirs:
  219. # os.remove(path + item);
  220. # Create your views here.
  221. posts=[
  222. {
  223. 'author':'tarek',
  224. 'date':'12-21-12'
  225. },
  226. {
  227. 'author': 'tarek2',
  228. 'date': '12-21-122'
  229. },
  230. {
  231. 'author': 'tarek3',
  232. 'date': '132-21-12'
  233. }
  234.  
  235. ]
  236. def home(request):
  237.  
  238. context={
  239. 'posts': posts,
  240. 'title': 'home'
  241. }
  242. return render(request, 'polls/home.html', context);
  243.  
  244. @login_required(redirect_field_name='admin/login')
  245. def about(request):
  246. return redirect('home')
  247.  
  248. def simple_upload(request):
  249.  
  250. if request.method == 'POST' and request.FILES.getlist('myfile') and request.POST['btn1']:
  251.  
  252. txt = request.POST['test']
  253. ado = request.FILES['audio']
  254. ad = FileSystemStorage(location='media/user/mp3')
  255. adoname = ad.save(ado.name, ado)
  256. for afile in request.FILES.getlist('myfile'):
  257. fs = FileSystemStorage(location='media/user/image')
  258. filename = fs.save(afile.name, afile)
  259. uploaded_file_url = fs.url(filename)
  260. make_video(txt,adoname)
  261. return render(request, 'polls/home.html', {
  262. 'uploaded_file_url': adoname,
  263.  
  264. })
  265.  
  266. if request.method == 'POST' and request.POST['card'] and request.POST['btn2']:
  267. card = request.POST['card']
  268. authorize.Configuration.configure(
  269. authorize.Environment.TEST,
  270. '57vWge84HrX',
  271. '9ZTy3Rq3m4438L88',
  272. )
  273.  
  274. result = authorize.Recurring.create({
  275. 'amount': 302.00,
  276. 'interval_length': 1,
  277. 'interval_unit': 'months',
  278. 'credit_card': {
  279. 'card_number': card,
  280. 'expiration_date': request.POST['mm']+"-"+request.POST['yy'],
  281. 'card_code': request.POST['card_code'],
  282. },
  283. })
  284. print(result.subscription_id)
  285. if result.subscription_id:
  286. msg='SUCCESS! GO AHEAD AND START'
  287. return render(request, 'polls/home.html', {
  288. 'msg': msg,
  289.  
  290. })
  291. else:
  292. msg = 'FAILED! WRONG CARD INFO'
  293. return render(request, 'polls/home.html', {
  294. 'msg': msg,
  295.  
  296. })
  297.  
  298.  
  299. return render(request, 'polls/home.html')
  300.  
  301. class UserFormView(View):
  302. form_class = UserForm
  303. template_name = 'polls/registration.html'
  304.  
  305. def get(self, request):
  306. form = self.form_class(None)
  307. return render(request, self.template_name, {'form': form})
  308.  
  309. def post(self, request):
  310. form = self.form_class(request.POST)
  311.  
  312. if form.is_valid():
  313. user = form.save(commit=False)
  314.  
  315. username = form.cleaned_data['username']
  316. password = form.cleaned_data['password']
  317. user.set_password(password)
  318. user.save()
  319.  
  320. user = authenticate(username=username, password=password)
  321.  
  322. if user is not None:
  323. if user.is_active:
  324. login(request, user)
  325. return redirect('polls:upload')
  326.  
  327. return render(request, self.template_name, {'form': form})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement