diff options
| author | 2020-03-23 11:39:19 +0200 | |
|---|---|---|
| committer | 2020-03-23 11:39:19 +0200 | |
| commit | 7180ef7d7e4196c50abf5e689a2faba45305d198 (patch) | |
| tree | a57febfde4dc3f197c445e3d2e923979fcd257c4 /bot | |
| parent | Merge 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.py | 13 |
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.""" |