pymanga package
Subpackages
Submodules
pymanga.api module
- pymanga.api.advanced_search(params, all_pages=False, page=1)
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.
See also
- 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}
See also
- 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’