rinthdl


Namerinthdl JSON
Version 1.1.0 PyPI version JSON
download
home_pageNone
SummaryDefine a Minecraft modpack in a JSON file, specifying mods, shaders, and resource packs, then download everything into organized folders for easy copying into your .minecraft folder.
upload_time2024-11-15 23:07:46
maintainerNone
docs_urlNone
authorAlexander Brightwater
requires_python==3.11.*
licenseGPL-3.0-only
keywords modrinth minecraft downloader
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Rinth DL

Rinth DL is a command-line tool for searching, downloading, and managing Minecraft mods,
modpacks, resource packs, shaders, datapacks, and plugins from [Modrinth](https://modrinth.com/).
It simplifies the process of automating mod downloads and their dependencies
and allows you to manage modpacks using a JSON configuration file.

## Table of Contents

- [Features](#features)
- [Installation](#installation)
- [Usage](#usage)
  - [Searching for Projects](#searching-for-projects)
  - [Downloading a Project](#downloading-a-project)
  - [Managing Modpacks](#managing-modpacks)
- [Examples](#examples)
- [Notes](#notes)
- [Error Handling](#error-handling)
- [License](#license)

## Features

- **Search** for Minecraft projects (mods, resource packs, etc.) on Modrinth.
- **Download** your favourite mod, shader, etc. (even a specific version)
- Automatically find **dependencies** when downloading whole modpacks.
- Manage and download your **modpacks** via a simple JSON configuration file.
- Supports various **project types**: mods, resource packs, shaders, plugins, etc.
- Compatible with all **platforms/loaders**: Fabric, Forge, Minecraft, Iris, etc.

## Installation

Install the package using pip or pipx
```bash
pipx install rinthdl
```

## Usage

### Searching for Projects

Use the `rinth-search` command to search for projects on Modrinth.

**Example:**

```bash
rinth-search sodium
```

This command will display a list of projects matching the search query,
including titles, slugs, IDs, URLs, and descriptions.

### Downloading a Project

Use the `rinth-util` command to perform various operations related to a project.

#### Available Operations:

- `get_id`: Fetch the project ID using the project slug.
- `get_versions`: Fetch all versions of a project.
- `get_version`: Fetch a specific version of a project.
- `get_dependencies`: Fetch dependencies of a project version.
- `get_project_meta`: Fetch metadata of a project.
- `download`: Download a project.

#### Command Syntax:

```bash
rinth-util <operation> <slug> [--game_version <game_version>] [--platform <platform>] [--project_version <project_version>] [--path <download_path>]
```

#### Parameters:

- `<operation>`: The operation to perform (see above).
- `<slug>`: The project slug (e.g., `sodium`).
- `--game_version`: The Minecraft game version (e.g., `1.20`).
- `--platform`: The platform/loader (e.g., `fabric`, `forge`, `minecraft`, `iris`).
- `--project_version`: The specific project version (e.g., `1.5.0`). Leave empty to get the latest version.
- `--path`: The path to download the file to (required when using the `download` operation).
- `--channel`: The minimum release channel of the project. Default is beta. (one of: `release`, `beta`, `alpha`)

#### Examples:

- **Get the project ID of Sodium:**

  ```bash
  rinth-util get_id sodium
  ```

- **Get all versions of Sodium for Minecraft 1.20 on Fabric:**

  ```bash
  rinth-util get_versions sodium --game_version 1.20 --platform fabric
  ```

- **Download the latest version of Sodium for Minecraft 1.20 on Fabric (must be a release or beta):**

  ```bash
  rinth-util download sodium --game_version 1.21 --platform fabric --path . --channel beta
  ```

- **Download a specific version of Sodium:**

  ```bash
  rinth-util download sodium --game_version 1.20 --platform fabric --project_version mc1.20-0.4.10 --path /path/to/download
  ```
  
### Managing Modpacks

Use the `rinth-pack` command to manage modpacks via a JSON configuration file.

#### Modpack Configuration File

Create a JSON file (e.g., `modpack.json`) with the following structure:

```json
{
  "name": "Modpack 1",
  "game_version": "1.20",
  "path": "/path/to/download",
  "deps": "True",
  "channel": "beta",
  "projects": [
    {
      "name": "sodium",
      "version": "",
      "platform": "fabric",
      "type": "mod"
    },
    {
      "name": "fabric-api",
      "version": "",
      "platform": "fabric",
      "type": "mod"
    },
    {
      "name": "dramatic-skys",
      "version": "1.5.3.27vs",
      "platform": "minecraft",
      "type": "resourcepack"
    },
    {
      "name": "complementary-reimagined",
      "version": "",
      "platform": "iris",
      "type": "shader"
    }
  ]
}
```

#### Fields:

- **`name`**: Name of the modpack.
- **`game_version`**: Minecraft game version (e.g., `1.20`).
- **`path`**: The base path to download the mods to.
- **`deps`**: Whether to download dependencies (`"True"` or `"False"`).
- **`channel`**: The minimum release channel to use. (`release`, `beta`, `alpha`)
- **`projects`**: A list of project definitions.

Each project definition includes:

- **`name`**: The slug of the project on Modrinth (e.g., `sodium`).
- **`version`**: The specific version to download (leave empty string for the latest version).
- **`platform`**: The platform/loader (e.g., `fabric`, `forge`, `minecraft`, `iris`).
- **`type`**: The type of project (`mod`, `resourcepack`, `shader`, etc.).

#### Running the Modpack Script

```bash
rinth-pack <modpack_file>
```

**Example:**

```bash
rinth-pack modpack.json
```

This command will download all specified projects to the paths determined
by the `path` and `type` fields in your configuration.

## Examples

### Example 1: Search for a Mod

```bash
rinth-search sodium
```

### Example 2: Download a Mod with Dependencies

Create a `modpack.json` file:

```json
{
  "name": "Awesome Modpack",
  "game_version": "1.20",
  "path": "~/modpacks/awesome",
  "deps": "True",
  "channel": "beta",
  "projects": [
    {
      "name": "sodium",
      "version": "",
      "platform": "fabric",
      "type": "mod"
    },
    {
      "name": "fabric-api",
      "version": "",
      "platform": "fabric",
      "type": "mod"
    },
    {
      "name": "dramatic-skys",
      "version": "1.5.3.27vs",
      "platform": "minecraft",
      "type": "resourcepack"
    },
    {
      "name": "complementary-reimagined",
      "version": "",
      "platform": "iris",
      "type": "shader"
    }
  ]
}

```

Run the modpack script:

```bash
rinth-pack modpack.json
```

**Output:**

```
Downloading assets for Awesome Modpack
Should I create path /home/your-name/modpacks/awesome? (y|N): y
✔️ Successfully downloaded sodium.
✔️ Successfully downloaded fabric-api.
✔️ Successfully downloaded dramatic-skys.
ℹ️ Dramatic-skys has a possible dependency for https://modrinth.com/project/fabricskyboxes
ℹ️ Template for your modpack.json: {"name": "fabricskyboxes", "version": "", "platform": "fabric", "type": "mod"}
✔️ Successfully downloaded complementary-reimagined.
```

## Notes

- The `rinth-pack` command automatically creates subdirectories under the specified `path` based on the `type` of
each project (e.g., `mods`, `resourcepacks`, `shaderpacks`).
- If `deps` is set to `"True"`, dependencies will be searched for each project.
If a dependency is not already listed in the `projects` list, it will inform you and provide a json template to add it.


## Error Handling

- The program has error handling to manage network issues, missing projects, invalid inputs, etc.
- Error messages start with `❌` and provide details about the issue.
- Common errors include:
  - Project not found.
  - No versions found matching the specified criteria.
  - Network connectivity problems.


## License

This project is licensed under the GNU GENERAL PUBLIC LICENSE Version 3 License.
See the [LICENSE](LICENSE) file for details.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "rinthdl",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "==3.11.*",
    "maintainer_email": null,
    "keywords": "modrinth, minecraft, downloader",
    "author": "Alexander Brightwater",
    "author_email": "alexander.brightwater@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/35/37/d7f805ecd67459f9360a9f7e2ffb1685aa4366ab858a5fe4019ade6933b4/rinthdl-1.1.0.tar.gz",
    "platform": null,
    "description": "# Rinth DL\n\nRinth DL is a command-line tool for searching, downloading, and managing Minecraft mods,\nmodpacks, resource packs, shaders, datapacks, and plugins from [Modrinth](https://modrinth.com/).\nIt simplifies the process of automating mod downloads and their dependencies\nand allows you to manage modpacks using a JSON configuration file.\n\n## Table of Contents\n\n- [Features](#features)\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Searching for Projects](#searching-for-projects)\n  - [Downloading a Project](#downloading-a-project)\n  - [Managing Modpacks](#managing-modpacks)\n- [Examples](#examples)\n- [Notes](#notes)\n- [Error Handling](#error-handling)\n- [License](#license)\n\n## Features\n\n- **Search** for Minecraft projects (mods, resource packs, etc.) on Modrinth.\n- **Download** your favourite mod, shader, etc. (even a specific version)\n- Automatically find **dependencies** when downloading whole modpacks.\n- Manage and download your **modpacks** via a simple JSON configuration file.\n- Supports various **project types**: mods, resource packs, shaders, plugins, etc.\n- Compatible with all **platforms/loaders**: Fabric, Forge, Minecraft, Iris, etc.\n\n## Installation\n\nInstall the package using pip or pipx\n```bash\npipx install rinthdl\n```\n\n## Usage\n\n### Searching for Projects\n\nUse the `rinth-search` command to search for projects on Modrinth.\n\n**Example:**\n\n```bash\nrinth-search sodium\n```\n\nThis command will display a list of projects matching the search query,\nincluding titles, slugs, IDs, URLs, and descriptions.\n\n### Downloading a Project\n\nUse the `rinth-util` command to perform various operations related to a project.\n\n#### Available Operations:\n\n- `get_id`: Fetch the project ID using the project slug.\n- `get_versions`: Fetch all versions of a project.\n- `get_version`: Fetch a specific version of a project.\n- `get_dependencies`: Fetch dependencies of a project version.\n- `get_project_meta`: Fetch metadata of a project.\n- `download`: Download a project.\n\n#### Command Syntax:\n\n```bash\nrinth-util <operation> <slug> [--game_version <game_version>] [--platform <platform>] [--project_version <project_version>] [--path <download_path>]\n```\n\n#### Parameters:\n\n- `<operation>`: The operation to perform (see above).\n- `<slug>`: The project slug (e.g., `sodium`).\n- `--game_version`: The Minecraft game version (e.g., `1.20`).\n- `--platform`: The platform/loader (e.g., `fabric`, `forge`, `minecraft`, `iris`).\n- `--project_version`: The specific project version (e.g., `1.5.0`). Leave empty to get the latest version.\n- `--path`: The path to download the file to (required when using the `download` operation).\n- `--channel`: The minimum release channel of the project. Default is beta. (one of: `release`, `beta`, `alpha`)\n\n#### Examples:\n\n- **Get the project ID of Sodium:**\n\n  ```bash\n  rinth-util get_id sodium\n  ```\n\n- **Get all versions of Sodium for Minecraft 1.20 on Fabric:**\n\n  ```bash\n  rinth-util get_versions sodium --game_version 1.20 --platform fabric\n  ```\n\n- **Download the latest version of Sodium for Minecraft 1.20 on Fabric (must be a release or beta):**\n\n  ```bash\n  rinth-util download sodium --game_version 1.21 --platform fabric --path . --channel beta\n  ```\n\n- **Download a specific version of Sodium:**\n\n  ```bash\n  rinth-util download sodium --game_version 1.20 --platform fabric --project_version mc1.20-0.4.10 --path /path/to/download\n  ```\n  \n### Managing Modpacks\n\nUse the `rinth-pack` command to manage modpacks via a JSON configuration file.\n\n#### Modpack Configuration File\n\nCreate a JSON file (e.g., `modpack.json`) with the following structure:\n\n```json\n{\n  \"name\": \"Modpack 1\",\n  \"game_version\": \"1.20\",\n  \"path\": \"/path/to/download\",\n  \"deps\": \"True\",\n  \"channel\": \"beta\",\n  \"projects\": [\n    {\n      \"name\": \"sodium\",\n      \"version\": \"\",\n      \"platform\": \"fabric\",\n      \"type\": \"mod\"\n    },\n    {\n      \"name\": \"fabric-api\",\n      \"version\": \"\",\n      \"platform\": \"fabric\",\n      \"type\": \"mod\"\n    },\n    {\n      \"name\": \"dramatic-skys\",\n      \"version\": \"1.5.3.27vs\",\n      \"platform\": \"minecraft\",\n      \"type\": \"resourcepack\"\n    },\n    {\n      \"name\": \"complementary-reimagined\",\n      \"version\": \"\",\n      \"platform\": \"iris\",\n      \"type\": \"shader\"\n    }\n  ]\n}\n```\n\n#### Fields:\n\n- **`name`**: Name of the modpack.\n- **`game_version`**: Minecraft game version (e.g., `1.20`).\n- **`path`**: The base path to download the mods to.\n- **`deps`**: Whether to download dependencies (`\"True\"` or `\"False\"`).\n- **`channel`**: The minimum release channel to use. (`release`, `beta`, `alpha`)\n- **`projects`**: A list of project definitions.\n\nEach project definition includes:\n\n- **`name`**: The slug of the project on Modrinth (e.g., `sodium`).\n- **`version`**: The specific version to download (leave empty string for the latest version).\n- **`platform`**: The platform/loader (e.g., `fabric`, `forge`, `minecraft`, `iris`).\n- **`type`**: The type of project (`mod`, `resourcepack`, `shader`, etc.).\n\n#### Running the Modpack Script\n\n```bash\nrinth-pack <modpack_file>\n```\n\n**Example:**\n\n```bash\nrinth-pack modpack.json\n```\n\nThis command will download all specified projects to the paths determined\nby the `path` and `type` fields in your configuration.\n\n## Examples\n\n### Example 1: Search for a Mod\n\n```bash\nrinth-search sodium\n```\n\n### Example 2: Download a Mod with Dependencies\n\nCreate a `modpack.json` file:\n\n```json\n{\n  \"name\": \"Awesome Modpack\",\n  \"game_version\": \"1.20\",\n  \"path\": \"~/modpacks/awesome\",\n  \"deps\": \"True\",\n  \"channel\": \"beta\",\n  \"projects\": [\n    {\n      \"name\": \"sodium\",\n      \"version\": \"\",\n      \"platform\": \"fabric\",\n      \"type\": \"mod\"\n    },\n    {\n      \"name\": \"fabric-api\",\n      \"version\": \"\",\n      \"platform\": \"fabric\",\n      \"type\": \"mod\"\n    },\n    {\n      \"name\": \"dramatic-skys\",\n      \"version\": \"1.5.3.27vs\",\n      \"platform\": \"minecraft\",\n      \"type\": \"resourcepack\"\n    },\n    {\n      \"name\": \"complementary-reimagined\",\n      \"version\": \"\",\n      \"platform\": \"iris\",\n      \"type\": \"shader\"\n    }\n  ]\n}\n\n```\n\nRun the modpack script:\n\n```bash\nrinth-pack modpack.json\n```\n\n**Output:**\n\n```\nDownloading assets for Awesome Modpack\nShould I create path /home/your-name/modpacks/awesome? (y|N): y\n\u2714\ufe0f Successfully downloaded sodium.\n\u2714\ufe0f Successfully downloaded fabric-api.\n\u2714\ufe0f Successfully downloaded dramatic-skys.\n\u2139\ufe0f Dramatic-skys has a possible dependency for https://modrinth.com/project/fabricskyboxes\n\u2139\ufe0f Template for your modpack.json: {\"name\": \"fabricskyboxes\", \"version\": \"\", \"platform\": \"fabric\", \"type\": \"mod\"}\n\u2714\ufe0f Successfully downloaded complementary-reimagined.\n```\n\n## Notes\n\n- The `rinth-pack` command automatically creates subdirectories under the specified `path` based on the `type` of\neach project (e.g., `mods`, `resourcepacks`, `shaderpacks`).\n- If `deps` is set to `\"True\"`, dependencies will be searched for each project.\nIf a dependency is not already listed in the `projects` list, it will inform you and provide a json template to add it.\n\n\n## Error Handling\n\n- The program has error handling to manage network issues, missing projects, invalid inputs, etc.\n- Error messages start with `\u274c` and provide details about the issue.\n- Common errors include:\n  - Project not found.\n  - No versions found matching the specified criteria.\n  - Network connectivity problems.\n\n\n## License\n\nThis project is licensed under the GNU GENERAL PUBLIC LICENSE Version 3 License.\nSee the [LICENSE](LICENSE) file for details.\n",
    "bugtrack_url": null,
    "license": "GPL-3.0-only",
    "summary": "Define a Minecraft modpack in a JSON file, specifying mods, shaders, and resource packs, then download everything into organized folders for easy copying into your .minecraft folder.",
    "version": "1.1.0",
    "project_urls": null,
    "split_keywords": [
        "modrinth",
        " minecraft",
        " downloader"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "db5fe30e3979301a1ea2e3f52ab294a854df2bd7c2d599a63871850e0a56b6b0",
                "md5": "fcbb1f316dec4c2fa3b830d61a77c080",
                "sha256": "ae7d00ffe00117084b69064ee9f275979fb82ab1a988b4883b127c61e659a922"
            },
            "downloads": -1,
            "filename": "rinthdl-1.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fcbb1f316dec4c2fa3b830d61a77c080",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "==3.11.*",
            "size": 24346,
            "upload_time": "2024-11-15T23:07:45",
            "upload_time_iso_8601": "2024-11-15T23:07:45.775351Z",
            "url": "https://files.pythonhosted.org/packages/db/5f/e30e3979301a1ea2e3f52ab294a854df2bd7c2d599a63871850e0a56b6b0/rinthdl-1.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3537d7f805ecd67459f9360a9f7e2ffb1685aa4366ab858a5fe4019ade6933b4",
                "md5": "2721d6597cce5930962da72cdbf1c827",
                "sha256": "be8dbdeceb9ade5622e07e4f85fae4081543f6c4d66f064395e44459b26712b4"
            },
            "downloads": -1,
            "filename": "rinthdl-1.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "2721d6597cce5930962da72cdbf1c827",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "==3.11.*",
            "size": 22718,
            "upload_time": "2024-11-15T23:07:46",
            "upload_time_iso_8601": "2024-11-15T23:07:46.731741Z",
            "url": "https://files.pythonhosted.org/packages/35/37/d7f805ecd67459f9360a9f7e2ffb1685aa4366ab858a5fe4019ade6933b4/rinthdl-1.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-15 23:07:46",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "rinthdl"
}
        
Elapsed time: 0.36157s