Untitled
unknown
python
3 years ago
6.8 kB
7
Indexable
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'))
Editor is loading...