manga-dlp/contrib/api_template.py

123 lines
3.5 KiB
Python
Raw Normal View History

2022-05-17 13:32:50 +02:00
# api template for manga-dlp
class YourAPI:
2022-08-14 16:34:15 +02:00
"""Your API Class.
Get infos for a manga from example.org
Args:
url_uuid (str): URL or UUID of the manga
language (str): Manga language with country codes. "en" --> english
forcevol (bool): Force naming of volumes. Useful for mangas where chapters reset each volume
Attributes:
api_name (str): Name of the API
manga_uuid (str): UUID of the manga, without the url part
manga_title (str): The title of the manga, sanitized for all filesystems
chapter_list (list): A list of all available chapters for the language
"""
2022-05-17 13:32:50 +02:00
# api information - example
api_base_url = "https://api.mangadex.org"
img_base_url = "https://uploads.mangadex.org"
2022-07-06 22:19:40 +02:00
def __init__(self, url_uuid, language, forcevol):
2023-02-13 23:17:52 +01:00
"""
get infos to initiate class
"""
2022-08-13 18:52:32 +02:00
self.api_name = "Your API Name"
2022-05-17 13:32:50 +02:00
self.url_uuid = url_uuid
self.language = language
self.forcevol = forcevol
# attributes needed by app.py
self.manga_uuid = "abc"
self.manga_title = "abc"
2023-02-13 23:17:52 +01:00
self.chapter_list = ["1", "2", "2.1", "5", "10"]
self.manga_chapter_data = { # example data
"1": {
"uuid": "abc",
"volume": "1",
"chapter": "1",
"name": "test",
},
"2": {
"uuid": "abc",
"volume": "1",
"chapter": "2",
"name": "test",
},
}
# or with --forcevol
self.manga_chapter_data = {
"1:1": {
"uuid": "abc",
"volume": "1",
"chapter": "1",
"name": "test",
},
"1:2": {
"uuid": "abc",
"volume": "1",
"chapter": "2",
"name": "test",
},
}
2022-05-17 13:32:50 +02:00
def get_chapter_images(chapter: str, download_wait: float) -> list:
2023-02-13 23:17:52 +01:00
"""
Get chapter images as a list (full links)
Args:
chapter: The chapter number (chapter data index)
download_wait: Wait time between image downloads
Returns:
The list of urls of the page images
"""
2022-05-17 13:32:50 +02:00
# example
return [
"https://abc.def/image/123.png",
"https://abc.def/image/1234.png",
"https://abc.def/image/12345.png",
]
2023-02-13 19:15:27 +01:00
def create_metadata(self, chapter: str) -> dict:
2023-02-13 23:17:52 +01:00
"""
Get metadata with correct keys for ComicInfo.xml
Provide as much metadata as possible. empty/false values will be ignored
Args:
chapter: The chapter number (chapter data index)
Returns:
The metadata as a dict
"""
2023-02-14 13:31:55 +01:00
# metadata types. have to be correct to be valid
{
"Title": str,
"Series": str,
"Number": str,
"Count": int,
"Volume": int,
"Summary": str,
"Genre": str,
"Web": str,
"PageCount": int,
"LanguageISO": str,
"Format": str,
"ScanInformation": str,
"SeriesGroup": str,
}
2023-02-13 19:15:27 +01:00
# example
return {
"Volume": "abc",
"LanguageISO": "en",
"Title": "test",
}