Advertisement
tarek79

Untitled

Jan 4th, 2019
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.00 KB | None | 0 0
  1. from django.shortcuts import render,redirect,render_to_response
  2. import zipfile
  3. from .forms import UserRegisterForm
  4. from django.contrib import messages
  5. import urllib
  6.  
  7. from django.template import RequestContext
  8. from django.db import connection
  9. from .models import Subscription
  10. from django.contrib.auth import authenticate,login
  11. from django.contrib.auth.decorators import login_required
  12. from django.views import generic
  13. from django.views.generic import View
  14. from .forms import UserForm
  15. from django.http import HttpResponse
  16. from django.conf import settings
  17. from django.core.files.storage import FileSystemStorage
  18. import moviepy.editor as mp
  19. from shutil import make_archive
  20. import sys
  21. import timeit
  22. import cv2
  23. import argparse
  24. import os
  25. import authorize
  26. import functools
  27. from functools import cmp_to_key
  28.  
  29. from PIL import Image
  30. import sys
  31. import copy
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38. def resize(i,usernamec):
  39. path2 = settings.MEDIA_ROOT + "/"+usernamec+"/image/"
  40. dirs2 = os.listdir(path2)
  41. for item in dirs2:
  42. if os.path.isfile(path2 + item):
  43. im = Image.open(path2 + item)
  44. f, e = os.path.splitext(path2 + item)
  45. imResize = im.resize((1080, 720), Image.ANTIALIAS)
  46. imResize.save(path2 + str(i) + '.png', 'PNG', quality=90)
  47. i = i + 1
  48. #os.remove(path2 + item)
  49.  
  50.  
  51.  
  52.  
  53.  
  54. # Function to check if string can be cast to int
  55. def isnum(num):
  56. try:
  57. int(num)
  58. return True
  59. except:
  60. return False
  61.  
  62.  
  63. # Numerically sorts filenames
  64. def image_sort(x, y):
  65. x = int(x.split(".")[0])
  66. y = int(y.split(".")[0])
  67. return x - y
  68.  
  69. def make_video(text, ado, usernamec):
  70. fp = settings.MEDIA_ROOT + "/"+usernamec+""
  71. path = settings.MEDIA_ROOT + "/"+usernamec+"/image/"
  72. dirs = os.listdir(path)
  73. print(text)
  74. path = settings.MEDIA_ROOT + "/"+usernamec+"/image/"
  75.  
  76. resize(1,usernamec)
  77. # Construct the argument parser and parse the arguments
  78. # arg_parser = argparse.ArgumentParser()
  79. # arg_parser.add_argument("-e", "--extension", required=False, default='png',
  80. # help="Extension name. default is 'png'.")
  81. # arg_parser.add_argument("-o", "--output", required=False, default=settings.MEDIA_ROOT+"/image/", help="Output video file.")
  82. # arg_parser.add_argument("-d", "--directory", required=False, default=settings.MEDIA_ROOT+"/video/output.mp4", help="Specify image directory.")
  83. # arg_parser.add_argument("-fps", "--framerate", required=False, default='10', help="Set the video framerate.")
  84. # arg_parser.add_argument("-s", "--sort", required=False, default='numeric',
  85. # help="Determines the type of file-order sort that will be used.")
  86. # arg_parser.add_argument("-t", "--time", required=False, default='10',
  87. # help="Sets the framerate so that the video length matches the time in seconds.")
  88. # arg_parser.add_argument("-v", "--visual", required=False, default='false',
  89. # help="If 'true' then will display preview window.")
  90. # args = vars(arg_parser.parse_args())
  91.  
  92. # Arguments
  93. dir_path = settings.MEDIA_ROOT+"/"+usernamec+"/image/"
  94. ext = 'png'
  95. output = settings.MEDIA_ROOT+"/"+usernamec+"/video/output.mp4"
  96. framerate = '10'
  97. sort_type = 'numeric'
  98. time = 30
  99. visual = 'false'
  100.  
  101. # Flips 'visual' to a bool
  102. visual = visual == "true"
  103.  
  104. # Sets the framerate to argument, or defaults to 10
  105. if not isnum(framerate):
  106. framerate = 10
  107. else:
  108. framerate = int(framerate)
  109.  
  110. # Get the files from directory
  111. images2 = []
  112. images3 = []
  113. images3.append(settings.MEDIA_ROOT+"/"+usernamec+"/image/1.png")
  114. fg=0
  115. for f in os.listdir(dir_path):
  116. if fg > 0 :
  117. if f.endswith(ext):
  118. images2.append(dir_path+f)
  119. fg = fg + 1
  120.  
  121. # Sort the files found in the directory
  122.  
  123.  
  124. b = text.split(".")
  125.  
  126. # print(b[0])
  127.  
  128. h=0
  129. k=0
  130. for z in range(int(len(b))):
  131.  
  132. b[z]=b[z].replace('\r', '')
  133. b[z]=b[z].replace('\n', '')
  134. # int('avik ' + b[v])
  135. if b[z]!='':
  136. output = settings.MEDIA_ROOT+"/"+usernamec+"/video/" + str(b[z]) + ".mp4"
  137. images = []
  138.  
  139. for c in range(20):
  140. images.append(images2[k])
  141. for d in range(10):
  142. images.append(images3[0])
  143.  
  144.  
  145. print('images ' +str(len(images))+"----------"+str(len(images3)))
  146. # Determine the width and height from the first image
  147. #print(len(images))
  148. framerate = int(len(images) / int(time))
  149. print("Adjusting framerate to " + str(framerate))
  150. image_path = images[0]
  151. frame = cv2.imread(image_path)
  152.  
  153. if visual:
  154. cv2.imshow('video',frame)
  155. regular_size = os.path.getsize(image_path)
  156. height, width, channels = frame.shape
  157.  
  158. # Define the codec and create VideoWriter object
  159. fourcc = cv2.VideoWriter_fourcc(*'mp4v') # Be sure to use lower case
  160. out = cv2.VideoWriter(output, fourcc, framerate, (width, height))
  161.  
  162. for n, image in enumerate(images):
  163. image_path = image
  164. image_size = os.path.getsize(image_path)
  165. if image_size < 1:
  166. print("Cancelled: " + image)
  167. continue
  168.  
  169. frame = cv2.imread(image_path)
  170. out.write(frame) # Write out frame to video
  171. if visual:
  172. cv2.imshow('video', frame)
  173.  
  174. if (cv2.waitKey(1) & 0xFF) == ord('q'): # Hit `q` to exit
  175. break
  176. if n%100 == 0:
  177. print("Frame " + str(n))
  178.  
  179.  
  180. out.release()
  181. cv2.destroyAllWindows()
  182. print("The output video is {}".format(output))
  183.  
  184.  
  185. k=k+1
  186.  
  187. if len(b) < len(images2):
  188. if k == int(len(b)):
  189. k =0
  190. else:
  191. if k == int(len(images2)):
  192. k = 0
  193.  
  194.  
  195. path = settings.MEDIA_ROOT+"/"+usernamec+"/video/"
  196. dirs = os.listdir( path )
  197. audio = mp.AudioFileClip(settings.MEDIA_ROOT+"/"+usernamec+"/mp3/"+ado)
  198. audio2 = audio.subclip(1, 20)
  199.  
  200. for item in dirs:
  201.  
  202.  
  203. video1 = mp.VideoFileClip(path+item)
  204.  
  205.  
  206. final = video1.set_audio(audio2)
  207. final.write_videofile(settings.MEDIA_ROOT+"/allvideo/"+usernamec+"/video/"+item)
  208.  
  209. video1.reader.close()
  210. del video1.reader
  211. final.reader.close()
  212. del final.reader
  213. final.audio.reader.close_proc()
  214. del final.audio
  215.  
  216. path9 = settings.MEDIA_ROOT + "/" + usernamec + "/image/"
  217. dirs9 = os.listdir(path9)
  218.  
  219. for item in dirs9:
  220. os.remove(path9 + item);
  221. dirs9.clear()
  222. path10 = settings.MEDIA_ROOT + "/"+usernamec+"/mp3/"
  223. dirs10 = os.listdir(path10)
  224.  
  225. for item in dirs10:
  226. os.remove(path10 + item);
  227. dirs10.clear()
  228.  
  229. path11 = settings.MEDIA_ROOT + "/"+usernamec+"/video/"
  230. dirs11 = os.listdir(path11)
  231.  
  232. for item in dirs11:
  233. os.remove(path11 + item);
  234. dirs11.clear()
  235.  
  236. if os.path.exists(settings.MEDIA_ROOT+"/allvideo/"+usernamec+".zip"):
  237. os.remove(settings.MEDIA_ROOT+"/allvideo/"+usernamec+".zip")
  238.  
  239. fantasy_zip = zipfile.ZipFile(settings.MEDIA_ROOT+"/allvideo/"+usernamec+".zip", 'w')
  240.  
  241. for folder, subfolders, files in os.walk(settings.MEDIA_ROOT+"/allvideo/"):
  242.  
  243. for file in files:
  244. if file.endswith('.mp4'):
  245. fantasy_zip.write(os.path.join(folder, file),
  246. os.path.relpath(os.path.join(folder, file), settings.MEDIA_ROOT+"/allvideo/"+usernamec),
  247. compress_type=zipfile.ZIP_DEFLATED)
  248.  
  249. fantasy_zip.close()
  250.  
  251. path14 = settings.MEDIA_ROOT + "/allvideo/" + usernamec + "/video/"
  252. dirs14 = os.listdir(path14)
  253.  
  254. for item in dirs14:
  255. os.remove(path14 + item);
  256. dirs14.clear()
  257.  
  258. path14 = settings.MEDIA_ROOT + "/allvideo/" + usernamec + "/"
  259. dirs14 = os.listdir(path14)
  260.  
  261. for item in dirs14:
  262. os.rmdir(path14 + item);
  263. dirs14.clear()
  264.  
  265.  
  266.  
  267.  
  268. posts=[
  269. {
  270. 'author':'tarek',
  271. 'date':'12-21-12'
  272. },
  273. {
  274. 'author': 'tarek2',
  275. 'date': '12-21-122'
  276. },
  277. {
  278. 'author': 'tarek3',
  279. 'date': '132-21-12'
  280. }
  281.  
  282. ]
  283. def home(request):
  284.  
  285. context={
  286. 'posts': posts,
  287. 'title': 'home'
  288. }
  289. return render(request, 'polls/home.html', context);
  290.  
  291. @login_required(redirect_field_name='admin/login')
  292. def about(request):
  293. # fantasy_zip = zipfile.ZipFile(settings.MEDIA_ROOT+"/allvideo/tarektarek79.zip", 'w')
  294. #
  295. # for folder, subfolders, files in os.walk(settings.MEDIA_ROOT+"/allvideo/"):
  296. #
  297. # for file in files:
  298. # if file.endswith('.mp4'):
  299. # fantasy_zip.write(os.path.join(folder, file),
  300. # os.path.relpath(os.path.join(folder, file), settings.MEDIA_ROOT+"/allvideo/tarektarek79"),
  301. # compress_type=zipfile.ZIP_DEFLATED)
  302.  
  303. #fantasy_zip.close()
  304. # subinfo9 = Subscription.objects.get(user_id=request.user.id)
  305. # subinfo9.sub_value = 3
  306. # subinfo9.save()
  307. #Subscription.objects.all().delete()
  308. #
  309. path9 = settings.MEDIA_ROOT + "/user/image/"
  310. path10 = settings.MEDIA_ROOT + "/user/mp3/"
  311. path11 = settings.MEDIA_ROOT + "/user/video/"
  312. if not os.path.exists(path9) and os.path.exists(path10) and os.path.exists(path11):
  313. os.makedirs(path9)
  314. os.makedirs(path10)
  315. os.makedirs(path11)
  316. #
  317. # path9 = settings.MEDIA_ROOT+"/user/image/"
  318. # dirs9 = os.listdir(path9)
  319. # for item in dirs9:
  320. # os.remove(path9 + item);
  321. # path10 = settings.MEDIA_ROOT + "/user/mp3/"
  322. # dirs10 = os.listdir(path10)
  323. # for item in dirs10:
  324. # os.remove(path10 + item);
  325. # path11 = settings.MEDIA_ROOT + "/user/video/"
  326. # dirs11 = os.listdir(path11)
  327. # for item in dirs11:
  328. # os.remove(path11 + item);
  329. # path11 = settings.MEDIA_ROOT + "/user/"
  330. # dirs11 = os.listdir(path11)
  331. # for item in dirs11:
  332. # os.rmdir(path11 + item);
  333. #os.rmdir(settings.MEDIA_ROOT + "/user/video");
  334. #os.chmod(path11, 077)
  335.  
  336. #shutil.rmtree(path11)
  337. t= Subscription.objects.filter(user_id=request.user.id)
  338. return render(request, 'polls/about.html', context={'listr':t})
  339. @login_required(redirect_field_name='admin/login')
  340. def faq(request):
  341. return render(request, 'polls/faq.html')
  342. @login_required(redirect_field_name='admin/login')
  343. def news(request):
  344. return render(request, 'polls/news.html')
  345.  
  346. @login_required(redirect_field_name='next', login_url='login')
  347. def simple_upload(request):
  348. pak = Subscription.objects.get(user_id=request.user.id)
  349. sub_value= pak.sub_value
  350.  
  351. if sub_value>0:
  352. if request.method == 'POST' and request.FILES.getlist('myfile') and 'btn1' in request.POST:
  353.  
  354. txt = request.POST['test']
  355. b = txt.split(".")
  356.  
  357. a = 0
  358. for z in range(int(len(b))):
  359. b[z] = b[z].replace('\r', '')
  360. b[z] = b[z].replace('\n', '')
  361. a = a + 1
  362.  
  363. print(a)
  364.  
  365.  
  366.  
  367. # sys.exit()
  368. ado = request.FILES['audio']
  369. ad = FileSystemStorage(location='media/'+request.user.username+'/mp3')
  370. adoname = ad.save(ado.name, ado)
  371. i = 1
  372. for afile in request.FILES.getlist('myfile'):
  373. fs = FileSystemStorage(location='media/'+request.user.username+'/image')
  374. afile.name = str(i) + ".png"
  375. filename = fs.save(afile.name, afile)
  376. uploaded_file_url = afile.name
  377. i = i + 1
  378.  
  379. if sub_value>a:
  380. path11 = settings.MEDIA_ROOT + "/" + request.user.username + "/video/"
  381. path12 = settings.MEDIA_ROOT + "/allvideo/" + request.user.username + "/video/"
  382. usernamec= request.user.username
  383. if not os.path.exists(path11) and not os.path.exists(path12):
  384. os.makedirs(path11)
  385. os.makedirs(path12)
  386. make_video(txt, adoname, usernamec)
  387. subinfo2 = Subscription.objects.get(user_id=request.user.id)
  388. sub_id = subinfo2.sub_id
  389. subinfo2.sub_value = subinfo2.sub_value - a
  390. subinfo2.save()
  391. msg2 = 'Completed'
  392. else:
  393. msg2="You don't have enough credit"
  394.  
  395. #redirect('upload')
  396.  
  397. msg20=""
  398. return render(request, 'polls/success.html', {
  399. 'msg2': msg2
  400.  
  401. })
  402. else:
  403. msg1 = 'You have no subscription or quota exceed'
  404. return render(request, 'polls/success.html', {
  405. 'msg1': msg1,
  406.  
  407. })
  408.  
  409.  
  410. if request.method == 'POST' and 'btn2' in request.POST:
  411. card = request.POST['card']
  412. authorize.Configuration.configure(
  413. authorize.Environment.TEST,
  414. '57vWge84HrX',
  415. '9ZTy3Rq3m4438L88',
  416. )
  417.  
  418. result = authorize.Recurring.create({
  419. 'amount': int(request.session['name']),
  420. 'interval_length': 1,
  421. 'interval_unit': 'months',
  422. 'credit_card': {
  423. 'card_number': card,
  424. 'expiration_date': request.POST['mm']+"-"+request.POST['yy'],
  425. 'card_code': request.POST['card_code'],
  426. },
  427. 'customer': {
  428. 'merchant_id': '657657',
  429. 'email': 'jjkjk@kjkl.com',
  430. 'description': 'UserName: '+request.user.username,
  431. },
  432.  
  433. })
  434.  
  435. print(result.subscription_id)
  436. if result.subscription_id:
  437.  
  438. subinfo2 = Subscription.objects.get(user_id=request.user.id)
  439. subinfo2.sub_id = result.subscription_id
  440. subinfo2.pack_id = request.session['name']
  441. if subinfo2.pack_id == 9:
  442. subinfo2.sub_value = 10
  443. elif subinfo2.pack_id == 99:
  444. subinfo2.sub_value = 100
  445. else:
  446. subinfo2.sub_value = 999999999
  447.  
  448. subinfo2.save()
  449. msg='SUCCESS! GO AHEAD AND START'
  450. return render(request, 'polls/success.html', {
  451. 'msg': msg,
  452.  
  453. })
  454. else:
  455. msg = 'FAILED! WRONG CARD INFO'
  456. return render(request, 'polls/success.html', {
  457. 'msg': msg,
  458.  
  459. })
  460.  
  461. subinfo = Subscription.objects.filter(user_id=request.user.id)
  462.  
  463.  
  464.  
  465. authorize.Configuration.configure(
  466. authorize.Environment.TEST,
  467. '57vWge84HrX',
  468. '9ZTy3Rq3m4438L88',
  469. )
  470.  
  471.  
  472. return render(request, 'polls/success.html',context={'subinfo':subinfo})
  473.  
  474.  
  475.  
  476. class UserFormView(View):
  477. form_class = UserForm
  478. template_name = 'polls/registration.html'
  479.  
  480. def get(self, request):
  481. form = self.form_class(None)
  482. return render(request, self.template_name, {'form': form})
  483.  
  484. def post(self, request):
  485. form = self.form_class(request.POST)
  486.  
  487. if form.is_valid():
  488. user = form.save(commit=False)
  489.  
  490. username = form.cleaned_data['username']
  491. password = form.cleaned_data['password1']
  492. user.set_password(password)
  493. user.save()
  494.  
  495. user = authenticate(username=username, password=password)
  496.  
  497. if user is not None:
  498. if user.is_active:
  499. login(request, user)
  500. sub = Subscription()
  501. sub.sub_value = 3
  502. sub.pack_id = 0
  503. sub.sub_id = 0
  504. sub.user_id = request.user.id
  505. sub.save()
  506.  
  507.  
  508.  
  509. return redirect('upload')
  510.  
  511. return render(request, self.template_name, {'form': form})
  512.  
  513.  
  514. def simple_upload2(request):
  515.  
  516. if request.method == 'POST' and request.FILES.getlist('myfile1'):
  517.  
  518. # txt = request.POST['test']
  519. #ado = request.FILES['audio']
  520. #ad = FileSystemStorage(location='media/user/mp3')
  521. #adoname = ad.save(ado.name, ado)
  522. i=1
  523. print(request.FILES.getlist('myfile1'))
  524. for afile in request.FILES.getlist('myfile1'):
  525. print(afile)
  526. fs = FileSystemStorage(location='media/test/image')
  527. afile.name = str(i) + ".png"
  528. filename = fs.save(afile.name, afile)
  529. uploaded_file_url = afile.name
  530. i = i+1
  531.  
  532.  
  533. return HttpResponse('done')
  534.  
  535. def hello(request):
  536. i= request.POST.get('i')
  537. l=9
  538.  
  539. request.session['name'] = i
  540. return HttpResponse(i)
  541. @login_required(redirect_field_name='next', login_url='admin/login')
  542. def testajax(request):
  543.  
  544. username = request.user.name
  545.  
  546. return render(request, 'polls/about.html',context={'variable': username})
  547.  
  548. def register(request):
  549. if request.method == 'POST':
  550. form = UserRegisterForm(request.POST)
  551. if form.is_valid():
  552. user = form.save()
  553. username = form.cleaned_data['username']
  554. password = form.cleaned_data['password1']
  555. user.set_password(password)
  556. user.save()
  557.  
  558. user = authenticate(username=username, password=password)
  559.  
  560. if user is not None:
  561. if user.is_active:
  562. login(request, user)
  563. sub = Subscription()
  564. sub.sub_value = 3
  565. sub.pack_id = 0
  566. sub.sub_id = 0
  567. sub.user_id = request.user.id
  568. sub.save()
  569.  
  570.  
  571.  
  572. return redirect('upload')
  573. else:
  574. form = UserRegisterForm()
  575. return render(request, 'polls/register.html', {'form': form})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement