Created
January 4, 2024 10:45
-
-
Save neckothy/72d4defea348356feeb570cb6d4e278c to your computer and use it in GitHub Desktop.
Bad script to print a simplified version of the Kodansha Comics release calendar.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import requests | |
import sys | |
API_URL = "https://api.kodansha.us/product/ReleaseCalendar" | |
def filter_format(filt): | |
if filt.lower() in ("manga", "man", "m"): | |
return "?filterBy=manga" | |
elif filt.lower() in ("books", "book", "boo", "b"): | |
return "?filterBy=book" | |
else: | |
return "" | |
def get_calendar(url, params): | |
with requests.get(url + params) as response: | |
response.raise_for_status() | |
return response.json() | |
def filter_edition(data, filt): | |
if filt.lower() in ("digital", "dig", "d"): | |
return {k: v for k, v in data.items() if k == "digital"} | |
elif filt.lower() in ("print", "pri", "p"): | |
return {k: v for k, v in data.items() if k == "print"} | |
else: | |
return data | |
def group_by_date(data): | |
dates = {} | |
for edition in data: | |
for book in data[edition]: | |
if book["releaseDate"] not in dates.keys(): | |
dates[book["releaseDate"]] = [book["name"]] | |
elif book["name"] not in dates[book["releaseDate"]]: | |
dates[book["releaseDate"]].append(book["name"]) | |
return dates | |
def format_data(data): | |
text = "" | |
for date in data: | |
text += f"\n######## {date}\n" | |
for book in sorted(data[date], key=str.casefold): | |
text += f"{book}\n" | |
return text | |
if __name__ == "__main__": | |
# default to digital manga, edition and format should be controllable through args | |
# kccalendar.py [manga|book] [digital|print] | |
format_filter = sys.argv[1] if len(sys.argv) > 1 else "manga" | |
edition_filter = sys.argv[2] if len(sys.argv) > 2 else "digital" | |
params = filter_format(format_filter) | |
books = get_calendar(API_URL, params) | |
filtered_books = filter_edition(books, edition_filter) | |
books_by_date = group_by_date(filtered_books) | |
output = format_data(books_by_date) | |
print(output) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment