134 lines
4.3 KiB
Python
Executable File
134 lines
4.3 KiB
Python
Executable File
import sys, re, json, requests, base64
|
|
from time import time
|
|
from lib.cesiumCommon import CesiumCommon
|
|
from lib.gvaWallets import ListWallets
|
|
|
|
|
|
class GeolocProfiles(CesiumCommon):
|
|
# Configure JSON document POST ready to send
|
|
def getCesiumProfiles(self):
|
|
response = requests.post(
|
|
"https://g1.data.e-is.pro/user/profile/_search?scroll=2m",
|
|
json={
|
|
"query": {
|
|
"constant_score": {
|
|
"filter": [
|
|
{"exists": {"field": "geoPoint"}},
|
|
{
|
|
"geo_bounding_box": {
|
|
"geoPoint": {
|
|
"top_left": {"lat": 90, "lon": -180},
|
|
"bottom_right": {"lat": -90, "lon": 180},
|
|
}
|
|
}
|
|
},
|
|
]
|
|
}
|
|
},
|
|
"_source": [
|
|
"title",
|
|
"avatar._content_type",
|
|
"description",
|
|
"city",
|
|
"address",
|
|
"socials.url",
|
|
"creationTime",
|
|
"membersCount",
|
|
"type",
|
|
"geoPoint",
|
|
],
|
|
"size": 20000,
|
|
},
|
|
)
|
|
|
|
scroll_id = response.json()["_scroll_id"]
|
|
finalResult = response.json()["hits"]["hits"]
|
|
|
|
while True:
|
|
# Effectuez une requête de défilement pour obtenir la page suivante
|
|
response_scroll = requests.post(
|
|
"https://g1.data.e-is.pro/_search/scroll",
|
|
json={"scroll_id": scroll_id, "scroll": "2m"},
|
|
)
|
|
|
|
# Vérifiez si la réponse est vide (aucun résultat) ou si la durée du défilement est écoulée
|
|
if (
|
|
not response_scroll.json()["hits"]["hits"]
|
|
or "error" in response_scroll.json()
|
|
):
|
|
break
|
|
else:
|
|
finalResult = finalResult + response_scroll.json()["hits"]["hits"]
|
|
|
|
# Traitez les résultats ici
|
|
|
|
# Une fois terminé, supprimez le contexte de défilement
|
|
requests.delete(
|
|
"https://g1.data.e-is.pro/_search/scroll", json={"scroll_id": [scroll_id]}
|
|
)
|
|
|
|
return finalResult
|
|
|
|
def getGVAProfiles(self, node):
|
|
gva = ListWallets(node, False, False, False, False)
|
|
return gva.sendDoc()
|
|
|
|
def formatProfiles(self, cesiumProfiles, gvaProfiles):
|
|
walletsResult = []
|
|
for profile in cesiumProfiles:
|
|
source = profile["_source"]
|
|
pubkey = profile["_id"]
|
|
try:
|
|
isMember = gvaProfiles[pubkey]["id"]["isMember"]
|
|
userId = gvaProfiles[pubkey]["id"]["username"]
|
|
except:
|
|
isMember = False
|
|
userId = None
|
|
|
|
try:
|
|
title = source["title"]
|
|
except:
|
|
title = None
|
|
|
|
try:
|
|
city = source["city"]
|
|
except:
|
|
city = None
|
|
|
|
try:
|
|
avatar = source["avatar"]
|
|
except:
|
|
avatar: None
|
|
|
|
try:
|
|
socials = source["socials"]
|
|
except:
|
|
socials = None
|
|
|
|
try:
|
|
description = source["description"]
|
|
except:
|
|
description = None
|
|
|
|
try:
|
|
address = source["address"]
|
|
except:
|
|
address = None
|
|
|
|
walletsResult.append(
|
|
{
|
|
"pubkey": pubkey,
|
|
**({"address": address} if address else {}),
|
|
**({"city": city} if city else {}),
|
|
**({"description": description} if description else {}),
|
|
**({"avatar": avatar} if avatar else {}),
|
|
**({"userId": userId} if userId else {}),
|
|
"isMember": isMember,
|
|
"geoPoint": source["geoPoint"],
|
|
**({"socials": socials} if socials else {}),
|
|
**({"title": title} if title else {}),
|
|
}
|
|
)
|
|
|
|
return walletsResult
|