From 57310c8c9931d79645fca67900336002f8d202d5 Mon Sep 17 00:00:00 2001 From: "Jeremie J. Jarosh" Date: Sat, 15 Apr 2023 10:49:19 -0500 Subject: [PATCH] Pass the "Human Folders" Option Through the `Library` Class To remove the need for the `Game` class to parse `sys.argv`, we'll store the option in the `Library` class and pass it to `Game` as needed. The `ArgumentParser.add_argument()` call has been updated to show up as an 'on/off' argument. Also fix the naming convention. According to Python's PEP 8 Style Guide, function and variable names should be lowercase with words separated by underscores (aka snake_case). The rest of this project seems to follow PEP 8, so `humanFolders` should be `human_folders`. --- itchiodl/downloader/__main__.py | 12 ++++++------ itchiodl/game.py | 11 +++-------- itchiodl/library.py | 9 +++++---- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/itchiodl/downloader/__main__.py b/itchiodl/downloader/__main__.py index 164f9bf..8814692 100644 --- a/itchiodl/downloader/__main__.py +++ b/itchiodl/downloader/__main__.py @@ -20,11 +20,11 @@ def main(): parser.add_argument( "--human-folders", - type=bool, - default=False, - const=True, - nargs="?", - help="Download Folders are named based on the full text version of the title instead of the trimmed URL title", + action="store_true", + help=( + "Download Folders are named based on the full text version of the title instead of " + "the trimmed URL title" + ), ) parser.add_argument( @@ -58,7 +58,7 @@ def main(): else: l = args.api_key - lib = itchiodl.Library(l, args.jobs) + lib = itchiodl.Library(l, jobs=args.jobs, human_folders=args.human_folders) if args.download_publisher: lib.load_games(args.download_publisher) diff --git a/itchiodl/game.py b/itchiodl/game.py index feaa1d6..1dbfb44 100644 --- a/itchiodl/game.py +++ b/itchiodl/game.py @@ -3,7 +3,6 @@ import json import urllib import datetime from pathlib import Path -from sys import argv import requests from itchiodl import utils @@ -12,12 +11,8 @@ from itchiodl import utils class Game: """Representation of a game download""" - def __init__(self, data): - self.args = argv[1:] - if "--human-folders" in self.args: - self.humanFolders = True - else: - self.humanFolders = False + def __init__(self, data, human_folders: bool): + self.human_folders = human_folders self.data = data["game"] self.name = self.data["title"] @@ -32,7 +27,7 @@ class Game: matches = re.match(r"https://(.+)\.itch\.io/(.+)", self.link) self.game_slug = matches.group(2) - if self.humanFolders: + if self.human_folders: self.game_slug = utils.clean_path(self.data["title"]) self.publisher_slug = self.data.get("user").get("display_name") # This Branch covers the case that the user has diff --git a/itchiodl/library.py b/itchiodl/library.py index 1132735..e0b4688 100644 --- a/itchiodl/library.py +++ b/itchiodl/library.py @@ -12,10 +12,11 @@ from itchiodl.utils import NoDownloadError class Library: """Representation of a user's game library""" - def __init__(self, login, jobs=4): + def __init__(self, login, jobs=4, human_folders=False): self.login = login self.games = [] self.jobs = jobs + self.human_folders = human_folders def load_game_page(self, page): """Load a page of games via the API""" @@ -27,7 +28,7 @@ class Library: j = json.loads(r.text) for s in j["owned_keys"]: - self.games.append(Game(s)) + self.games.append(Game(s, self.human_folders)) return len(j["owned_keys"]) @@ -54,7 +55,7 @@ class Library: ) k = gsp.json() if k != {"uploads": {}}: - self.games.append(Game(k)) + self.games.append(Game(k, self.human_folders)) return print(f"{title} is a purchased game.") i = 1 @@ -85,7 +86,7 @@ class Library: headers={"Authorization": self.login}, ) k = json.loads(gsp.text) - self.games.append(Game(k)) + self.games.append(Game(k, self.human_folders)) def download_library(self, platform=None): """Download all games in the library"""