mangopi icon indicating copy to clipboard operation
mangopi copied to clipboard

A manga API with a pluggable site architecture.

mangopi

Build Status Coverage Status

mangopi aims to be an easy-to-use, easy-to-extend manga api. Adding a new site should be as simple as filling in a few regexes - everything else is taken care of.

Installation

Run pip install mangopi, or clone the repo and run python setup.py install.

Layout

helper contains some shared, non-application-specific code. (Or it will, after the Util class is removed.)

site contains the library logic to retrieve data from the websites. The hierarchy:

MangaSite
  - Noez
    - MangaFox
    - MangaHere
  - Aftv
    - MangaPanda
    - MangaReader

Noez and Aftv appear to be the parent companies of the sites that exist under them.

Usage

Q: What's the image url for the first page of the first chapter of 'Toriko'?

>>> from mangopi.site.mangafox import MangaFox
>>> MangaFox.series('toriko').chapters[0].pages[0].image.url
'http://z.mfcdn.net/store/manga/3660/01-001.0/compressed/toriko_v01_c01_01.jpg'

Alternatively, use MetaSite, which allows aggregation of multiple sites (there are some performance issues related to error correction that are being worked out however):

>>> from mangopi.metasite import MetaSite
>>> from mangopi.site.mangafox import MangaFox
>>> from mangopi.site.mangahere import MangaHere
>>> from mangopi.site.mangapanda import MangaPanda
>>> from mangopi.site.mangareader import MangaReader
>>> search = MetaSite([MangaFox, MangaHere, MangaPanda, MangaReader])
>>> search.series('death note').chapters['22'].pages[0].image.url
'http://i39.mangapanda.com/death-note/22/death-note-1678383.jpg'

Take a look at the mangopi.tests module for further examples.

Version Support

Support is maintained on Python 2.7, 3.3, and 3.4.

Testing

Run python setup.py test or nosetests.