forked from axiom-team/jaklis
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 shutil import copyfile
|
||||
from dotenv import load_dotenv
|
||||
from lib.gchange import ReadLikes, SendLikes, DeleteLikes
|
||||
from lib.gchange import ReadLikes, SendLikes, UnLikes
|
||||
|
||||
# Get variables environment
|
||||
if not os.path.isfile('.env'):
|
||||
|
@ -23,32 +23,33 @@ if not dunikey or not pod:
|
|||
parser = argparse.ArgumentParser()
|
||||
|
||||
subparsers = parser.add_subparsers()
|
||||
readLike_cmd = subparsers.add_parser('readlike', help="Lire les likes d'un profile")
|
||||
like_cmd = subparsers.add_parser('like', help="Liker un profile")
|
||||
deleteLike_cmd = subparsers.add_parser('deletelike', help="Supprimer un like")
|
||||
# readLike_cmd = subparsers.add_parser('readlike', help="Lire les likes d'un profile")
|
||||
like_cmd = subparsers.add_parser('like', help="Voir les likes d'un profile / Liker un profile (option -s NOTE")
|
||||
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")
|
||||
parser.print_help()
|
||||
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('-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()
|
||||
|
||||
# Build gchange class
|
||||
if sys.argv[1] == "readlike":
|
||||
gchange = ReadLikes(dunikey, pod)
|
||||
gchange.readLikes(args.profile)
|
||||
elif sys.argv[1] == "like":
|
||||
gchange = SendLikes(dunikey, pod)
|
||||
gchange.like(args.profile, args.stars)
|
||||
elif sys.argv[1] == "deletelike":
|
||||
gchange = DeleteLikes(dunikey, pod)
|
||||
gchange.deleteLike(args.id)
|
||||
if sys.argv[1] == "like":
|
||||
if args.stars:
|
||||
gchange = SendLikes(dunikey, pod)
|
||||
gchange.like(args.profile, args.stars)
|
||||
else:
|
||||
gchange = ReadLikes(dunikey, pod)
|
||||
gchange.readLikes(args.profile)
|
||||
elif sys.argv[1] == "unlike":
|
||||
gchange = UnLikes(dunikey, pod)
|
||||
gchange.unLike(args.profile)
|
||||
|
||||
|
|
|
@ -28,7 +28,6 @@ class ReadLikes:
|
|||
|
||||
# Configure JSON document to send
|
||||
def configDoc(self, profile):
|
||||
timeSent = int(time.time())
|
||||
if not profile: profile = self.issuer
|
||||
|
||||
data = {}
|
||||
|
@ -41,7 +40,7 @@ class ReadLikes:
|
|||
{'term': {'kind': 'STAR'}}
|
||||
]
|
||||
data['query']['bool']['should'] = {'term':{'issuer': self.issuer}}
|
||||
data['size'] = 1
|
||||
data['size'] = 5000
|
||||
data['_source'] = ['issuer','level']
|
||||
data['aggs'] = {
|
||||
'level_sum': {
|
||||
|
@ -75,21 +74,36 @@ class ReadLikes:
|
|||
|
||||
def parseResult(self, result):
|
||||
result = json.loads(result)
|
||||
totalLikes = result['hits']['total']
|
||||
totalValue = result['aggregations']['level_sum']['value']
|
||||
score = totalValue/totalLikes
|
||||
raw = result['hits']['hits']
|
||||
finalPrint = {}
|
||||
finalPrint['likes'] = []
|
||||
for i in raw:
|
||||
issuer = i['_source']['issuer']
|
||||
id = i['_id']
|
||||
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):
|
||||
document = self.configDoc(profile)
|
||||
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):
|
||||
# Get my pubkey from my private key
|
||||
try:
|
||||
|
@ -189,6 +203,22 @@ class DeleteLikes:
|
|||
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.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
|
||||
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')
|
||||
|
||||
|
||||
def deleteLike(self, idLike):
|
||||
document = self.configDoc(idLike)
|
||||
self.sendDocument(document)
|
||||
def unLike(self, pubkey):
|
||||
idLike = self.checkLike(pubkey)
|
||||
if idLike:
|
||||
document = self.configDoc(idLike)
|
||||
self.sendDocument(document)
|
||||
|
||||
|
|
Loading…
Reference in New Issue