This commit is contained in:
Jeremie Jarosh 2023-04-16 00:41:58 +00:00 committed by GitHub
commit 3545767d8e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 19 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"
)
@ -20,11 +30,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 +68,9 @@ 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, output_dir=args.output_dir
)
if args.download_publisher:
lib.load_games(args.download_publisher)

View file

@ -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,9 @@ 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, output_dir: str):
self.human_folders = human_folders
self.output_path = Path(output_dir)
self.data = data["game"]
self.name = self.data["title"]
@ -32,7 +28,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
@ -45,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,10 +12,14 @@ 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, output_dir="."):
self.login = login
self.games = []
self.jobs = jobs
self.game_kwargs = {
"human_folders": human_folders,
"output_dir": output_dir,
}
def load_game_page(self, page):
"""Load a page of games via the API"""
@ -27,7 +31,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.game_kwargs))
return len(j["owned_keys"])
@ -54,7 +58,7 @@ class Library:
)
k = gsp.json()
if k != {"uploads": {}}:
self.games.append(Game(k))
self.games.append(Game(k, **self.game_kwargs))
return
print(f"{title} is a purchased game.")
i = 1
@ -85,7 +89,7 @@ class Library:
headers={"Authorization": self.login},
)
k = json.loads(gsp.text)
self.games.append(Game(k))
self.games.append(Game(k, **self.game_kwargs))
def download_library(self, platform=None):
"""Download all games in the library"""