aboutsummaryrefslogtreecommitdiffstats
path: root/bot
diff options
context:
space:
mode:
authorGravatar ks123 <[email protected]>2020-03-23 11:39:19 +0200
committerGravatar ks123 <[email protected]>2020-03-23 11:39:19 +0200
commit7180ef7d7e4196c50abf5e689a2faba45305d198 (patch)
treea57febfde4dc3f197c445e3d2e923979fcd257c4 /bot
parentMerge pull request #380 from python-discord/gitignore-data (diff)
(Games Cog): Created new helper function `get_best_results` to match not correct genres.
Diffstat (limited to 'bot')
-rw-r--r--bot/seasons/evergreen/game.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/bot/seasons/evergreen/game.py b/bot/seasons/evergreen/game.py
index e6700937..79fe8ae9 100644
--- a/bot/seasons/evergreen/game.py
+++ b/bot/seasons/evergreen/game.py
@@ -1,6 +1,7 @@
import difflib
import logging
import random
+import re
from datetime import datetime as dt
from enum import IntEnum
from typing import Any, Dict, List, Optional, Tuple
@@ -25,6 +26,8 @@ HEADERS = {
logger = logging.getLogger(__name__)
+REGEX_NON_ALPHABET = re.compile(r"[^a-z0-9]", re.IGNORECASE)
+
# ---------
# TEMPLATES
# ---------
@@ -385,6 +388,16 @@ class Games(Cog):
return page, url
+ async def get_best_results(self, query: str, nr: int = 4) -> List[Tuple[float, str]]:
+ """Get best match result of genre when original genre is invalid."""
+ results = []
+ for genre in self.genres:
+ ratios = [difflib.SequenceMatcher(None, query, genre).ratio()]
+ for word in REGEX_NON_ALPHABET.split(genre):
+ ratios.append(difflib.SequenceMatcher(None, query, word).ratio())
+ results.append((round(max(ratios), 2), genre))
+ return sorted(results, reverse=True)[:nr]
+
def setup(bot: SeasonalBot) -> None:
"""Add/Load Games cog."""