Skip to content

Commit

Permalink
Added wyncraft tests and universocraft models
Browse files Browse the repository at this point in the history
  • Loading branch information
AjayACST committed May 1, 2021
1 parent c6c912e commit 35d0a31
Show file tree
Hide file tree
Showing 16 changed files with 804 additions and 672 deletions.
192 changes: 64 additions & 128 deletions mcsrvstats/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
import json
from typing import Any
from typing import Dict
from typing import List
from typing import Optional

import aiohttp
Expand All @@ -12,21 +11,16 @@
from .models import Aether
from .models import Atlas
from .models import Aztec
from .models import Classes
from .models import Creative
from .models import Factions
from .models import HiveAchievements
from .models import HiveRank
from .models import HiveStatus
from .models import Islands
from .models import Kitpvp
from .models import Manacube
from .models import Oasis
from .models import Parkour
from .models import Survival

# from .models import Classes

# from .models import WyncraftClasses
from .models import WyncraftClasses


class Client:
Expand Down Expand Up @@ -79,71 +73,11 @@ async def _get_json(self, url: str) -> Dict[str, Any]:
return data
raise ApiError("Api response not succesful")

async def hive_mc_achievments(self, username: str) -> HiveAchievements:
"""Hive Minceaft player achievements.
Args:
username (str): username of player
Returns:
HiveAchievements: object containing all achievements for a player.
"""
url = f"http://api.hivemc.com/v1/player/{username}"
json_data = await self._get_json(url)
data: List[str] = []
for ach in json_data["achievements"]:
data.append(ach)
return HiveAchievements(all_achievements=data)

async def hive_mc_status(self, username: str) -> HiveStatus:
"""Hive Minecraft player status.
Args:
username (str): username of player
Returns:
HiveStatus: Object containing the players current status.
"""
url = f"http://api.hivemc.com/v1/player/{username}"
json_data = await self._get_json(url)
return HiveStatus(
description=json_data["status"]["description"],
game=json_data["status"]["game"],
)

async def hive_mc_game_stats(self, username: str, game: str) -> Dict[str, Any]:
"""Hive Minecraft game stats of a player.
Args:
username (str): username of player
game (str): game for stats
Returns:
Dict[str, Any]: Dict[str, Any]ionary of stats.
"""
url = f"http://api.hivemc.com/v1/player/{username}/{game}"
json_data = await self._get_json(url)
data = {"stats": [json_data]}
return data

async def hive_mc_rank(self, username: str) -> HiveRank:
"""Hive Minecraft rank.
Args:
username (str): username of player
Returns:
HiveRank: object containing the players rank on Hive.
"""
url = f"http://api.hivemc.com/v1/player/{username}"
json_data = await self._get_json(url)
return HiveRank(rank=json_data["rankName"])

async def manacube(self, username: str) -> Manacube:
"""Manacube player stats.
Args:
username (str): username of player
username (str): username of player.
Returns:
Manacube: object containing players manacube data.
Expand Down Expand Up @@ -241,73 +175,75 @@ async def manacube(self, username: str) -> Manacube:
kitpvp=kitpvp_manacube,
)

# async def wynncraft_classes(self, username: str) -> WyncraftClasses:
# """Wynncraft player classes.

# Args:
# username (str): username of player

# Returns:
# WyncraftClasses: object containing the players classes
# """
# url = f"https://api.wynncraft.com/v2/player/{username}/stats"
# json_data = await self._get_json(url)
# data = []
# for _class in json_data["data"][0]["classes"]:
# data.append(
# Classes(
# class_name=_class["name"],
# class_level=_class["level"],
# class_deaths=_class["deaths"]
# )
# )
# return WyncraftClasses(
# classes=data
# )

async def blocksmc(self, username: str) -> Dict[str, Any]:
"""Blocksmc player stats.
async def wynncraft_classes(self, username: str) -> WyncraftClasses:
"""Wynncraft player classes.
Args:
username (str): username of player
Returns:
Dict[str, Any]: Dict[str, Any]ionary of player stats
WyncraftClasses: object containing the players classes
"""
url = f"https://blocksmc.com/player/{username}"
html = await self._get_html(url)
soup = BeautifulSoup(html, "lxml")
rank = (
soup.find("p", {"class": ["profile-rank"]})
.get_text()
.replace("\n", "")
.strip()
)
url = f"https://api.wynncraft.com/v2/player/{username}/stats"
json_data = await self._get_json(url)
data = []
for _class in json_data["data"][0]["classes"]:
data.append(
Classes(
class_name=_class["name"],
class_level=_class["level"],
class_deaths=_class["deaths"],
class_chest=_class["chestsFound"],
class_logins=_class["logins"],
class_events_won=_class["eventsWon"],
class_discoveries=_class["discoveries"],
)
)
return WyncraftClasses(classes=data)

timeplayed = (
soup.find("h1", {"dir": ["ltr"]}).get_text().replace("\n", "").strip()
)
data = {"rank": rank, "timeplayed": timeplayed, "game_stats": []}
# async def blocksmc(self, username: str) -> Dict[str, Any]:
# """Blocksmc player stats.

for game in soup.find_all("div", {"class": "col-xl-4"}):
stats = {}
game_name = (
game.find("div", {"class": "title"})
.get_text()
.replace("\n", "")
.strip()
)
for stat in game.find_all("li"):
stat_name = (
stat.find("div", {"class": "key"})
.get_text()
.replace("\n", "")
.strip()
)
stat_val = int(stat.find("div", {"class": "val"}).get_text())
stats[stat_name] = stat_val
data["game_stats"].append({game_name: stats})
return data
# Args:
# username (str): username of player

# Returns:
# Dict[str, Any]: Dict[str, Any]ionary of player stats
# """
# url = f"https://blocksmc.com/player/{username}"
# html = await self._get_html(url)
# soup = BeautifulSoup(html, "lxml")
# rank = (
# soup.find("p", {"class": ["profile-rank"]})
# .get_text()
# .replace("\n", "")
# .strip()
# )

# timeplayed = (
# soup.find("h1", {"dir": ["ltr"]}).get_text().replace("\n", "").strip()
# )
# data = {"rank": rank, "timeplayed": timeplayed, "game_stats": []}

# for game in soup.find_all("div", {"class": "col-xl-4"}):
# stats = {}
# game_name = (
# game.find("div", {"class": "title"})
# .get_text()
# .replace("\n", "")
# .strip()
# )
# for stat in game.find_all("li"):
# stat_name = (
# stat.find("div", {"class": "key"})
# .get_text()
# .replace("\n", "")
# .strip()
# )
# stat_val = int(stat.find("div", {"class": "val"}).get_text())
# stats[stat_name] = stat_val
# data["game_stats"].append({game_name: stats})
# return data

async def universocraft(self, username: str) -> Dict[str, Any]:
"""Universocraft player stats.
Expand Down
32 changes: 26 additions & 6 deletions mcsrvstats/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
"""Models for mcsrvstats data objects."""
from .hive_achievements import HiveAchievements
from .hive_mc_rank import HiveRank
from .hive_status import HiveStatus
from .manacube import Aether
from .manacube import Atlas
from .manacube import Aztec
Expand All @@ -13,13 +10,23 @@
from .manacube import Oasis
from .manacube import Parkour
from .manacube import Survival
from .universocraft import BedWars
from .universocraft import BuildBattle
from .universocraft import CaptureWool
from .universocraft import DestoryNexus
from .universocraft import EggWars
from .universocraft import EscapeBeast
from .universocraft import MurderMystery
from .universocraft import PartyGames
from .universocraft import SkyPit
from .universocraft import SkyWars
from .universocraft import SpeedBuilders
from .universocraft import UHC
from .universocraft import Universocraft
from .wyncraft_classes import Classes
from .wyncraft_classes import WyncraftClasses

__all__ = [
"HiveAchievements",
"HiveStatus",
"HiveRank",
"Manacube",
"Parkour",
"Aztec",
Expand All @@ -33,4 +40,17 @@
"Kitpvp",
"WyncraftClasses",
"Classes",
"DestoryNexus",
"SkyWars",
"EggWars",
"BedWars",
"SpeedBuilders",
"BuildBattle",
"EscapeBeast",
"PartyGames",
"SkyPit",
"UHC",
"MurderMystery",
"CaptureWool",
"Universocraft",
]
1 change: 0 additions & 1 deletion mcsrvstats/models/blocksmc.py

This file was deleted.

14 changes: 0 additions & 14 deletions mcsrvstats/models/hive_achievements.py

This file was deleted.

1 change: 0 additions & 1 deletion mcsrvstats/models/hive_game_stats.py

This file was deleted.

12 changes: 0 additions & 12 deletions mcsrvstats/models/hive_mc_rank.py

This file was deleted.

14 changes: 0 additions & 14 deletions mcsrvstats/models/hive_status.py

This file was deleted.

0 comments on commit 35d0a31

Please sign in to comment.