Spaces:
Build error
Build error
| from django.shortcuts import render | |
| from django.http import HttpResponse | |
| import json | |
| from django.views.decorators.csrf import csrf_exempt | |
| import requests | |
| import base64 | |
| from datetime import datetime | |
| import http.client | |
| import time | |
| from PIL import Image,ImageFilter | |
| import io | |
| # https://explorer.apis.google.com/embedded.js search for ac=" for api key | |
| access_token = "" | |
| refresh_token = "" | |
| id_token = "" | |
| gtoken = "03AKH6MRFNT6HVvCOEeeOZyehLohN3SQQGtPX-5ZuPkxCP3z1qhjhETBgPXUF1OsuYmdwZHvbHHKGV8b1I6B37WvbE0NqnncINIjUnZ9V3eBYPpBT2YXVV6I88n84L25v2PS8k3TGSj5oVFP1WhBSwR_pX7AmqJM7xq-47mjzOrRfpbEHNeQLOBGxQTVBVCP7IjNB6Yv4NmUYgqyv261dSmfh-RTgQWvA_05vs_J4R7eCPGr7xhSzd4jSXRsZDuf0zkyzeMHbEIf07Mrp0AaeB-bv14jNakWaAyDXNRg1yPzTUuQa3yVPBlx49VxrGC5tVKCN2CsWnrsd2BQD7A2BBzQPDz_rpGL3EVyl7Gh5qY8DYuGgK8pRTrbVAbDyacYoOmgYjoX7VAGx_3kKYLz6dHTF_8WeC_AIpwwP-KT6YDpT-wV7HkyxdkouYUuHdlQQKaPQ6eRDnkzqkOOCEZ1yPE_6eh2NeF41P-Z6Iy-B4tdAyHPW0AmO-pH8TsgUmlHpfaHuDuKj3XWme5dDloH2rSa1SQFyIeXUDE0uyG8KlX4MqzcBxefia1Z8" | |
| imageGenrated = 0 | |
| startTime = datetime.now() | |
| csrfToken = "" | |
| def tokenGenrator(request): | |
| global access_token, refresh_token, id_token | |
| url = "https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=AIzaSyB6cfZFPraybh6ziyKIMO-afl11alZNlTI" | |
| payload = json.dumps({ | |
| "returnSecureToken": True | |
| }) | |
| headers = { | |
| 'authority': 'identitytoolkit.googleapis.com', | |
| 'accept': '*/*', | |
| 'content-type': 'application/json', | |
| 'origin': 'https://clipdrop.co', | |
| 'x-client-version': 'Chrome/JsCore/9.15.0/FirebaseCore-web' | |
| } | |
| response = requests.request("POST", url, headers=headers, data=payload) | |
| refresh_token = response.json()['refreshToken'] | |
| id_token = response.json()['idToken'] | |
| url = "https://securetoken.googleapis.com/v1/token?key=AIzaSyB6cfZFPraybh6ziyKIMO-afl11alZNlTI" | |
| payload='grant_type=refresh_token&refresh_token=' + refresh_token | |
| headers = { | |
| 'authority': 'securetoken.googleapis.com', | |
| 'accept': '*/*', | |
| 'content-type': 'application/x-www-form-urlencoded', | |
| 'origin': 'https://clipdrop.co' | |
| } | |
| response = requests.request("POST", url, headers=headers, data=payload) | |
| access_token = response.json()['access_token'] | |
| refresh_token = response.json()['refresh_token'] | |
| id_token = response.json()['id_token'] | |
| return access_token | |
| def helloWorld(request): | |
| return HttpResponse(json.dumps({"msg":"Hello World"}), content_type="application/json") | |
| def backgroundRemover(request): | |
| global access_token, imageGenrated,startTime | |
| if request.method == 'POST': | |
| image = request.FILES['image'] | |
| endTime = datetime.now() | |
| imageGenrated = imageGenrated + 1 | |
| print((endTime - startTime).total_seconds()) | |
| if (endTime - startTime).total_seconds() > 360 or imageGenrated > 10: | |
| access_token = "" | |
| imageGenrated = 0 | |
| startTime = datetime.now() | |
| if access_token == "": | |
| access_token = tokenGenrator(request) | |
| print(access_token) | |
| url = "https://api.clipdrop.co/remove-background/v2" | |
| payload={'outputs[]': 'composite','composite_format': 'webp'} | |
| files=[ | |
| ('image_file',(image.name,image)) | |
| ] | |
| headers = { | |
| 'authority': 'api.clipdrop.co', | |
| 'accept': 'application/zip', | |
| 'accept-language': 'en-US,en;q=0.9', | |
| 'authorization': 'Bearer '+access_token, | |
| 'origin': 'https://clipdrop.co', | |
| 'sec-ch-ua': '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"', | |
| 'sec-ch-ua-mobile': '?0', | |
| 'sec-ch-ua-platform': '"Windows"', | |
| 'sec-fetch-dest': 'empty', | |
| 'sec-fetch-mode': 'cors', | |
| 'sec-fetch-site': 'same-site', | |
| 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', | |
| 'x-clipdrop-pro-client': 'false' | |
| } | |
| response = requests.request("POST", url, headers=headers, data=payload, files=files) | |
| try: | |
| if("error" in response.json().keys()): | |
| imageGenrated = 100 | |
| return HttpResponse(json.dumps(response.json()),content_type="application/json") | |
| except: | |
| pass | |
| return HttpResponse(response.content, content_type="image/png") | |
| return HttpResponse(json.dumps({"error":"You were not supposed to be here."}), content_type="application/json") | |
| def cleanUp(request): | |
| global access_token, imageGenrated,startTime | |
| if request.method == 'POST': | |
| image = request.FILES['image'] | |
| mask = request.FILES['mask'] | |
| temp1 = Image.open(image) | |
| temp2 = Image.open(mask) | |
| temp1.save("temp1.png") | |
| temp2.save("temp2.png") | |
| endTime = datetime.now() | |
| imageGenrated = imageGenrated + 1 | |
| print((endTime - startTime).total_seconds()) | |
| if (endTime - startTime).total_seconds() > 360 or imageGenrated > 10: | |
| access_token = "" | |
| imageGenrated = 0 | |
| startTime = datetime.now() | |
| if access_token == "": | |
| access_token = tokenGenrator(request) | |
| url = "https://api.clipdrop.co/cleanup/v1" | |
| files=[ | |
| ('image_file',(image.name,image)), | |
| ('mask_file',(mask.name,mask)) | |
| ] | |
| headers = { | |
| 'authority': 'api.clipdrop.co', | |
| 'accept': '*/*', | |
| 'accept-language': 'en-US,en;q=0.9', | |
| 'authorization': 'Bearer '+access_token, | |
| 'origin': 'https://clipdrop.co', | |
| 'referer': 'https://clipdrop.co/', | |
| 'sec-ch-ua': '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"', | |
| 'sec-ch-ua-mobile': '?0', | |
| 'sec-ch-ua-platform': '"Windows"', | |
| 'sec-fetch-dest': 'empty', | |
| 'sec-fetch-mode': 'cors', | |
| 'sec-fetch-site': 'same-site', | |
| 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', | |
| 'x-clipdrop-pro-client': 'false' | |
| } | |
| response = requests.request("POST", url, headers=headers, files=files) | |
| try: | |
| print(response.json()) | |
| if("error" in response.json().keys()): | |
| imageGenrated = 100 | |
| return HttpResponse(json.dumps(response.json()),content_type="application/json") | |
| except: | |
| pass | |
| return HttpResponse(response.content, content_type="image/png") | |
| return HttpResponse(json.dumps({"error":"You were not supposed to be here."}), content_type="application/json") | |
| def imageUpscaler(request): | |
| global access_token, imageGenrated,startTime | |
| if request.method == 'POST': | |
| image = request.FILES['image'] | |
| upscale = request.POST['upscale'] | |
| endTime = datetime.now() | |
| imageGenrated = imageGenrated + 1 | |
| print((endTime - startTime).total_seconds()) | |
| if (endTime - startTime).total_seconds() > 360 or imageGenrated > 10: | |
| access_token = "" | |
| imageGenrated = 0 | |
| startTime = datetime.now() | |
| if access_token == "": | |
| access_token = tokenGenrator(request) | |
| url = "https://api.clipdrop.co/super-resolution/v1" | |
| payload={'upscale': upscale,'output_format': 'png'} | |
| files=[ | |
| ('image_file',(image.name,image)) | |
| ] | |
| headers = { | |
| 'authority': 'api.clipdrop.co', | |
| 'accept': 'application/zip', | |
| 'accept-language': 'en-US,en;q=0.9', | |
| 'authorization': 'Bearer '+access_token, | |
| 'origin': 'https://clipdrop.co', | |
| 'sec-ch-ua': '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"', | |
| 'sec-ch-ua-mobile': '?0', | |
| 'sec-ch-ua-platform': '"Windows"', | |
| 'sec-fetch-dest': 'empty', | |
| 'sec-fetch-mode': 'cors', | |
| 'sec-fetch-site': 'same-site', | |
| 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', | |
| 'x-clipdrop-pro-client': 'false' | |
| } | |
| response = requests.request("POST", url, headers=headers, data=payload, files=files) | |
| try: | |
| if("error" in response.json().keys()): | |
| imageGenrated = 100 | |
| return HttpResponse(json.dumps(response.json()),content_type="application/json") | |
| except: | |
| pass | |
| return HttpResponse(response.content, content_type="image/png") | |
| return HttpResponse(json.dumps({"error":"You were not supposed to be here."}), content_type="application/json") | |
| def textRemoval(request): | |
| global access_token, imageGenrated,startTime | |
| if request.method == 'POST': | |
| image = request.FILES['image'] | |
| endTime = datetime.now() | |
| imageGenrated = imageGenrated + 1 | |
| print((endTime - startTime).total_seconds()) | |
| if (endTime - startTime).total_seconds() > 360 or imageGenrated > 10: | |
| access_token = "" | |
| imageGenrated = 0 | |
| startTime = datetime.now() | |
| if access_token == "": | |
| access_token = tokenGenrator(request) | |
| url = "https://api.clipdrop.co/remove-text/v1" | |
| files=[ | |
| ('image_file',(image.name,image)) | |
| ] | |
| headers = { | |
| 'authority': 'api.clipdrop.co', | |
| 'accept': 'application/zip', | |
| 'accept-language': 'en-US,en;q=0.9', | |
| 'authorization': 'Bearer '+access_token, | |
| 'origin': 'https://clipdrop.co', | |
| 'sec-ch-ua': '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"', | |
| 'sec-ch-ua-mobile': '?0', | |
| 'sec-ch-ua-platform': '"Windows"', | |
| 'sec-fetch-dest': 'empty', | |
| 'sec-fetch-mode': 'cors', | |
| 'sec-fetch-site': 'same-site', | |
| 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', | |
| 'x-clipdrop-pro-client': 'false' | |
| } | |
| response = requests.request("POST", url, headers=headers, files=files) | |
| try: | |
| if("error" in response.json().keys()): | |
| imageGenrated = 100 | |
| return HttpResponse(json.dumps(response.json()),content_type="application/json") | |
| except: | |
| pass | |
| return HttpResponse(response.content, content_type="image/png") | |
| return HttpResponse(json.dumps({"error":"You were not supposed to be here."}), content_type="application/json") | |
| def gtokenSet(request): | |
| global gtoken | |
| if request.method == 'GET': | |
| gtoken = request.GET.get('gtoken') | |
| return HttpResponse(json.dumps({"msg":"Token Set"}), content_type="application/json") | |
| return HttpResponse(json.dumps({"msg":"Token Not Set"}), content_type="application/json") | |
| def purifySet(request): | |
| global purifyAPI | |
| if request.method == 'GET': | |
| purifyAPI = request.GET.get('purifyAPI') | |
| return HttpResponse(json.dumps({"msg":"Token Set"}), content_type="application/json") | |
| return HttpResponse(json.dumps({"msg":"Token Not Set"}), content_type="application/json") | |
| def visionAI(request): | |
| global gtoken,purifyAPI | |
| if request.method == 'POST': | |
| image = request.FILES['image'] | |
| encoded_string = base64.b64encode(image.read()).decode('utf-8') | |
| url = "https://content-vision.googleapis.com/v1/images:annotate?alt=json&key=AIzaSyBeo4NGA__U6Xxy-aBE6yFm19pgq8TY-TM" | |
| payload = {"requests":[{"image":{"content":encoded_string},"features": [{"type": "LANDMARK_DETECTION","maxResults": 50},{"type": "FACE_DETECTION","maxResults": 50},{"type": "OBJECT_LOCALIZATION","maxResults": 50},{"type": "LOGO_DETECTION","maxResults": 50},{"type": "LABEL_DETECTION","maxResults": 50},{"type": "DOCUMENT_TEXT_DETECTION","maxResults": 50,"model": "builtin/latest"},{"type": "SAFE_SEARCH_DETECTION","maxResults": 100}]}]} | |
| headers = { | |
| 'authority': 'content-vision.googleapis.com', | |
| 'accept': '*/*', | |
| 'accept-language': 'en-US,en;q=0.9,gu;q=0.8', | |
| 'content-type': 'application/json', | |
| 'origin': 'https://content-vision.googleapis.com', | |
| 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', | |
| 'x-origin': 'https://explorer.apis.google.com', | |
| 'x-requested-with': 'XMLHttpRequest' | |
| } | |
| print(gtoken) | |
| try: | |
| response = requests.request("POST", url, headers=headers, data=json.dumps(payload)) | |
| print(response.json()["responses"][0].keys()) | |
| data = {} | |
| try: | |
| data["Label"] = response.json()["responses"][0]["labelAnnotations"] | |
| except: | |
| pass | |
| try: | |
| data["Logo"] = response.json()["responses"][0]["logoAnnotations"] | |
| except: | |
| pass | |
| try: | |
| data["Text"] = response.json()["responses"][0]["fullTextAnnotation"]["text"] | |
| except: | |
| pass | |
| try: | |
| data["Safe Search"] = response.json()["responses"][0]["safeSearchAnnotation"] | |
| except: | |
| pass | |
| try: | |
| data["Object"] = response.json()["responses"][0]["localizedObjectAnnotations"] | |
| except: | |
| pass | |
| try: | |
| data["Face"] = response.json()["responses"][0]["faceAnnotations"] | |
| except: | |
| pass | |
| # try: | |
| # imgUrl = imgUrlGen(image) | |
| # url = "https://im-api1.webpurify.com/services/rest/?api_key="+purifyAPI+"&cats=nudity,wad,offensive,gore,text,faces,celebrities,ocr,scam&method=webpurify.hybrid.imgcheck&threshold_nudity_lt=50&imgurl="+imgUrl | |
| # response = requests.request("GET", url) | |
| # purifyData = xmltodict.parse(response.text) | |
| # data["Summary"] = purifyData["rsp"] | |
| # except: | |
| # print("Purify API Error") | |
| # pass | |
| return HttpResponse(json.dumps({"data":data}), content_type="application/json") | |
| except: | |
| print("Gtoken API Error") | |
| return HttpResponse(json.dumps({"error":"Gtoken API Error"}), content_type="application/json") | |
| return HttpResponse(json.dumps({"error":"You were not supposed to be here."}), content_type="application/json") | |
| def genrator(prompt,style): | |
| global token | |
| url = "https://paint.api.wombo.ai/api/tasks" | |
| payload = "{\"premium\":false}" | |
| headers = { | |
| 'sec-ch-ua': | |
| '"Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"', | |
| 'Authorization': token, | |
| 'x-app-version': 'WEB-1.90.1', | |
| 'sec-ch-ua-mobile': '?0', | |
| 'Content-Type': 'text/plain;charset=UTF-8', | |
| 'User-Agent': | |
| 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36', | |
| 'sec-ch-ua-platform': '"Windows"', | |
| 'Accept': '*/*', | |
| 'host': 'paint.api.wombo.ai' | |
| } | |
| response = requests.request("POST", url, headers=headers, data=payload) | |
| id = str(response.json()['id']) | |
| url = "https://paint.api.wombo.ai/api/tasks/" + id | |
| payload = "{\"input_spec\":{\"prompt\":\"" + prompt + "\",\"style\":"+str(style)+",\"display_freq\":10}}" | |
| headers = { | |
| 'sec-ch-ua': | |
| '"Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"', | |
| 'Authorization': token, | |
| 'x-app-version': 'WEB-1.90.1', | |
| 'sec-ch-ua-mobile': '?0', | |
| 'Content-Type': 'text/plain;charset=UTF-8', | |
| 'User-Agent': | |
| 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36', | |
| 'sec-ch-ua-platform': '"Windows"', | |
| 'Accept': '*/*', | |
| 'host': 'paint.api.wombo.ai' | |
| } | |
| response = requests.request("PUT", url, headers=headers, data=payload) | |
| url = "https://paint.api.wombo.ai/api/tasks/" + id | |
| payload = {} | |
| headers = { | |
| 'sec-ch-ua': | |
| '"Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"', | |
| 'Authorization': token, | |
| 'x-app-version': 'WEB-1.90.1', | |
| 'sec-ch-ua-mobile': '?0', | |
| 'User-Agent': | |
| 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36', | |
| 'sec-ch-ua-platform': '"Windows"', | |
| 'Accept': '*/*', | |
| 'host': 'paint.api.wombo.ai' | |
| } | |
| response = requests.request("GET", url, headers=headers, data=payload) | |
| count = 1 | |
| while response.json()["result"] == None and count < 30: | |
| time.sleep(1) | |
| response = requests.request("GET", url, headers=headers, data=payload) | |
| count = count + 1 | |
| try: | |
| returnData = "https://images.wombo.art/generated/" + response.json()['photo_url_list'][-1].split("generated/")[1] | |
| return returnData | |
| except: | |
| return "Error try again" | |
| def imageGen(request): | |
| global token | |
| if request.method == 'POST': | |
| prompt = request.POST.get('prompt') | |
| style = request.POST.get('style') | |
| try: | |
| link = genrator(prompt,style) | |
| return HttpResponse(json.dumps({"data":link}), content_type="application/json") | |
| except: | |
| url = "https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=AIzaSyBeo4NGA__U6Xxy-aBE6yFm19pgq8TY-TM" | |
| payload = "{returnSecureToken: true}" | |
| headers = {'Content-Type': 'application/javascript'} | |
| response = requests.request("POST", url, headers=headers, data=payload) | |
| token = "bearer " + str(response.json()['idToken']) | |
| link = genrator(prompt,style) | |
| return HttpResponse(json.dumps({"data":link}), content_type="application/json") | |
| return HttpResponse(json.dumps({"error":"You were not supposed to be here."}), content_type="application/json") | |
| def reimagine(request): | |
| global access_token, imageGenrated,startTime | |
| if request.method == 'POST': | |
| image = request.FILES['image'] | |
| # resize image to max 768x768 | |
| image = Image.open(image) | |
| if image.size[0] > 768 or image.size[1] > 768: | |
| if image.size[0] > image.size[1]: | |
| image = image.resize((768, int(image.size[1]*768/image.size[0]))) | |
| else: | |
| image = image.resize((int(image.size[0]*768/image.size[1]), 768)) | |
| image = image.convert('RGB') | |
| # convert image to bytes | |
| imageByteArr = io.BytesIO() | |
| image.save(imageByteArr, format='PNG') | |
| image = imageByteArr.getvalue() | |
| endTime = datetime.now() | |
| imageGenrated = imageGenrated + 1 | |
| print((endTime - startTime).total_seconds()) | |
| if (endTime - startTime).total_seconds() > 360 or imageGenrated > 10: | |
| access_token = "" | |
| imageGenrated = 0 | |
| startTime = datetime.now() | |
| if access_token == "": | |
| access_token = tokenGenrator(request) | |
| url = "https://api.clipdrop.co/diffusion/v1/image-variations" | |
| files=[ | |
| ('image_file',('image.png',image,'image/png')) | |
| ] | |
| headers = { | |
| 'authority': 'api.clipdrop.co', | |
| 'accept': 'application/zip', | |
| 'accept-language': 'en-US,en;q=0.9', | |
| 'authorization': 'Bearer '+access_token, | |
| 'origin': 'https://clipdrop.co', | |
| 'sec-ch-ua': '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"', | |
| 'sec-ch-ua-mobile': '?0', | |
| 'sec-ch-ua-platform': '"Windows"', | |
| 'sec-fetch-dest': 'empty', | |
| 'sec-fetch-mode': 'cors', | |
| 'sec-fetch-site': 'same-site', | |
| 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', | |
| 'x-clipdrop-pro-client': 'false' | |
| } | |
| payload={"amount_to_generate":4} | |
| response = requests.request("POST", url, headers=headers, data=payload, files=files) | |
| try: | |
| if("error" in response.json().keys()): | |
| imageGenrated = 100 | |
| return HttpResponse(json.dumps(response.json()),content_type="application/json") | |
| except: | |
| pass | |
| return HttpResponse(response.content, content_type="application/zip") | |
| return HttpResponse(json.dumps({"error":"You were not supposed to be here."}), content_type="application/json") | |