This package is still in the beta stages, so expect updates that may break things, if you're using it.
DAPIWrap is a fairly simple Python wrapper for the Doomworld /idgames archive API. In addition to allowing you to access the API using Python, it also has a few added features, located in dapiwtools, that aren't provided by the API, such as search filtering, and downloading functions, for downloading wads from the supported mirrors on the Doomworld /idgames archive.
Please don't abuse this wrapper, and hammer the Doomworld servers with it.
Note:
It seems that the maximum number of search results the API will return is 100. Unfortunately, there is nothing I can do about this. Just a limit of the API. If you are searching for something specific, you can try being a bit more specific with your search.
Install/Uninstall with PIP
pip install https://github.com/Trebek/DAPIWrap/archive/master.zip
pip uninstall dapiwrap
These are some brief examples of how to use the functions of DAPIWrap.
#!/usr/bin/env python from dapiwrap import DAPIWrap daw = DAPIWrap() wad_info = daw.get_id(12815)
#!/usr/bin/env python
from dapiwrap import DAPIWrap
daw = DAPIWrap()
wad_info = daw.get_file("levels/doom2/Ports/v-z/zdmcmp1.zip")
#!/usr/bin/env python
from dapiwrap import DAPIWrap
daw = DAPIWrap()
results = daw.search("zdmcmp1")
#!/usr/bin/env python
from dapiwrap import (
DAPIWrap,
DIRECT_DESC,
FILTER_YEAR,
SORT_RATING,
TYPE_TITLE
)
daw = DAPIWrap()
params = {
"type": TYPE_TITLE,
"sort": SORT_RATING,
"dir": DIRECT_DESC,
"filter": (FILTER_YEAR, 1995)
}
results = daw.search("test", params)
#!/usr/bin/env python from dapiwrap import DAPIWrap dl_folder = "C:\\games\\doom\\wads\\" daw = DAPIWrap() daw.download.wad_id(12815, dl_folder)
#!/usr/bin/env python
from dapiwrap import DAPIWrap
dl_folder = "C:\\games\\doom\\wads\\"
daw = DAPIWrap()
daw.download.file_path("levels/doom2/Ports/v-z/zdmcmp1.zip", dl_folder)
Getting a specific wad's full info, using an ID or filename, typically returns a response like this (this is just an example):
{
u'age': 832402800,
u'author': u'Some Dude',
u'base': u'New level from scratch',
u'bugs': u'No',
u'buildtime': u'1 hour',
u'credits': u'iD Software',
u'date': u'2014-01-01',
u'description': u'This is a brief description of the wad.',
u'dir': u'levels/doom2/s-u/',
u'editors': u'Doom Builder 2',
u'email': u'SomeDude@someemail.com',
u'filename': u'test.zip',
u'id': 12815,
u'idgamesurl': u'idgames://levels/doom2/s-u/test.zip',
u'rating': 5.0,
u'reviews': {u'review': [{u'text': u'cool map', u'vote': 5}]},
u'size': 67005,
u'textfile': u"The entirety of the wad's text file would be here.",
u'title': u'Test',
u'url': u'http://www.doomworld.com/idgames/?file=levels/doom2/s-u/test.zip',
u'votes': 2
}
Or None, if no wad was found.
A search will yield a list of more brief info for each wad found, like so (this is just an example):
[
{
u'age': 832402800,
u'author': u'Some Dude',
u'date': u'2014-01-01',
u'description': u'This is a brief description of the wad.',
u'dir': u'levels/doom2/s-u/',
u'email': u'SomeDude@someemail.com',
u'filename': u'test.zip',
u'id': 12021,
u'idgamesurl': u'idgames://levels/doom2/s-u/test.zip',
u'rating': 5.0,
u'size': 67005,
u'title': u'Test',
u'url': u'http://www.doomworld.com/idgames/?file=levels/doom2/s-u/test.zip',
u'votes': 2
},
{
u'age': 865432674,
u'author': u'Another Guy',
u'date': u'2014-02-02',
u'description': u'This is a brief description of the wad.',
u'dir': u'levels/doom2/a-c/',
u'email': u'SomeDude@someemail.com',
u'filename': u'anotherwad.zip',
u'id': 13024,
u'idgamesurl': u'idgames://levels/doom2/a-c/anotherwad.zip',
u'rating': 4.8,
u'size': 76050,
u'title': u'Another Wad',
u'url': u'http://www.doomworld.com/idgames/?file=levels/doom2/s-u/anotherwad.zip',
u'votes': 1
},
]
Or [] (empty list), if no wads were found.
At the moment, downloading returns the closed file object.