Skip to content

Instantly share code, notes, and snippets.

@neckothy
Created January 4, 2024 10:45
Show Gist options
  • Save neckothy/72d4defea348356feeb570cb6d4e278c to your computer and use it in GitHub Desktop.
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.
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