/mangal

📖 Manga browser and downloader for Linux, Windows & MacOS

Primary LanguageGoMIT LicenseMIT

Mangal

logo

Manga Browser & Downloader

Mangal.mov

Table of Contents

About

Mangal is feature rich, configurable manga browser & downloader written in Go with support for different formats

⚙️ One of the most important features of Mangal is that it supports user defined scrapers that can be added with just a few lines of config file (see config & limitations)

🦎 Works in both modes - TUI & Inline. Use it as a standalone app or integrate with scripts

🍿 This app is inspired by awesome ani-cli. Check it out!

Currently, Mangal supports these formats

  • PDF
  • Epub
  • CBZ
  • Zip
  • Plain (just images)

Type mangal formats for more info

Examples

TUI usage example

TUI.mov

Inline mode usage example

For more information about inline mode type mangal inline --help

# Search manga. Returns a list of found manga
mangal inline --query "death note"

# Search manga. Returns a JSON list of found manga
mangal inline --query "death note" --json

# Get chapters of first manga in the list
mangal inline --query "death note" --manga 1

# Download first chapter of the first manga in the list
mangal inline --query "death note" --manga 1 --chapter 1

Config

TLDR: Use mangal config where to show where config should be located and mangal config init to create default config

Config is located at the OS default config directory.
  • Unix - $XDG_CONFIG_HOME/mangal/config.toml if $XDG_CONFIG_HOME exists, else $HOME/.config/mangal/config.toml
  • Darwin (macOS) - $HOME/Library/Application\ Support/mangal/config.toml
  • Windows - %AppData%\mangal\config.toml

You can load config from custom path by using --config flag

mangal --config /user/configs/config.toml

By default, Mangal uses manganelo as a source

Click here to show config example
# Which sources to use. You can use several sources, it won't affect perfomance'
use = ['manganelo']

# Available options: pdf, epub, cbz, zip, plain (just images)
format = "pdf"

# If false, then OS default pdf reader will be used
use_custom_reader = false
custom_reader = "zathura"

# Custom download path, can be either relative (to the current directory) or absolute
download_path = '.'

# Add images to cache
# If set to true mangal could crash when trying to redownload something really quickly
# Usually happens on slow machines
cache_images = false

[ui]
# Fullscreen mode
fullscreen = true

# Input prompt icon
prompt = ">"

# Input placeholder
placeholder = "What shall we look for?"

# Selected chapter mark
mark = ""

# Search window title
title = "Mangal"

[sources]
[sources.manganelo]
# Base url
base = 'https://ww5.manganelo.tv'

# Search endpoint. Put %s where the query should be
search = 'https://ww5.manganelo.tv/search/%s'

# Selector of entry anchor (<a></a>) on search page
manga_anchor = '.search-story-item a.item-title'

# Selector of entry title on search page
manga_title = '.search-story-item a.item-title'

# Manga chapters anchors selector
chapter_anchor = 'li.a-h a.chapter-name'

# Manga chapters titles selector
chapter_title = 'li.a-h a.chapter-name'

# Reader page images selector
reader_page = '.container-chapter-reader img'

# Random delay between requests
random_delay_ms = 500 # ms

# Are chapters listed in reversed order on that source?
# reversed order -> from newest chapter to oldest
reversed_chapters_order = true

Commands

The ultimate manga downloader multitool

Usage:
  mangal [flags]
  mangal [command]

Available Commands:
  cleanup     Remove cached and temp files
  completion  Generate the autocompletion script for the specified shell
  config      Config actions
  formats     Information about available formats
  help        Help about any command
  inline      Search & Download manga in inline mode
  version     Show version

Flags:
  -c, --config string   use config from path
  -f, --format string   use custom format
  -h, --help            help for mangal

Use "mangal [command] --help" for more information about a command.

Install

Go

go install github.com/metafates/mangal@latest

From source

git clone https://github.com/metafates/mangal.git
cd mangal
go install

Homebrew

brew tap metafates/tap
brew install metafates/tap/mangal

Scoop

Soon... 😴

Build

git clone https://github.com/metafates/mangal.git
cd mangal
go build

You can also cross build for windows, linux & macos by running cross-compile.py

Built binaries will be stored in the bin folder

Limitations

Even though many manga sites will work, there exists some (serious) limitations to which sites could be added

  • Navigation layout should follow this model
    • Each manga have a separate page
    • Manga page should have a some form of chapters list (not lazy loaded)
    • Each chapter should have a separate reader page with all images

Some sites that work well

I'm planning to make a more advanced scraper creation system to overcome this roadblocks somewhere in the future


Logo taken from here