pymanga package

Subpackages

Submodules

pymanga.api module

Do an ‘advanced search’ of MangaUpdates’ manga.

Parameters
  • params (dict) –

    Dict of parameters to search by.

    {
        'orderby': 'rating' or 'title' or 'year', # how to sort search results,
        'category': ['MangaUpdates','Categories/Tags'],
        'genre': ['Genres', 'To', 'Include'], # for a list of possible values
        'exclude_genre': ['Genres', 'To', 'Exclude' # see 'pymanga.genres'
    
        'licensed': empty or 'yes' or 'no',
            # empty/not specified -> show all
            # 'yes' -> show only licensed manga
            # 'no' -> show only unlicensed manga
    
        'filter': empty or 'filtering option',
            # empty/not specified -> show all
            # 'scanlated' -> only completely scanlated manga
            # 'completed' -> only completed manga (includes oneshots)
            # 'oneshots' -> only show oneshots
            # 'no_oneshots' -> excludes oneshots
            # 'some_releases' -> only show manga with at least one release
            # 'no_releases' -> only show manga with no releases
    
        'type': empty or 'type option',
            # 'artbook'
            # 'doujinshi'
            # 'drama_cd'
            # 'filipino'
            # 'indonesian'
            # 'manga'
            # 'manhwa'
            # 'manhua'
            # 'novel'
            # 'oel'
            # 'thai'
            # 'vietnamese'
            # 'malaysian'
    }
    

  • all_pages (bool, optional) –

    Fetch all results pages or not.

    Defaults to False.

    Note: the module automatically sleeps between requests if all_pages is set to true, as to not overload MangaUpdates.

    Consider using advanced_search_iter instead.

  • page (int, optional) – What page of results to fetch. Defaults to 1.

Returns

results – List of search results.

[
    {
        'name': 'Series Name',
        'id': 'Series ID',
        'rating': 'Average Rating',
        'summary': 'Short summary',
        'thumbnail': 'Thumbnail link' or None,
        'year': 'Year manga started releasing',
        'is_adult': True or False
        # note! mangaupdates categorizes whole genres like 'Yuri' as adult
        # so use this at your own discretion :)
        # if this is true, thumbnail will always be None.
    }
]

Return type

list of dicts

pymanga.api.advanced_search_iter(params)

Same as pymanga.api.advanced_search, but as a generator.

Requests new pages from mangaupdates only as needed.

pymanga.api.author(id)

Get author info from mangaupdates.

Parameters
  • id (str) – Author id.

  • description_format (str, optional) – Format to transform the description into. can be ‘plain’, ‘raw’ or ‘markdown’. defaults to ‘plain’.

Returns

group – group information.

{
    'name': 'Author name (as written in native language)',
    'header_name': 'Author name (as written in the page header)',
    'associated_names': ["authors associated names"],
    'birth_place': "author's birth place",
    'birth_date': "author's birth date",
    'zodiac': "author's zodiac sign",
    'blood_type': "author's blood type",
    'gender': "author's gender",
    'genres': {
        'genre author has worked in': 42 # number of series of this genre the author has worked on
    },
    'website': "author's website",
    'twitter': "author's twitter profile",
    'facebook': "author's facebook profile",
    'last_update': 'last time this page was updated',
    'series': { # series author has worked on
        'id': 'series id, if present',
        'title': 'series title',
        'year': 'year series was published',
        'genres': ['genres of series']
    },
    'comments': "notes on the author's page"

Return type

dict

pymanga.api.group(id)

Get group info from mangaupdates.

Parameters

id (str) – Group id.

Returns

group – group information.

{
    'name': 'Group name',
    'IRC': 'IRC link',
    'website': 'link',
    'forum': 'forum link, usually mangadex',
    'discord': 'link to discord server',
    'twitter': 'link to twitter',
    'facebook': 'link to facebook',
    'release_frequency': 'release frequency',
    'number_of_release': 'number of scanlated releases',
    'active': 'the status of the group',
    'total_series' : 'number of scanlated series',
    'genres': 'genre count of scanlated series',
    'categiries': 'category count of scanlated series',
    'notes': 'useful information, like previous name'
    'series': [
        {
            'id': 'series id',
            'name': 'series name',
        }
    ]
    'releases': [
        # TODO
    ]
}

Return type

dict

pymanga.api.releases(id)

Get latest releases of a manga

Parameters

id (str) – Manga ID.

Returns

releases – List of latest releases of a manga. List is ordered latest-to-oldest

[
    {
        'chapter': 'chapter number',
        'vol': 'volume number' or None,
        'series': {
            'name': 'Manga Name',
            'id': 'Manga ID'
        },
        'group': {
            'name': 'Scanlation Group Name',
            'id': 'Scanlation Group ID'
        }
    }
]

Return type

list of dicts

pymanga.api.search(query)

Performs a name-based search of MangaUpdates.

Parameters

query (str) – Name to search by.

Returns

dict – Results of search.

Return type

dict of {str : list}

pymanga.api.series(id, description_format='markdown')

Get series info from mangaupdates.

Parameters
  • id (str) – Series id.

  • description_format (str, optional) – Format to transform the description into. can be ‘plain’, ‘raw’ or ‘markdown’. defaults to ‘markdown’.

Returns

series – Series information.

{
    # main info
    'title': 'Series Name',
    'year':
    'type': 'Type of series (manhwa,manhua,manga,et)',
    'status': 'n Volumes (Ongoing or Complete or etc..)'
    'image': 'cover image link',
    'last_updated': 'December 3rd 2020, 5:32pm PST', # last time page was updated
    # authors & artists
    'artists': [
        {
            'id': 'Artist's Manga Updates ID',
            'name': 'Artist's Name'
        }
    ],
    'authors': [
        {
            'id': 'Author's Manga Updates ID',
            'name': 'Author's Name'
        }
    ],
    # relations
    'associated_names': [ # often in different languages, so make sure you can handle unicode.
         'Name one',
         'Name two'
    ],
    'related_series': [
        {
            'id': 'Related Series ID',
            'name': 'Related Series Name',
            'relation': 'Relation to current manga'
        }
    ],
    'anime_chapters': [ # if it doesn't have an anime, list will be empty
        'Starts at Vol x, Chap y',
        'Ends at Vol z, Chap w'
    ],
    # description & genre
    'genres': [
        'Genre',
        ...
    ],
    'categories': [
        {
            'category': 'Category Name',
            'score': '16 (16,0)'
        }
    ],
    'description': 'Lorem ipsum dolor sit amet..',
    # publishing info
    'publisher': {
        'id': 'publisher ID',
        'name': 'publisher name'
    },
    'serialized': {
        'link': 'mangaupdates link to where it was serialized',
        'name': 'name of where it was serialized'
    },
    'licensed': True or False # whether this series was licensed in english,
    'english_publisher': {
        'id': 'English Publisher ID',
        'name': 'English Publisher Name + Volume Info'
    },
    # scanlation info
    'completely_scanlated': True or False,
    'latest_releases': [
        {
            'chapter': 'chapter number',
            'volume': 'volume number if present',
            'date': 'n days ago',
            'group': {
                'id': 'Scanlation Group ID',
                'name': 'Scanlation Group Name'
            }
        }
    ],
    'groups': [ # all scanlation groups that published releases for this series
        {
            'id': 'Scanlation Group ID',
            'name': 'Scanlation Group Name'
        }
    ],
    # recommendations
    'category_recs': [
        {
            'id': 'Recommended Series ID',
            'name': 'Recommended Series Name'
        }
    ],
    'recs': [
        {
            'id': 'Recommended Series ID',
            'name': 'Recommended Series Name'
        }
    ],
    # user-related info
    'positions': {
        'monthly': '779',
        'monthly_change': '+155',
        'six_monthly': '1244',
        'six_monthly_change': '+76',
        'tri_monthly': '1120',
        'tri_monthly_change': '-17',
        'weekly': '431',
        'weekly_change': '+121',
        'yearly': '1277',
        'yearly_change': '-162'
    },
    'average': { # ratings
        'average': 'average rating',
        'bayesian': 'bayesian average rating',
        'votes': 'n votes'
    },
    'reading_lists': {
        'custom': 'n',
        'reading': 'n',
        'unfinished': 'n',
        'wish': 'n'
    },
    'forum': {
        'link': 'https://www.mangaupdates.com/topics.php?fid=120202',
        'status': 'None'
    }
}

Return type

dict

pymanga.genres module

List of all MangaUpdates genres.
  • ‘Action’

  • ‘Adult’

  • ‘Adventure’

  • ‘Comedy’

  • ‘Doujinshi’

  • ‘Drama’

  • ‘Ecchi’

  • ‘Fantasy’

  • ‘Gender Bender’

  • ‘Harem’

  • ‘Hentai’

  • ‘Historical’

  • ‘Horror’

  • ‘Josei’

  • ‘Lolicon’

  • ‘Martial Arts’

  • ‘Mature’

  • ‘Mecha’

  • ‘Mystery’

  • ‘Psychological’

  • ‘Romance’

  • ‘School Life’

  • ‘Sci-fi’

  • ‘Seinen’

  • ‘Shotacon’

  • ‘Shoujo’

  • ‘Shoujo Ai’

  • ‘Shounen’

  • ‘Shounen Ai’

  • ‘Slice of Life’

  • ‘Smut’

  • ‘Sports’

  • ‘Supernatural’

  • ‘Tragedy’

  • ‘Yaoi’

  • ‘Yuri’

Module contents