tomoe


Nametomoe JSON
Version 3.0.19 PyPI version JSON
download
home_pagehttps://github.com/sinkaroid/tomoe
SummaryA doujinshi downloader with ease
upload_time2024-05-10 16:39:57
maintainerNone
docs_urlNone
authorsinkaroid
requires_pythonNone
licenseMIT
keywords
VCS
bugtrack_url
requirements janda inputimeout xhtml2pdf
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center">
<a href="https://github.com/sinkaroid/tomoe/wiki"><img width="500" src="https://cdn.discordapp.com/attachments/952117487166705747/1013588505919762443/tomoe_.png" alt="tomoe"></a>

<h3 align="center">An exalted doujinshi downloader with ease.</h3>
<p align="center">
	<a href="https://github.com/sinkaroid/tomoe/actions/workflows/bulk_download.yml"><img src="https://github.com/sinkaroid/tomoe/workflows/modular%20bulk%20download/badge.svg"></a>
	<a href="https://codeclimate.com/github/sinkaroid/tomoe/maintainability"><img src="https://api.codeclimate.com/v1/badges/a729e38da1fe1ee520b1/maintainability" /></a>
</p>

Tomoe is a CLI tool for downloading doujinshi from various doujinboards. It's also has built-in modular bulk download and auto render into PDF (**Portable Document Format**) for it's utility, hopefully will be reusable.

<a href="#options">🚀 Commands</a> •
<a href="https://github.com/sinkaroid/tomoe/wiki">Documentation</a> •
<a href="https://github.com/sinkaroid/tomoe/issues/new/choose">Report Issues</a>

</div>

- [Tomoe](#)
  - [Features](#features)
    - [Tomoe availability](#tomoe-vs-the-doujinboards)
    - [Site support](#site-support)
  - [Installation](#installation)
    - [Prerequisites](#prerequisites)
  - [Documentation](https://github.com/sinkaroid/tomoe/wiki)
    - [Command usage](#command-usage)
    - [Quick examples](#quick-example)
    - [Options](#options)
    - [Bulk download](#bulk-download)
    - [Bulk download using nested list](#bulk-download-using-nested-list)
  - [Pronunciation](#pronunciation)
  - [Acknowledgements](./CLOSING_REMARKS.md)
  - [Legal](#legal)

---

## Tomoe vs. the doujinboards

Tomoe consumes [Jandapress](https://github.com/sinkaroid/jandapress) and uses [janda](https://pypi.org/project/janda/) for the doujin Python library.

**Features availability** Speed or performance may not be accurate because internet connection or API response. Some tests have high resolve time and render a bit longer, because some sources do not provide real extension of an images, tomoe should check and guess it's format.

| Site            | Status                                                                                                                                                              | Bulk download | Average response | 
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ---------------- | 
| `nhentai`       | [![Nhentai download](https://github.com/sinkaroid/tomoe/workflows/Nhentai%20test/badge.svg)](https://github.com/sinkaroid/tomoe/actions/workflows/nhentai.yml)             | `Yes`         | ~0.52 minutes    | 
| `pururin`       | [![Pururin download](https://github.com/sinkaroid/tomoe/workflows/Pururin%20test/badge.svg)](https://github.com/sinkaroid/tomoe/actions/workflows/pururin.yml)             | `Yes`         | ~0.63 minutes    |
| `hentaifox`     | [![Hentaifox download](https://github.com/sinkaroid/tomoe/workflows/Hentaifox%20test/badge.svg)](https://github.com/sinkaroid/tomoe/actions/workflows/hentaifox.yml)       | `Yes`         | ~0.33 minutes    |
| `hentai2read`   | [![Hentai2read download](https://github.com/sinkaroid/tomoe/workflows/Hentai2read%20test/badge.svg)](https://github.com/sinkaroid/tomoe/actions/workflows/hentai2read.yml) | `Yes`         | ~0.10 minutes    | 
| `simply-hentai` | [![Simply-hentai download](https://github.com/sinkaroid/tomoe/workflows/Simplyhentai%20test/badge.svg)](https://github.com/sinkaroid/tomoe/actions/workflows/simply.yml)        | `Yes`         | ~0.29 minutes    |
| `asmhentai`     | [![Asmhentai download](https://github.com/sinkaroid/tomoe/workflows/Asmhentai%20test/badge.svg)](https://github.com/sinkaroid/tomoe/actions/workflows/asmhentai.yml)       | `Yes`         | ~0.23 minutes    |
| `3hentai`     | [![3hentai download](https://github.com/sinkaroid/tomoe/workflows/3hentai%20test/badge.svg)](https://github.com/sinkaroid/tomoe/actions/workflows/3hentai.yml)       | `Yes`         | ~0.20 minutes    |

## Features

- Plenty of sites coverage
- Built-in auto render into PDF
- Modular bulk download
- Minimalist dependencies
- Download with ease, doesn't require you a lot of arguments

<img src="https://cdn.discordapp.com/attachments/997107089921028136/1014351915578040380/tomoe_.png" width="600" alt="tomoe">

## Site support

Currently tomoe supports the following websites:

- [nhentai.net](https://nhentai.net/)
- [pururin.to](https://pururin.to/)
- [hentaifox.com](https://hentaifox.com/)
- [hentai2read.com](https://hentai2read.com/)
- [simply-hentai.com](https://simply-hentai.com/)
- [asmhentai.com](https://asmhentai.com/)
- [3hentai.net](https://3hentai.net/)

## Prerequisites

<table>
	<td><b>NOTE:</b> Python 3.7 or above</td>
</table>

## Installation

`pip install tomoe`

- Or manual build by cloning the repository and run `python setup.py install`

## Command usage

> `tomoe --args <id|path>`

## Quick example

> `tomoe --nhentai 177013`

After that, you could see the download results or throw you an error if something went wrong.

## Options

It's fairly simple to use tomoe

| **Argument**                      | **Description**           | **Example**                                                                                                                                                         |
| --------------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--nhentai`, int                    | nhentai                   | [`tomoe --nhentai 255369`](https://nhentai.net/g/255369/)                                                                                                           |
| `--pururin`, int                    | pururin                   | [`tomoe --pururin 47226`](https://pururin.to/gallery/47226/crot-sampe-lumpuh)                                                                                       |
| `--hentaifox`, int                  | hentaifox                 | [`tomoe --hentaifox 59026`](https://hentaifox.com/gallery/59026/)                                                                                                   |
| `--hentai2read`, str | hentai2read               | [`tomoe --hentai2read chaldea_life/1`](https://hentai2read.com/chaldea_life/)                                                                                       |
| `--simply`, str                     | simply-hentai             | [`tomoe --simply "fate-grand-order/fgo-no-ashibon-fgo-foot-book/all-pages"`](https://www.simply-hentai.com/fate-grand-order/fgo-no-ashibon-fgo-foot-book/all-pages) |
| `--asmhentai`, int                  | asmhentai                 | [`tomoe --asmhentai 311851`](https://asmhentai.com/g/311851/)     
| `--three`, int                  | 3hentai                 | [`tomoe --three 608979`](https://asmhentai.com/g/311851/)                                                                                                   |
| `--bulk`, str                       | custom bulk download      | [`tomoe --bulk doujin.json`](/doujin.json)                                                                                                                          |
| `--pdf`, str                        | render pdf for each title | [`tomoe --nhentai 255369 --pdf`](https://3hentai.net/d/608979)                                                                                                     |

## Bulk download

You can pass multiple id to request bulk download

| **Sites**   | **Description**                 | **Example**                                                                                                                |
| ----------- | ------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| nhentai     | place multiple id               | `tomoe --nhentai 255369 417103 417119`                                                                                     |
| pururin     | place multiple id               | `tomoe --pururin 47226 64351 56175`                                                                                        |
| hentaifox   | place multiple id               | `tomoe --hentaifox 59026 61805`                                                                                            |
| hentai2read | place multiple path | `tomoe --hentai2read chaldea_life/1 watashitachi_producersan_ni_mechakucha/1`                                              |
| simply      | place multiple chapter          | `tomoe --simply "fate-grand-order/fgo-no-ashibon-fgo-foot-book/all-pages" "original-work/kanchou-manga-cffc37a/all-pages"` |
| asmhentai   | place multiple id               | `tomoe --asmhentai 311851 210135 309068`                                                                                   |

## Bulk download using nested list

> `tomoe --bulk doujin.json`

If you need to download multiple doujins from each different website, you can do a bulk download using an arbitrary method. Meaning that you can mix and wrap the whole book ids into nested array in a JSON file. Read more about [Understanding Nested Arrays.](https://javascript.plainenglish.io/understanding-the-nested-arrays-fbf3ab13c2b4#:~:text=An%20array%20is%20an%20ordered,the%20element%20of%20an%20array)

Create `doujin.json` in the same directory where you want to run tomoe and follow this structure:  
**Note** _You should not change the "book" property_

```js
{
    "book": [
        {
            "nhentai": 177013
        },
        {
            "nhentai": 255369
        },
        {
            "pururin": 47226
        },
        {
            "pururin": 64351
        },
        {
            "hentaifox": 59026
        },
        {
            "hentaifox": 61805
        },
        {
            "asmhentai": 311851
        },
        {
            "asmhentai": 210135
        },
        {
            "hentai2read": "chaldea_life/1"
        },
        {
            "simply": "fate-grand-order/fgo-no-ashibon-fgo-foot-book/all-pages"
        }
    ]
}
```

Then tell tomoe to resolve all the book ids from the JSON file.
`tomoe --bulk doujin.json`

## Pronunciation

[`ja_JP`](https://www.localeplanet.com/java/ja-JP/index.html) • **to-moe** — commonly translated as "comma", is a comma-like swirl symbol used in Japanese mon. It closely resembles the usual form of a magatama.

## Legal

This tool can be freely copied, modified, altered, distributed without any attribution whatsoever. However, if you feel
like this tool deserves an attribution, mention it. It won't hurt anybody.

> Licence: WTF.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/sinkaroid/tomoe",
    "name": "tomoe",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": null,
    "author": "sinkaroid",
    "author_email": "anakmancasan@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/c3/73/401737de3f2ca189087e5d0481c65a44d7321a7bb66fd0d6a58d270efe4b/tomoe-3.0.19.tar.gz",
    "platform": null,
    "description": "<div align=\"center\">\r\n<a href=\"https://github.com/sinkaroid/tomoe/wiki\"><img width=\"500\" src=\"https://cdn.discordapp.com/attachments/952117487166705747/1013588505919762443/tomoe_.png\" alt=\"tomoe\"></a>\r\n\r\n<h3 align=\"center\">An exalted doujinshi downloader with ease.</h3>\r\n<p align=\"center\">\r\n\t<a href=\"https://github.com/sinkaroid/tomoe/actions/workflows/bulk_download.yml\"><img src=\"https://github.com/sinkaroid/tomoe/workflows/modular%20bulk%20download/badge.svg\"></a>\r\n\t<a href=\"https://codeclimate.com/github/sinkaroid/tomoe/maintainability\"><img src=\"https://api.codeclimate.com/v1/badges/a729e38da1fe1ee520b1/maintainability\" /></a>\r\n</p>\r\n\r\nTomoe is a CLI tool for downloading doujinshi from various doujinboards. It's also has built-in modular bulk download and auto render into PDF (**Portable Document Format**) for it's utility, hopefully will be reusable.\r\n\r\n<a href=\"#options\">\ud83d\ude80 Commands</a> \u2022\r\n<a href=\"https://github.com/sinkaroid/tomoe/wiki\">Documentation</a> \u2022\r\n<a href=\"https://github.com/sinkaroid/tomoe/issues/new/choose\">Report Issues</a>\r\n\r\n</div>\r\n\r\n- [Tomoe](#)\r\n  - [Features](#features)\r\n    - [Tomoe availability](#tomoe-vs-the-doujinboards)\r\n    - [Site support](#site-support)\r\n  - [Installation](#installation)\r\n    - [Prerequisites](#prerequisites)\r\n  - [Documentation](https://github.com/sinkaroid/tomoe/wiki)\r\n    - [Command usage](#command-usage)\r\n    - [Quick examples](#quick-example)\r\n    - [Options](#options)\r\n    - [Bulk download](#bulk-download)\r\n    - [Bulk download using nested list](#bulk-download-using-nested-list)\r\n  - [Pronunciation](#pronunciation)\r\n  - [Acknowledgements](./CLOSING_REMARKS.md)\r\n  - [Legal](#legal)\r\n\r\n---\r\n\r\n## Tomoe vs. the doujinboards\r\n\r\nTomoe consumes [Jandapress](https://github.com/sinkaroid/jandapress) and uses [janda](https://pypi.org/project/janda/) for the doujin Python library.\r\n\r\n**Features availability** Speed or performance may not be accurate because internet connection or API response. Some tests have high resolve time and render a bit longer, because some sources do not provide real extension of an images, tomoe should check and guess it's format.\r\n\r\n| Site            | Status                                                                                                                                                              | Bulk download | Average response | \r\n| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ---------------- | \r\n| `nhentai`       | [![Nhentai download](https://github.com/sinkaroid/tomoe/workflows/Nhentai%20test/badge.svg)](https://github.com/sinkaroid/tomoe/actions/workflows/nhentai.yml)             | `Yes`         | ~0.52 minutes    | \r\n| `pururin`       | [![Pururin download](https://github.com/sinkaroid/tomoe/workflows/Pururin%20test/badge.svg)](https://github.com/sinkaroid/tomoe/actions/workflows/pururin.yml)             | `Yes`         | ~0.63 minutes    |\r\n| `hentaifox`     | [![Hentaifox download](https://github.com/sinkaroid/tomoe/workflows/Hentaifox%20test/badge.svg)](https://github.com/sinkaroid/tomoe/actions/workflows/hentaifox.yml)       | `Yes`         | ~0.33 minutes    |\r\n| `hentai2read`   | [![Hentai2read download](https://github.com/sinkaroid/tomoe/workflows/Hentai2read%20test/badge.svg)](https://github.com/sinkaroid/tomoe/actions/workflows/hentai2read.yml) | `Yes`         | ~0.10 minutes    | \r\n| `simply-hentai` | [![Simply-hentai download](https://github.com/sinkaroid/tomoe/workflows/Simplyhentai%20test/badge.svg)](https://github.com/sinkaroid/tomoe/actions/workflows/simply.yml)        | `Yes`         | ~0.29 minutes    |\r\n| `asmhentai`     | [![Asmhentai download](https://github.com/sinkaroid/tomoe/workflows/Asmhentai%20test/badge.svg)](https://github.com/sinkaroid/tomoe/actions/workflows/asmhentai.yml)       | `Yes`         | ~0.23 minutes    |\r\n| `3hentai`     | [![3hentai download](https://github.com/sinkaroid/tomoe/workflows/3hentai%20test/badge.svg)](https://github.com/sinkaroid/tomoe/actions/workflows/3hentai.yml)       | `Yes`         | ~0.20 minutes    |\r\n\r\n## Features\r\n\r\n- Plenty of sites coverage\r\n- Built-in auto render into PDF\r\n- Modular bulk download\r\n- Minimalist dependencies\r\n- Download with ease, doesn't require you a lot of arguments\r\n\r\n<img src=\"https://cdn.discordapp.com/attachments/997107089921028136/1014351915578040380/tomoe_.png\" width=\"600\" alt=\"tomoe\">\r\n\r\n## Site support\r\n\r\nCurrently tomoe supports the following websites:\r\n\r\n- [nhentai.net](https://nhentai.net/)\r\n- [pururin.to](https://pururin.to/)\r\n- [hentaifox.com](https://hentaifox.com/)\r\n- [hentai2read.com](https://hentai2read.com/)\r\n- [simply-hentai.com](https://simply-hentai.com/)\r\n- [asmhentai.com](https://asmhentai.com/)\r\n- [3hentai.net](https://3hentai.net/)\r\n\r\n## Prerequisites\r\n\r\n<table>\r\n\t<td><b>NOTE:</b> Python 3.7 or above</td>\r\n</table>\r\n\r\n## Installation\r\n\r\n`pip install tomoe`\r\n\r\n- Or manual build by cloning the repository and run `python setup.py install`\r\n\r\n## Command usage\r\n\r\n> `tomoe --args <id|path>`\r\n\r\n## Quick example\r\n\r\n> `tomoe --nhentai 177013`\r\n\r\nAfter that, you could see the download results or throw you an error if something went wrong.\r\n\r\n## Options\r\n\r\nIt's fairly simple to use tomoe\r\n\r\n| **Argument**                      | **Description**           | **Example**                                                                                                                                                         |\r\n| --------------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\r\n| `--nhentai`, int                    | nhentai                   | [`tomoe --nhentai 255369`](https://nhentai.net/g/255369/)                                                                                                           |\r\n| `--pururin`, int                    | pururin                   | [`tomoe --pururin 47226`](https://pururin.to/gallery/47226/crot-sampe-lumpuh)                                                                                       |\r\n| `--hentaifox`, int                  | hentaifox                 | [`tomoe --hentaifox 59026`](https://hentaifox.com/gallery/59026/)                                                                                                   |\r\n| `--hentai2read`, str | hentai2read               | [`tomoe --hentai2read chaldea_life/1`](https://hentai2read.com/chaldea_life/)                                                                                       |\r\n| `--simply`, str                     | simply-hentai             | [`tomoe --simply \"fate-grand-order/fgo-no-ashibon-fgo-foot-book/all-pages\"`](https://www.simply-hentai.com/fate-grand-order/fgo-no-ashibon-fgo-foot-book/all-pages) |\r\n| `--asmhentai`, int                  | asmhentai                 | [`tomoe --asmhentai 311851`](https://asmhentai.com/g/311851/)     \r\n| `--three`, int                  | 3hentai                 | [`tomoe --three 608979`](https://asmhentai.com/g/311851/)                                                                                                   |\r\n| `--bulk`, str                       | custom bulk download      | [`tomoe --bulk doujin.json`](/doujin.json)                                                                                                                          |\r\n| `--pdf`, str                        | render pdf for each title | [`tomoe --nhentai 255369 --pdf`](https://3hentai.net/d/608979)                                                                                                     |\r\n\r\n## Bulk download\r\n\r\nYou can pass multiple id to request bulk download\r\n\r\n| **Sites**   | **Description**                 | **Example**                                                                                                                |\r\n| ----------- | ------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |\r\n| nhentai     | place multiple id               | `tomoe --nhentai 255369 417103 417119`                                                                                     |\r\n| pururin     | place multiple id               | `tomoe --pururin 47226 64351 56175`                                                                                        |\r\n| hentaifox   | place multiple id               | `tomoe --hentaifox 59026 61805`                                                                                            |\r\n| hentai2read | place multiple path | `tomoe --hentai2read chaldea_life/1 watashitachi_producersan_ni_mechakucha/1`                                              |\r\n| simply      | place multiple chapter          | `tomoe --simply \"fate-grand-order/fgo-no-ashibon-fgo-foot-book/all-pages\" \"original-work/kanchou-manga-cffc37a/all-pages\"` |\r\n| asmhentai   | place multiple id               | `tomoe --asmhentai 311851 210135 309068`                                                                                   |\r\n\r\n## Bulk download using nested list\r\n\r\n> `tomoe --bulk doujin.json`\r\n\r\nIf you need to download multiple doujins from each different website, you can do a bulk download using an arbitrary method. Meaning that you can mix and wrap the whole book ids into nested array in a JSON file. Read more about [Understanding Nested Arrays.](https://javascript.plainenglish.io/understanding-the-nested-arrays-fbf3ab13c2b4#:~:text=An%20array%20is%20an%20ordered,the%20element%20of%20an%20array)\r\n\r\nCreate `doujin.json` in the same directory where you want to run tomoe and follow this structure:  \r\n**Note** _You should not change the \"book\" property_\r\n\r\n```js\r\n{\r\n    \"book\": [\r\n        {\r\n            \"nhentai\": 177013\r\n        },\r\n        {\r\n            \"nhentai\": 255369\r\n        },\r\n        {\r\n            \"pururin\": 47226\r\n        },\r\n        {\r\n            \"pururin\": 64351\r\n        },\r\n        {\r\n            \"hentaifox\": 59026\r\n        },\r\n        {\r\n            \"hentaifox\": 61805\r\n        },\r\n        {\r\n            \"asmhentai\": 311851\r\n        },\r\n        {\r\n            \"asmhentai\": 210135\r\n        },\r\n        {\r\n            \"hentai2read\": \"chaldea_life/1\"\r\n        },\r\n        {\r\n            \"simply\": \"fate-grand-order/fgo-no-ashibon-fgo-foot-book/all-pages\"\r\n        }\r\n    ]\r\n}\r\n```\r\n\r\nThen tell tomoe to resolve all the book ids from the JSON file.\r\n`tomoe --bulk doujin.json`\r\n\r\n## Pronunciation\r\n\r\n[`ja_JP`](https://www.localeplanet.com/java/ja-JP/index.html) \u2022 **to-moe** \u2014 commonly translated as \"comma\", is a comma-like swirl symbol used in Japanese mon. It closely resembles the usual form of a magatama.\r\n\r\n## Legal\r\n\r\nThis tool can be freely copied, modified, altered, distributed without any attribution whatsoever. However, if you feel\r\nlike this tool deserves an attribution, mention it. It won't hurt anybody.\r\n\r\n> Licence: WTF.\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A doujinshi downloader with ease",
    "version": "3.0.19",
    "project_urls": {
        "Discord": "https://discord.gg/8wj4vM5hHM",
        "Documentation": "https://github.com/sinkaroid/tomoe/wiki",
        "Funding": "https://github.com/sponsors/sinkaroid",
        "Homepage": "https://github.com/sinkaroid/tomoe",
        "Issue tracker": "https://github.com/sinkaroid/tomoe/issues/new/choose"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c373401737de3f2ca189087e5d0481c65a44d7321a7bb66fd0d6a58d270efe4b",
                "md5": "56761a94d4698ade4ff8efe6aa3dcde3",
                "sha256": "03cbc619a6400dfe7b8e14b8edccf99cc3c6fa4ab8eb762a78f75aab745e9c22"
            },
            "downloads": -1,
            "filename": "tomoe-3.0.19.tar.gz",
            "has_sig": false,
            "md5_digest": "56761a94d4698ade4ff8efe6aa3dcde3",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 14757,
            "upload_time": "2024-05-10T16:39:57",
            "upload_time_iso_8601": "2024-05-10T16:39:57.800807Z",
            "url": "https://files.pythonhosted.org/packages/c3/73/401737de3f2ca189087e5d0481c65a44d7321a7bb66fd0d6a58d270efe4b/tomoe-3.0.19.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-10 16:39:57",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "sinkaroid",
    "github_project": "tomoe",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "janda",
            "specs": [
                [
                    ">=",
                    "3.1.3"
                ]
            ]
        },
        {
            "name": "inputimeout",
            "specs": [
                [
                    ">=",
                    "1.0.4"
                ]
            ]
        },
        {
            "name": "xhtml2pdf",
            "specs": [
                [
                    ">=",
                    "0.2.7"
                ]
            ]
        }
    ],
    "lcname": "tomoe"
}
        
Elapsed time: 0.41978s