Skip to content

Instantly share code, notes, and snippets.

@shubham7298
Created August 3, 2020 06:27
Show Gist options
  • Save shubham7298/2eacec3080ee780069d0b8b562bc3b26 to your computer and use it in GitHub Desktop.
Save shubham7298/2eacec3080ee780069d0b8b562bc3b26 to your computer and use it in GitHub Desktop.
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