Skip to main content

Webcomic downloader

Project description

webcomix

BuildCoverage StatusPyPI version

Description

webcomix is a webcomic downloader that can additionally create a .cbz (Comic Book ZIP) file once downloaded.

Notice

This program is for personal use only. Please be aware that by making the downloaded comics publicly available without the permission of the author, you may be infringing upon various copyrights.

Installation

Dependencies

  • Python (3.10 or newer)
  • click
  • scrapy (Some additional steps might be required to include this package and can be found here)
  • scrapy-playwright
  • scrapy-fake-useragent
  • tqdm
  • Playwright browsers (for JavaScript-dependent websites with -j option): run python -m playwright install chromium

Process

End user

  1. Install Python 3
  2. Install the command line interface tool with pip install webcomix or use uvx

Developer

  1. Install Python 3
  2. Clone this repository and open a terminal in its directory
  3. Install uv with pip install uv
  4. Download the dependencies by running uv sync
  5. Install pre-commit hooks with pre-commit install

Usage

webcomix [OPTIONS] COMMAND [ARGS]

Global Flags

help

Show the help message and exit.

Version

Show the version number and exit.

Commands

comics

Shows all predefined comics which can be used with the download command.

download

Downloads a predefined comic. Supports the --cbz flag, which creates a .cbz archive of the downloaded comic.

search

Searches for an XPath that can download the whole comic. Supports the --cbz flag, which creates a .cbz archive of the downloaded comic,-s, which verifies only the provided page of the comic, -y, which skips the verification prompt, and -j, which runs the javascript on pages before downloading.

custom

Downloads a user-defined comic. To download a specific comic, you'll need a link to the first page, an XPath expression giving out the link to the next page and an XPath expression giving out the link to the image. More info here. Supports the --cbz flag, which creates a .cbz archive of the downloaded comic, -s, which verifies only the provided page of the comic, and -y, which skips the verification prompt.

Examples

  • webcomix download xkcd
  • webcomix search xkcd --start-url=http://xkcd.com/1/
  • webcomix custom --cbz (You will be prompted about other needed arguments)
  • webcomix custom xkcd --start-url=http://xkcd.com/1/ --next-page-xpath="//a[@rel='next']/@href" --image-xpath="//div[@id='comic']//img/@src" --cbz (Same as before, but with all arguments declared beforehand)

Making an XPath selector

Using an HTML inspector, spot a html path to the next link's href attribute/comic image's src attribute.

e.g.: //div[@class='foo']/img/@src This will select the src attribute of the first image whose class is: foo

Note: webcomix works best on static websites, since scrapy(the framework we use to travel web pages) doesn't process Javascript.

To make sure your XPath is correct, you have to go into scrapy shell, which should be downloaded when you've installed webcomix.

scrapy shell <website> --> Use the website's url to go to it.
> response.body --> Will give you the html from the website.
> response.xpath --> Test an xpath selection. If you get [], this means your XPath expression hasn't gotten anything from the webpage.

Contribution

The procedure depends on the type of contribution:

  • If you simply want to request the addition of a comic to the list of supported comics, make an issue with the label "Enhancement".
  • If you want to request the addition of a feature to the system or a bug fix, make an issue with the appropriate label.

Running the tests

To run the tests, you have to use the pytest command in the webcomix folder.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

webcomix-4.0.1.tar.gz (332.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

webcomix-4.0.1-py3-none-any.whl (349.8 kB view details)

Uploaded Python 3

File details

Details for the file webcomix-4.0.1.tar.gz.

File metadata

  • Download URL: webcomix-4.0.1.tar.gz
  • Upload date:
  • Size: 332.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for webcomix-4.0.1.tar.gz
Algorithm Hash digest
SHA256 82086cc6ae0ce3b4cc7354e28bc46c7ed89b808af49a1c85406f1439c0fc4bbb
MD5 be91ef3d322257fa99068e58184e1e0f
BLAKE2b-256 67eec36ba292f61b09611c961fbf549d6ea378ddac401c25d12028581c46aacf

See more details on using hashes here.

Provenance

The following attestation bundles were made for webcomix-4.0.1.tar.gz:

Publisher: build.yml on J-CPelletier/webcomix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file webcomix-4.0.1-py3-none-any.whl.

File metadata

  • Download URL: webcomix-4.0.1-py3-none-any.whl
  • Upload date:
  • Size: 349.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for webcomix-4.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 81be74d73cce78dc4378550bcf6007a070dd1568e9101ab8e97cd3e06663a2a9
MD5 847c16d0e2d1c0b159e25c1cde0cd4c0
BLAKE2b-256 08587a307bec7335056ea79680cb66d4555c15befe6cd37aca06b6cc34bc55c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for webcomix-4.0.1-py3-none-any.whl:

Publisher: build.yml on J-CPelletier/webcomix

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page