Created
August 3, 2020 06:27
-
-
Save shubham7298/2eacec3080ee780069d0b8b562bc3b26 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from flask import Flask, request | |
from pymongo import MongoClient | |
from flask_cors import CORS, cross_origin | |
# import cloudinary | |
# import cloudinary.uploader | |
# import cloudinary.api | |
import json | |
# from smsSender import send_sms | |
app = Flask(__name__) | |
CORS(app) | |
CONNECTION_STRING = "mongodb://admin:admin@todo-shard-00-00-7sv5o.mongodb.net:27017,todo-shard-00-01-7sv5o.mongodb.net:27017,todo-shard-00-02-7sv5o.mongodb.net:27017/sih2020?ssl=true&replicaSet=ToDo-shard-0&authSource=admin&retryWrites=true&w=majority" | |
client = MongoClient(CONNECTION_STRING) | |
db = client.get_database('sih2020') | |
@app.route('/getall', methods=["GET","POST"]) | |
@cross_origin(supports_credentials=True) | |
def get_all(): | |
cursor = db.ar.find({},{'_id':0}) | |
alldata = [ii for ii in cursor] | |
return json.dumps(alldata) | |
@app.route('/getsites', methods=["GET","POST"]) | |
@cross_origin() | |
def get_sites(): | |
cursor = db.ar.distinct("site") | |
alldata = [db.ar.find_one({'site':doc},{'_id':0,'site':1, 'desc':1, 'area':1, 'city':1, 'state':1,'name':1}) for doc in cursor] | |
return json.dumps(alldata) | |
@app.route('/images', methods=["GET","POST"]) | |
@cross_origin() | |
def get_image_by_sites(): | |
site = request.args.get('site') | |
cursor = db.ar.find({'site':site},{'_id':0,'url':1}) | |
alldata = [ii['url'] for ii in cursor] | |
data = db.ar.find_one({'site':site},{'_id':0,'site':1, 'desc':1, 'area':1, 'city':1, 'state':1,'name':1}) | |
data['url'] = alldata | |
return json.dumps(data) | |
@app.route('/hashp', methods=["POST"]) | |
@cross_origin() | |
def upload_image(): | |
content_type = request.content_type | |
if (content_type == 'application/x-www-form-urlencoded'): | |
url = request.form["url"] | |
phash = request.form["phash"] | |
site = request.form["site"] | |
lat = request.form["lat"] | |
longg = request.form["long"] | |
desc = request.form["desc"] | |
area = request.form["area"] | |
city = request.form["city"] | |
state = request.form["state"] | |
name = request.form["name"] | |
elif (content_type=='text/html' or content_type == 'application/json'): | |
url = request.json["url"] | |
phash = request.json["phash"] | |
site = request.json["site"] | |
lat = request.json["lat"] | |
longg = request.json["long"] | |
desc = request.json["desc"] | |
area = request.json["area"] | |
city = request.json["city"] | |
state = request.json["state"] | |
name = request.json["name"] | |
flag=0 | |
simurl = "https://user-images.githubusercontent.com/31368033/89123739-55348900-d4ef-11ea-9376-b8c73ded3ffb.png" | |
cursor = db.ar.find({},{'_id':0,'url':1,'phash':1}) | |
for doc in cursor: | |
score = simChk(doc['phash'],phash) | |
print(phash," ",doc['phash']) | |
print(score) | |
if score>0.8: | |
flag=1 | |
simurl = doc['url'] | |
break | |
db.ar.insert_one({ | |
"category":2, | |
"url": url, | |
"phash":phash, | |
"site":site, | |
"desc":desc, | |
"area":area, | |
"city":city, | |
"state":state, | |
"flag":flag, | |
"lat":lat, | |
"simimage": simurl, | |
"long":longg, | |
"name":name | |
}) | |
return "Uploaded Successfuly" | |
else: | |
return "Only POST allowed" | |
@app.route('/ardata', methods=["POST"]) | |
@cross_origin() | |
def upload_ar_image(): | |
content_type = request.content_type | |
if (content_type == 'application/x-www-form-urlencoded'): | |
# url = request.form["url"] | |
# phash = request.form["phash"] | |
ar_data = request.form["arvalue"] | |
manual_data = request.form["manualvalue"] | |
site = request.form["site"] | |
city = request.form["city"] | |
state = request.form["state"] | |
area = request.form["area"] | |
name = request.form["name"] | |
desc = request.form["desc"] | |
lat = request.form["lat"] | |
longg = request.form["long"] | |
elif (content_type=='text/html' or content_type == 'application/json'): | |
# url = request.json["url"] | |
# phash = request.json["phash"] | |
desc = request.json["desc"] | |
ar_data = request.json["arvalue"] | |
manual_data = request.json["manualvalue"] | |
site = request.json["site"] | |
area = request.json["area"] | |
name = request.json["name"] | |
city = request.json["city"] | |
state = request.json["state"] | |
lat = request.json["lat"] | |
longg = request.json["long"] | |
flag=0 | |
if(int(manual_data)<int(ar_data)-5 or int(manual_data)>int(ar_data)+5): | |
flag=1 | |
simurl = "https://user-images.githubusercontent.com/31368033/89123739-55348900-d4ef-11ea-9376-b8c73ded3ffb.png" | |
db.ar.insert_one({ | |
"category":1, | |
"url": simurl, | |
"phash":'f10773f1cd269246', | |
"ardata":ar_data, | |
"manualdata":manual_data, | |
"site":site, | |
"desc":desc, | |
"area":area, | |
"city":city, | |
"state":state, | |
"flag":flag, | |
"lat":lat, | |
"long":longg, | |
"name":name | |
}) | |
return "Jai Hind, dosto" | |
else: | |
return "Only post requests plz" | |
# except Exception as e: | |
# return "bhakk! Sab galat kar diye" | |
# @app.route("/sms",methods=['GET']) | |
# def sms(): | |
# site = request.args['site'] | |
# doc = db.ar.find_one( | |
# {"site": site}, | |
# {"_id": 0, "site": 1, "area": 1, "city": 1, "state": 1}, | |
# ) | |
# # print(doc) | |
# enigma = '7517058099' | |
# shellkore = '7057782437' | |
# mangu = '9325611554' | |
# pikachu = '8788539135' | |
# msg = f"You are requested for verification of site. Please find the site details:\ | |
# \n site :{doc['site']}\n area : {doc['area']} \n city: {doc['city']} \n state: {doc['state']}" | |
# # print(msg) | |
# send_sms(msg,enigma) | |
# send_sms(msg,shellkore) | |
# send_sms(msg,mangu) | |
# send_sms(msg,pikachu) | |
# # send_sms('hell is deeper than what you think!!','+917057782437') | |
# return f'sms sent : {msg}' | |
# @app.route('/run') | |
# @cross_origin() | |
def simChk(hash1, hash2): | |
xorResult = [bin(int(hash1[i],base = 16)^int(hash2[i],base = 16))[2:] for i in range(len(hash1))] | |
countOfOne = 0 | |
for e in xorResult: | |
for x in e: | |
if(x=='1'): | |
countOfOne+=1 | |
print(countOfOne) | |
print(1-(countOfOne/64.0)) | |
return (1-(countOfOne/64.0)) | |
@app.route("/flagged") | |
def flagged(): | |
cursor = db.ar.find({"flag":1}, {"_id": 0}) | |
result = [elem for elem in cursor] | |
return json.dumps(result) | |
@app.route('/') | |
@cross_origin() | |
def index(): | |
return "flask running!" | |
if __name__ == '__main__': | |
app.run(host='0.0.0.0',port=8000, debug=True) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment