PEP 8 compliance.
This commit is contained in:
parent
97616b341d
commit
b29e2675d1
1 changed files with 36 additions and 25 deletions
59
dcc/fetch.py
59
dcc/fetch.py
|
@ -5,32 +5,43 @@ import pathlib
|
||||||
import urllib.request
|
import urllib.request
|
||||||
import zipfile
|
import zipfile
|
||||||
|
|
||||||
|
|
||||||
class Fetch(dcc.config.Base):
|
class Fetch(dcc.config.Base):
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super().get_parser(prog_name)
|
parser = super().get_parser(prog_name)
|
||||||
parser.add_argument("id_or_name")
|
parser.add_argument("id_or_name")
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
idgames_id = parsed_args.id_or_name
|
idgames_id = parsed_args.id_or_name
|
||||||
if not parsed_args.id_or_name.isdigit():
|
if not parsed_args.id_or_name.isdigit():
|
||||||
idgames_id = self.search_idgames(parsed_args.id_or_name)
|
idgames_id = self.search_idgames(parsed_args.id_or_name)
|
||||||
|
|
||||||
with urllib.request.urlopen("https://www.doomworld.com/idgames/api/api.php?action=get&id={}&out=json".format(idgames_id)) as response:
|
with urllib.request.urlopen(
|
||||||
reply = json.loads(response.read())
|
"https://www.doomworld.com/idgames/api/" +
|
||||||
rpath = "/".join([dcc.config.MIRROR, reply["content"]["dir"], reply["content"]["filename"]])
|
"api.php?action=get&id={}&out=json".format(idgames_id)
|
||||||
wad = reply["content"]["filename"][0:-4]
|
) as response:
|
||||||
|
reply = json.loads(response.read())
|
||||||
|
rpath = "/".join([
|
||||||
|
dcc.config.MIRROR,
|
||||||
|
reply["content"]["dir"],
|
||||||
|
reply["content"]["filename"]
|
||||||
|
])
|
||||||
|
wad = reply["content"]["filename"][0:-4]
|
||||||
|
|
||||||
with urllib.request.urlopen(rpath) as response:
|
with urllib.request.urlopen(rpath) as response:
|
||||||
z = zipfile.ZipFile(io.BytesIO(response.read()))
|
z = zipfile.ZipFile(io.BytesIO(response.read()))
|
||||||
z.extractall(path=self.pwads.joinpath(wad))
|
z.extractall(path=self.pwads.joinpath(wad))
|
||||||
|
|
||||||
# TODO: explicit error handling. Let users choose when >1 result.
|
# TODO: explicit error handling. Let users choose when >1 result.
|
||||||
def search_idgames(self, wad):
|
def search_idgames(self, wad):
|
||||||
with urllib.request.urlopen("https://www.doomworld.com/idgames/api/api.php?action=search&query={}&out=json".format(wad)) as response:
|
with urllib.request.urlopen(
|
||||||
reply = json.loads(response.read())
|
"https://www.doomworld.com/idgames/api/" +
|
||||||
files = reply["content"]["file"]
|
"api.php?action=search&query={}&out=json".format(wad)
|
||||||
if type(files) is dict: # One result.
|
) as response:
|
||||||
return files["id"]
|
reply = json.loads(response.read())
|
||||||
else: # More than one. Zero will raise an error.
|
files = reply["content"]["file"]
|
||||||
return files[0]["id"]
|
if type(files) is dict: # One result.
|
||||||
|
return files["id"]
|
||||||
|
else: # More than one. Zero will raise an error.
|
||||||
|
return files[0]["id"]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue