Allow the download directory to be changed

This commit is contained in:
Jeremie J. Jarosh 2023-04-15 11:36:55 -05:00
parent 57310c8c99
commit 2b441abbc8
3 changed files with 21 additions and 7 deletions

View file

@ -8,6 +8,16 @@ import itchiodl
def main():
parser = argparse.ArgumentParser(prog="python -m hstp", description="Build an ")
parser.add_argument(
"-o",
"--output-dir",
type=str,
default=".",
help=(
"The location to store the downloaded files, defaults to the current working directory"
),
)
parser.add_argument(
"-k", "--api-key", help="Use API key instead of username/password"
)
@ -58,7 +68,9 @@ def main():
else:
l = args.api_key
lib = itchiodl.Library(l, jobs=args.jobs, human_folders=args.human_folders)
lib = itchiodl.Library(
l, jobs=args.jobs, human_folders=args.human_folders, output_dir=args.output_dir
)
if args.download_publisher:
lib.load_games(args.download_publisher)

View file

@ -11,8 +11,9 @@ from itchiodl import utils
class Game:
"""Representation of a game download"""
def __init__(self, data, human_folders: bool):
def __init__(self, data, human_folders: bool, output_dir: str):
self.human_folders = human_folders
self.output_path = Path(output_dir)
self.data = data["game"]
self.name = self.data["title"]
@ -40,7 +41,7 @@ class Game:
self.files = []
self.downloads = []
self.dir = (
Path(".")
self.output_path
/ utils.clean_path(self.publisher_slug)
/ utils.clean_path(self.game_slug)
)

View file

@ -12,11 +12,12 @@ from itchiodl.utils import NoDownloadError
class Library:
"""Representation of a user's game library"""
def __init__(self, login, jobs=4, human_folders=False):
def __init__(self, login, jobs=4, human_folders=False, output_dir="."):
self.login = login
self.games = []
self.jobs = jobs
self.human_folders = human_folders
self.output_dir = output_dir
def load_game_page(self, page):
"""Load a page of games via the API"""
@ -28,7 +29,7 @@ class Library:
j = json.loads(r.text)
for s in j["owned_keys"]:
self.games.append(Game(s, self.human_folders))
self.games.append(Game(s, self.human_folders, self.output_dir))
return len(j["owned_keys"])
@ -55,7 +56,7 @@ class Library:
)
k = gsp.json()
if k != {"uploads": {}}:
self.games.append(Game(k, self.human_folders))
self.games.append(Game(k, self.human_folders, self.output_dir))
return
print(f"{title} is a purchased game.")
i = 1
@ -86,7 +87,7 @@ class Library:
headers={"Authorization": self.login},
)
k = json.loads(gsp.text)
self.games.append(Game(k, self.human_folders))
self.games.append(Game(k, self.human_folders, self.output_dir))
def download_library(self, platform=None):
"""Download all games in the library"""