from numerize import numerize 

failedToScan="Failed to scan your link! This may be due to an incorrect link, private/suspended account, deleted tweet, or recent changes to Twitter's API (Thanks, Elon!)."
failedToScanExtra = "\n\nTwitter gave me this error: "
tweetNotFound="Tweet not found."
unknownError="Unknown Error"
tweetSuspended="This Tweet is from a suspended account." 

videoDescLimit=220
tweetDescLimit=340
providerLimit=220

def genLikesDisplay(vnf):
    if vnf['retweets'] > 0:
        return ("💖 " + numerize.numerize(vnf['likes']) + " 🔁 " + numerize.numerize(vnf['retweets']))
    else:
        return ("💖 " + numerize.numerize(vnf['likes']))

def genQrtDisplay(qrt):
    verifiedCheck = "☑️" if ('verified' in qrt and qrt['verified']) else ""
    return ("\n\n【QRT of " + qrt['user_name'] + " (@" + qrt['user_screen_name'] + ")"+ verifiedCheck+":】\n\n'" + qrt['text'] + "'")

def genPollDisplay(poll):
    pctSplit=10
    output="\n\n"
    for choice in poll["options"]:
        output+=choice["name"]+"\n"+("█"*int(choice["percent"]/pctSplit)) +" "+str(choice["percent"])+"%\n"
    return output

# formats the top text of the embed
def formatProvider(base,vnf):
    finalText = base
    likes = genLikesDisplay(vnf)
    finalText += "\n" + likes
    if ('communityNote' in vnf and vnf['communityNote'] != None):
        finalText += "\n⚠️ Has community note"
    if len(finalText) > providerLimit:
        finalText = base
    return finalText

def formatEmbedDesc(type,body,qrt,pollData):
    # Trim the embed description to 248 characters, prioritizing poll and likes

    qrtType=None
    if qrt!=None:
        qrtType="Text"

    limit = videoDescLimit if type=="Video" or (qrt!=None and (qrtType=="Video")) else tweetDescLimit

    output = ""
    if pollData==None:
        pollDisplay=""
    else:
        pollDisplay=genPollDisplay(pollData)

    if qrt!=None:

        qrtDisplay=genQrtDisplay(qrt)
        if 'id' in qrt and ('https://twitter.com/'+qrt['screen_name']+'/status/'+qrt['id']) in body:
            body = body.replace(('https://twitter.com/'+qrt['screen_name']+'/status/'+qrt['id']),"")
            body = body.strip()
        body+=qrtDisplay
        qrt=None

    if type=="" or type=="Video":
        output = body+pollDisplay
    elif qrt==None:
        output= body+pollDisplay
    else:
        output= body
    if len(output)>limit:
        # find out how many characters we need to remove
        diff = len(output)-limit
        # remove the characters from body, add ellipsis
        body = body[:-(diff+1)]+"…"
        return formatEmbedDesc(type,body,qrt,pollData)
    else:
        return output