Skip to main content

ModDB Reader

Library is now stable

The goal of the library is to be able to navigate ModDB purely programmatically through scraping and parsing of the various models present on the website. This is based off a command of my bot which can parse either a game or a mod, this command gave birth to the original library which was extremely limited in its abilities and only able to parse a few pages with inconsistencies. This library is a much more mature and professional attempt at the whole idea, adding on a much deeper understanding of OOP.

Basic Usage

The simplest way to use this library is to simply pass a ModDB url to the parse function and let the magic happen.

import moddb
mod = moddb.parse_page("http://www.moddb.com/mods/edain-mod")
print(mod.name) #Edain Mod

Advanced Usage

Check out the documentation for more information

Installing

You can get it from pypi: https://pypi.org/project/moddb

pip install moddb

Models

  • Mod
  • Game
  • Engine
  • File
  • Media
  • Addon
  • Article
  • Blog
  • User
  • Team
  • Group
  • Job
  • Search Page
  • Front Page
  • Platforms
  • Software
  • HardwAre
  • Updates
  • Friend Requests
  • Watchers
  • Tags

Maybe

  • Messages
  • Threads

Glossary

  • Partial[Model]: A version of the model which does not contain all the attributes of the full model. Mainly because that model is being displayed as a preview in another page. Not to confuse with Thumbnails, Thumbnails are only guaranteed to contain a name and url of the page.
  • Boxes: Containers present on pages, a div tag which contains information around a certain theme and as such have been grouped into Box Models of such.
  • Pages: Another name for Models.
  • Thumbnails: A very widely used model meant to represent models which are references but not expanded onto. Usually the model in question will only include a url and the name of the page. This is transformed into a thumbnail and the user can then parse it with the built-in method.

Development

The necessary dependencies are stored in requirements.txt and requirements-dev.txt and can be installed with the following command

python -m pip install -r requirements.txt -r requirements-dev.txt

Testing

The testing is handled in two ways. There is a standard set of tests which are more lightweight, they test different entities of the library using one URL per entity. The second way is through the extended test suite. This extended test suite runs the standard test suite with multiple urls for each entity. This provides a better coverage but is also a lot more expensive to run and sometimes errors out because of ratelimits.

In general, if you're just trying to do a sanity check on the library it is recommended to use the standard test set using the cassettes. This minimizes requests dones to the ModDB server and your chance of being ratelimited.

  • Standard Set: pytest -k "not main" --record-mode=new_episodes
  • Full Set: pytest -k "main" --record-mode=all

Because tests in the suite grab the latest items from pages it is essentially not possible to have a zero request test. It is recommended to always run tests with at least the new_episodes record mode if you're planning to use the cassettes.

grep -r -l Service Unavailable * | xargs rm

Metadata

Release files for moddb 0.15.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for moddb 0.15.0
File Size Uploaded
moddb-0.15.0.tar.gz 64.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for moddb 0.15.0
File Interpreter ABI Platform
moddb-0.15.0-py3-none-any.whl Python 3 none any Details

Total release size: 132.2 kB

Release files / moddb-0.15.0.tar.gz

Download URL moddb-0.15.0.tar.gz
Size 64.4 kB
Tags Source
SHA-256 checksum
How to use checksums
1f561aae2de737bb70f113178dae2bfd1c3a58864499b786e0b7c216668e89c4
BLAKE2b-256 checksum
How to use checksums
b0ec01ed108a70f729796b7c0f43d41d1932c879ac69678ed709a94c52016729
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / moddb-0.15.0-py3-none-any.whl

Download URL moddb-0.15.0-py3-none-any.whl
Size 67.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4274e5d817a546d3782641d702ef7f0e489c63d31f70bc1a5a9576ba4f67521d
BLAKE2b-256 checksum
How to use checksums
cfca1d5ace09e563d2de4ff414d6a2cb7a3134b36eb7b8ea743ebcbce9a2d6c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.15.0 This release

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.1

2 release files

0.8.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page