Untitled

mail@pastecode.io avatar
unknown
python
2 years ago
6.8 kB
2
Indexable
Never
from bs4 import BeautifulSoup
from urllib.request import urlopen, Request
import re
import requests
import discord
from dotenv import load_dotenv
from os import getenv
from discord.ext import commands

intents = discord.Intents().all()
bot = commands.Bot(command_prefix="!", intents=intents)
load_dotenv()
match = []
data = []
dropdabombman = False


def action_is_coming(team1_name, team2_name):
    joukkuenimi = get_teamname(team1_name)
    print(joukkuenimi)
    match = get_steamid(joukkue1)
    elo = elo_calculator(match)
    elo_stats = sort_elo(elo)
    pelaaja_count = pelaaja_statsit(match)
    elo_oikeassa_muodossa = list_to_string(elo)
    if elo_stats[1] > 0:
        all_info = "**Joukkueen nimi: " + joukkuenimi + "**" + "\n" + "Pelaajien määrä: " + str(
            pelaaja_count) + "\n" + "Pelaajien faceit elot: " + str(
            elo_oikeassa_muodossa) + "\n" + "Joukkueen avg faceit elo: " + \
                    str(int(elo_stats[0])) + "\n" + "Joukkueen tähtipelaajien avg faceit elo: " + str(
            int(elo_stats[1])) + "\n"
    else:
        all_info = "**Joukkueen nimi: " + joukkuenimi + "**" + "\n" + "Pelaajien määrä: " + str(
            pelaaja_count) + "\n" + "Pelaajien faceit elot: " + str(
            elo_oikeassa_muodossa) + "\n" + "Joukkueen avg faceit elo: " + \
                   str(int(elo_stats[0])) + "\n" + "Joukkueen tähtipelaajien avg faceit elo: " + str(int(elo_stats[0])) + "\n"

    joukkuenimi = get_teamname(team2_name)
    print(joukkuenimi)
    match = get_steamid(joukkue2)
    elo = elo_calculator(match)
    elo_stats = sort_elo(elo)
    pelaaja_count = pelaaja_statsit(match)

    elo_oikeassa_muodossa = list_to_string(elo)
    if elo_stats[1] > 0:
        all_info2 = "**Joukkueen nimi: " + joukkuenimi + "**" + "\n" + "Pelaajien määrä: " + str(
            pelaaja_count) + "\n" + "Pelaajien faceit elot: " + str(
            elo_oikeassa_muodossa) + "\n" + "Joukkueen avg faceit elo: " + \
                   str(int(elo_stats[0])) + "\n" + "Joukkueen tähtipelaajien avg faceit elo: " + str(
            int(elo_stats[1])) + "\n"
    else:
        all_info2 = "**Joukkueen nimi: " + joukkuenimi + "**" + "\n" + "Pelaajien määrä: " + str(
            pelaaja_count) + "\n" + "Pelaajien faceit elot: " + str(
            elo_oikeassa_muodossa) + "\n" + "Joukkueen avg faceit elo: " + \
                   str(int(elo_stats[
                               0])) + "\n" + "Joukkueen tähtipelaajien avg faceit elo: " + str(int(elo_stats[0])) + "\n"
    return all_info, all_info2


def list_to_string(list):
    str1 = ""
    for a in list:
        str1 += str(a) + " "
    return str1


def pelaaja_statsit(match):
    pelaajat_numeroina = str(len(match))
    print("Number of players: " + pelaajat_numeroina)
    return pelaajat_numeroina


def get_teamname(joukkue):
    for b in joukkue:
        joukkuenimi = (b.text)
    return joukkuenimi


def get_steamid(joukkue):
    for b in joukkue:
        parsed_text = (b.text)
        id = re.compile('765.*')
        match = id.findall(parsed_text)
        print(match)
    return match


def sort_elo(elo):
    elo.sort(reverse=True)
    print(elo)
    average_elo = sum(elo) / len(elo)
    if len(elo) >= 5:
        stars = (elo[0] + elo[1] + elo[2] + elo[3] + elo[4]) / 5
        print("Star lineup elo: " + str(int(stars)))
    else:
        stars = 0
    print("Average elo: " + str(int(average_elo)))
    return average_elo, stars

def souppers(url):
    page = urlopen(Request(url, headers={
    'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0'}))
    html_bytes = page.read()
    html = html_bytes.decode("utf-8")
    soup = BeautifulSoup(html, "html.parser")
    return soup


def link_check(link):
    request = requests.get(link)
    if request.status_code < 400:
        return True
    else:
        return False


def elo_calculator(steam_id):
    elo = []
    for a in steam_id:
        faceitfinder_url = "https://faceitfinder.com/profile/" + a
        #if link_check(faceitfinder_url):
        soup = souppers(faceitfinder_url)
        faceit_info = soup.find_all("div", {"class": "account-faceitinfo-container"})
        for b in faceit_info:
            faceit_stats = (b.text)
        elo_regex = re.compile('(?<=ELO: ).*')
       # name_regex = re.compile('^[^\\s].*')           // TODO: FAILED USERNAME CAPTURING
       # username = name_regex.findall(faceit_stats)
       # print(username)
        elo_points = elo_regex.findall(faceit_stats)

        '''for b in username:
            if b != "":
                userlist.append(username)'''

        for a in elo_points:
            if a != "":
                elo_point = int(elo_points[0])
                elo.append(elo_point)
        #else:
        #elo_point = -1
        #elo.append(elo_point)
    return elo


@bot.event
async def on_message(message):
    global joukkue1
    global joukkue2

    if message.author == bot.user:
        return
    if "!etsi" in message.content:
        data = message.content.split()
        if data[0] != "!etsi":
            await message.channel.send("!etsi ekana vitun daiju")
        elif len(data) == 2:
            pattern = re.compile('^https://play.toornament.com/en_US/tournaments/5678863007994986496/matches/.*/players$')
            match = re.search(pattern, data[1])
            if match:
                if link_check(data[1]):
                    soup = souppers(data[1])
                    joukkue1, joukkue2 = soup.find_all("div", {"class": ["size-1-of-2 mobile-size-full", "text-bold"]})
                    team1_name, team2_name = soup.find_all("h3")
                    joukkio1, joukkio2 = action_is_coming(team1_name, team2_name)
                    await message.channel.send(joukkio1)
                    await message.channel.send(joukkio2)
                else:
                    await message.channel.send("Linkkisi ei toiminut!")

            else:
                await message.channel.send("Lopeta se botin rikkominen, anna oikea url")
        else:
            await message.channel.send("Anna url senkin höpsöliini (ja pelkästään url :) )")
    elif message.content == "!apua" or message.content == "!help":
        await message.channel.send("Käytä komentoa muodossa !etsi https://play.toornament.com/en_US/tournaments/5678863007994986496/matches/5971603441757667451/players  . Katso että urli on esimerkin mukainen")
    elif "hidas" in message.content:
        await message.channel.send("Ite oot hidas")
    else:
        return


bot.run(getenv('TOKEN'))