Big improve on gchange likenator
This commit is contained in:
parent
bc758cdc62
commit
7be1821efb
|
@ -4,7 +4,7 @@ import argparse, sys, os
|
||||||
from os.path import join, dirname
|
from os.path import join, dirname
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
from lib.gchange import ReadLikes, SendLikes, DeleteLikes
|
from lib.gchange import ReadLikes, SendLikes, UnLikes
|
||||||
|
|
||||||
# Get variables environment
|
# Get variables environment
|
||||||
if not os.path.isfile('.env'):
|
if not os.path.isfile('.env'):
|
||||||
|
@ -23,32 +23,33 @@ if not dunikey or not pod:
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
|
|
||||||
subparsers = parser.add_subparsers()
|
subparsers = parser.add_subparsers()
|
||||||
readLike_cmd = subparsers.add_parser('readlike', help="Lire les likes d'un profile")
|
# readLike_cmd = subparsers.add_parser('readlike', help="Lire les likes d'un profile")
|
||||||
like_cmd = subparsers.add_parser('like', help="Liker un profile")
|
like_cmd = subparsers.add_parser('like', help="Voir les likes d'un profile / Liker un profile (option -s NOTE")
|
||||||
deleteLike_cmd = subparsers.add_parser('deletelike', help="Supprimer un like")
|
unlike_cmd = subparsers.add_parser('unlike', help="Supprimer un like")
|
||||||
|
|
||||||
if len(sys.argv) <= 1 or not sys.argv[1] in ('readlike','like','deletelike'):
|
if len(sys.argv) <= 1 or not sys.argv[1] in ('like','unlike'):
|
||||||
sys.stderr.write("Veuillez indiquer une commande valide:\n\n")
|
sys.stderr.write("Veuillez indiquer une commande valide:\n\n")
|
||||||
parser.print_help()
|
parser.print_help()
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
readLike_cmd.add_argument('-p', '--profile', help="Profile cible")
|
# readLike_cmd.add_argument('-p', '--profile', help="Profile cible")
|
||||||
|
|
||||||
like_cmd.add_argument('-p', '--profile', help="Profile cible")
|
like_cmd.add_argument('-p', '--profile', help="Profile cible")
|
||||||
like_cmd.add_argument('-s', '--stars', type=int, help="Nombre d'étoile")
|
like_cmd.add_argument('-s', '--stars', type=int, help="Nombre d'étoile")
|
||||||
|
|
||||||
deleteLike_cmd.add_argument('-i', '--id', help="ID du like à supprimer")
|
unlike_cmd.add_argument('-p', '--profile', help="Profile à déliker")
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
# Build gchange class
|
# Build gchange class
|
||||||
if sys.argv[1] == "readlike":
|
if sys.argv[1] == "like":
|
||||||
gchange = ReadLikes(dunikey, pod)
|
if args.stars:
|
||||||
gchange.readLikes(args.profile)
|
gchange = SendLikes(dunikey, pod)
|
||||||
elif sys.argv[1] == "like":
|
gchange.like(args.profile, args.stars)
|
||||||
gchange = SendLikes(dunikey, pod)
|
else:
|
||||||
gchange.like(args.profile, args.stars)
|
gchange = ReadLikes(dunikey, pod)
|
||||||
elif sys.argv[1] == "deletelike":
|
gchange.readLikes(args.profile)
|
||||||
gchange = DeleteLikes(dunikey, pod)
|
elif sys.argv[1] == "unlike":
|
||||||
gchange.deleteLike(args.id)
|
gchange = UnLikes(dunikey, pod)
|
||||||
|
gchange.unLike(args.profile)
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,6 @@ class ReadLikes:
|
||||||
|
|
||||||
# Configure JSON document to send
|
# Configure JSON document to send
|
||||||
def configDoc(self, profile):
|
def configDoc(self, profile):
|
||||||
timeSent = int(time.time())
|
|
||||||
if not profile: profile = self.issuer
|
if not profile: profile = self.issuer
|
||||||
|
|
||||||
data = {}
|
data = {}
|
||||||
|
@ -41,7 +40,7 @@ class ReadLikes:
|
||||||
{'term': {'kind': 'STAR'}}
|
{'term': {'kind': 'STAR'}}
|
||||||
]
|
]
|
||||||
data['query']['bool']['should'] = {'term':{'issuer': self.issuer}}
|
data['query']['bool']['should'] = {'term':{'issuer': self.issuer}}
|
||||||
data['size'] = 1
|
data['size'] = 5000
|
||||||
data['_source'] = ['issuer','level']
|
data['_source'] = ['issuer','level']
|
||||||
data['aggs'] = {
|
data['aggs'] = {
|
||||||
'level_sum': {
|
'level_sum': {
|
||||||
|
@ -75,21 +74,36 @@ class ReadLikes:
|
||||||
|
|
||||||
def parseResult(self, result):
|
def parseResult(self, result):
|
||||||
result = json.loads(result)
|
result = json.loads(result)
|
||||||
|
totalLikes = result['hits']['total']
|
||||||
|
totalValue = result['aggregations']['level_sum']['value']
|
||||||
|
score = totalValue/totalLikes
|
||||||
raw = result['hits']['hits']
|
raw = result['hits']['hits']
|
||||||
|
finalPrint = {}
|
||||||
|
finalPrint['likes'] = []
|
||||||
for i in raw:
|
for i in raw:
|
||||||
|
issuer = i['_source']['issuer']
|
||||||
id = i['_id']
|
id = i['_id']
|
||||||
level = i['_source']['level']
|
level = i['_source']['level']
|
||||||
print('ID:', id,'\nLevel:', level)
|
if issuer == self.issuer:
|
||||||
|
finalPrint['yours'] = { 'id' : id, 'level' : level }
|
||||||
|
else:
|
||||||
|
finalPrint['likes'].append({ 'issuer' : issuer, 'level' : level })
|
||||||
|
finalPrint['score'] = score
|
||||||
|
|
||||||
|
return json.dumps(finalPrint)
|
||||||
|
|
||||||
def readLikes(self, profile=False):
|
def readLikes(self, profile=False):
|
||||||
document = self.configDoc(profile)
|
document = self.configDoc(profile)
|
||||||
result = self.sendDocument(document)
|
result = self.sendDocument(document)
|
||||||
self.parseResult(result)
|
result = self.parseResult(result)
|
||||||
|
|
||||||
|
print(result)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#################### Sending class ####################
|
#################### Like class ####################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -167,12 +181,12 @@ class SendLikes:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#################### Sending class ####################
|
#################### Unlike class ####################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class DeleteLikes:
|
class UnLikes:
|
||||||
def __init__(self, dunikey, pod):
|
def __init__(self, dunikey, pod):
|
||||||
# Get my pubkey from my private key
|
# Get my pubkey from my private key
|
||||||
try:
|
try:
|
||||||
|
@ -189,6 +203,22 @@ class DeleteLikes:
|
||||||
if not re.match(PUBKEY_REGEX, self.issuer) or len(self.issuer) > 45:
|
if not re.match(PUBKEY_REGEX, self.issuer) or len(self.issuer) > 45:
|
||||||
sys.stderr.write("La clé publique n'est pas au bon format.\n")
|
sys.stderr.write("La clé publique n'est pas au bon format.\n")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Check if you liked this profile
|
||||||
|
def checkLike(self, pubkey):
|
||||||
|
|
||||||
|
readProfileLikes = ReadLikes(self.dunikey, self.pod)
|
||||||
|
document = readProfileLikes.configDoc(pubkey)
|
||||||
|
result = readProfileLikes.sendDocument(document)
|
||||||
|
result = readProfileLikes.parseResult(result)
|
||||||
|
result = json.loads(result)
|
||||||
|
|
||||||
|
if 'yours' in result:
|
||||||
|
myLike = result['yours']['id']
|
||||||
|
return myLike
|
||||||
|
else:
|
||||||
|
sys.stderr.write("Vous n'avez pas liké ce profile\n")
|
||||||
|
return False
|
||||||
|
|
||||||
# Configure JSON document to send
|
# Configure JSON document to send
|
||||||
def configDoc(self, idLike):
|
def configDoc(self, idLike):
|
||||||
|
@ -236,7 +266,9 @@ class DeleteLikes:
|
||||||
sys.stderr.write("Echec de l'envoi du document de lecture des messages...\n" + result.text + '\n')
|
sys.stderr.write("Echec de l'envoi du document de lecture des messages...\n" + result.text + '\n')
|
||||||
|
|
||||||
|
|
||||||
def deleteLike(self, idLike):
|
def unLike(self, pubkey):
|
||||||
document = self.configDoc(idLike)
|
idLike = self.checkLike(pubkey)
|
||||||
self.sendDocument(document)
|
if idLike:
|
||||||
|
document = self.configDoc(idLike)
|
||||||
|
self.sendDocument(document)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue