A python wrapper for the MangaDex API V5. It uses the requests library and all the aditional arguments can be viewed in the Official Mangadex Documentation
pip install --Upgrade mangadex
In the mangadex directory type
pip install .
>>> import mangadex as md
>>> auth = md.auth.Auth()
>>> manga = md.series.Manga(auth=auth)
>>> chapter = md.series.Chapter(auth=auth)
>>> customlist = md.series.CustomList(auth=auth)
>>> tag = md.series.Tag(auth=auth)
>>> cover = md.series.Cover(auth=auth)
>>> scangroup = md.people.ScanlationGroup(auth=auth)
>>> user = md.people.User(auth=auth)
>>> follows = md.people.Follows(auth=auth)
This is called mangalist in the documentation
>>> manga_list = manga.get_manga_list(limit = 1) #limits the query to return just one manga
>>> manga_list[Manga(manga_id = 0001183c-2089-48e9-96b7-d48db5f1a611, title = {'en': 'Eight'}, altTitles = [{'ja': '8(エイト)'}], description = {'en': 'Tokyo in the 90s, the city center has been suffering from a continuing depopulation. Also affected is the Udagawa Junior High School where only six people are left, as their class leader, protector and very good friend Masato just died in an illegal skateboarding race. Five months later Eito Hachiya, nickname: Eight or "8" enrolls in school and wants to find out what happened. He even just looks like Masato! But mysteries surround him: Why does he know all the other six? Why can’t they remember him? \n \nNote: Was cancelled after ~25% of volume 4, the epilogue consists of an alternative ending for Eight.'}, isLocked = False, links = {'al': '38734', 'ap': 'eight', 'kt': '17709', 'mu': '6521', 'amz': 'https://www.amazon.co.jp/dp/B07WS2K894', 'mal': '8734', 'raw': 'https://csbs.shogakukan.co.jp/book?book_group_id=14478'}, originalLanguage = ja
lastVolume = 4, lastChapter = 37.6, publicationDemographic = seinen, status = completed, year = 2000, contentRating = safe
createdAt = 2018-02-04 21:32:02+00:00, uploadedAt = 2022-01-12 21:42:40+00:00), author_id = ['905aaced-1556-4925-bff0-14ea277fb0b1', '905aaced-1556-4925-bff0-14ea277fb0b1'], artist_id = [], cover_id = 51bf2e88-98ac-4fd7-afb5-80edff694d53
>>> manga_list = manga.get_manga_list(title = "You manga title here")
>>> manga = manga.view_manga_by_id(manga_id = "0001183c-2089-48e9-96b7-d48db5f1a611")
>>> random_manga = Manga.random_manga()
Get the chapter, or chapters from MDList.
>>> manga_feed = Manga.manga_feed(manga_id = "0001183c-2089-48e9-96b7-d48db5f1a611", limit = 1)
[Chapter(chapter_id = 015979c8-ffa4-4afa-b48e-3da6d10279b0, title = Navel-Gazing, volume = 3, chapter = 23.0, translatedLanguage = en, hash =
data = List[filenames], publishAt = 2018-03-19 01:32:00+00:00, createdAt = 2018-03-19 01:32:00+00:00, uploadedAt = 2018-03-19 01:32:00+00:00, group_id = 59957a04-fa91-4099-921d-7e7988a19acb, manga_id = 0001183c-2089-48e9-96b7-d48db5f1a611, uploader = e19519ce-8c5f-4d7c-8280-704a87d34429)]
>>> chapter.get_manga_volumes_and_chapters(manga_id = "the manga id")
>>> chp = chapter.get_chapter(chapter_id = "015979c8-ffa4-4afa-b48e-3da6d10279b0")
>> chp
Chapter(chapter_id = 015979c8-ffa4-4afa-b48e-3da6d10279b0, title = Navel-Gazing, volume = 3, chapter = 23.0, translatedLanguage = en, hash =
data = List[filenames], publishAt = 2018-03-19 01:32:00+00:00, createdAt = 2018-03-19 01:32:00+00:00, uploadedAt = 2018-03-19 01:32:00+00:00, group_id = 59957a04-fa91-4099-921d-7e7988a19acb, manga_id = 0001183c-2089-48e9-96b7-d48db5f1a611, uploader = e19519ce-8c5f-4d7c-8280-704a87d34429)
Returns a list of latest chapters
>>> chapter_list = chapter.chapter_list()
Return the links for the chapter images.
>>> chapter.fetch_chapter_images()
>>> tag_list = tag.tag_list()
>>> scangroup.scanlation_group_list()
>>> cover.get_coverart_list()
>>> cover.get_cover(cover_id = "the cover id")
>>> cover.edit_cover(cover_id = "the cover id", description = "the cover description, can be null", volume = "the volume number", version = "int, the cover version")
>>> cover.fetch_cover_image()
This is a CoverArt method that returns the cover image url of that object
Username and password combo-only logins are deprecated as MangaDex shift to OAuth. Personal clients are needed alongside it. #26
Method to login to the website
>>> auth.login(username = USERNAME, password = PASSWORD, client_id = clientId, client_secret = clientSecret)
It is recomended that you add this values to your environment variables and use text input for client-facing solutions for security reasons.
>>> auth.login(os.environ['md_username'], os.environ['md_password'],os.environ['client_id'], os.environ['client_secret'])
Get your user info
>>> my_user = user.me()
>>> user = user.get_user(user_id = "id of user")
Get your manga follow list!
>>> follow_list = follows.get_my_mangalist()
Get the list of the Scanlation group you follow!
>>> scangroups_followlist = follows.get_my_followed_groups()
Get the list of the users you follow!
>>> followed_users = follows.get_my_followed_users()
Get a list of the chapters marked as read for a given manga
>>> read_chapters = manga.get_manga_read_markes(id = "the manga id")
Get a list of the all the manga reading stauts
>>> my_manga_reading_stauts = manga.get_all_manga_reading_status()
Get the reading status of a specific manga
>>> manga_reading_status = manga.get_manga_reading_status(manga_id = "the manga id")
>>> manga.update_manga_reading_status(manga_id = "the manga id", status = "the new reading status")
The status
parameter can take the following values:
"reading"
"on_hold"
"plan_to_read"
"dropped"
"re_reading"
"completed"
Follow a manga
>>> follows.follow_manga(manga_id = "the manga id")
Unfollows a manga
>>> manga.unfollow_manga(manga_id = "the manga id")
Creates a manga
>>> manga.create_manga(title = "manga title", )
Update manga information
>>> manga.update_manga(manga_id = "the manga id")
Deletes manga
>>> manga.delete_manga(manga_id = "the manga id")
Add a manga to a custom list
>>> customlist.add_manga_to_customlist(manga_id = "the manga id", list_id = "the list id")
Removes a manga from a custom list
>>> customlist.remove_manga_from_customlist(id = "the manga id", listId = "the list id")
>>> customlist.create_customlist() #this will create a custom list with no special parameters
>>> customlist.get_customlist(id = "custom list id")
>>> customlist.update_customlist(id = "custom list id")
>>> customlist.delete_customlist(id = "the custom list id")
>>> customlist.get_user_customlists(id = "the user id")
>>> author.create_author(name = "author name", version = 1, ObjReturn = False)
>>> author.update_author(id = "the author id", version = "int with the version", name = "author's name", ObjReturn = False)
>>> author.delete_author(id = "the author id")
All the credit for the API goes to the MangaDex Team.