animedex season and animedex schedule

The calendar aggregate commands fan out to AniList and Jikan, keep successful rows even when one source fails, and preserve source attribution in both JSON and TTY output.

animedex aggregate demo - season and schedule with fallback

Examples

Seasonal listings

animedex season 2024 spring --json --jq '.items[0] | {title: .title.romaji, sources: (.sources | map(.backend)), jikan_score: .source_details.jikan.score.score}'
# => {"title":"Kaijuu 8-gou","sources":["anilist","jikan"],"jikan_score":8.21}

animedex season 2024 spring --source jikan --limit 3 --json --jq '[.items[].title.romaji]'
# => ["Kimetsu no Yaiba: Hashira Geiko-hen", "Kaijuu 8-gou", "Mushoku Tensei II: Isekai Ittara Honki Dasu Part 2"]

Weekly schedule

animedex schedule --day monday --source jikan --timezone Asia/Tokyo --json --jq '.items[0] | {title, weekday, time: .local_time, source: .details.source_material}'
# => {"title":"Shin Nippon History","weekday":"monday","time":"01:00","source":"Original"}

animedex schedule --day monday --source jikan --timezone +08:00 --limit 3
# Schedule (+08:00)
# Window: 2026-05-11 to 2026-05-12 (exclusive)
#
# Monday, 2026-05-11
#   00:00  Shin Nippon History  [src: jikan]
#     Names:
#       Japanese: 新ニッポンヒストリー
#     Info:
#       Status: Currently Airing
#       Source material: Original
#       Rating: G - All Ages
#     Tags:
#       - TV
#   17:25  Puzzle & Dragon  [src: jikan]

Partial failure

animedex season 2024 spring --limit 3 --json
# source 'anilist' failed: rate-limited (HTTP 429); continuing with other sources
# {"items":[...],"sources":{"anilist":{"backend":"anilist","status":"failed"},"jikan":{"backend":"jikan","status":"ok"}},"_meta":{"sources_consulted":["jikan"]}}

The failure line appears on stderr, while stdout stays a valid aggregate envelope. That is intentional: the command degrades visibly instead of refusing to return the healthy source’s rows.

Notes

  • season defaults to the AniList/MAL quarterly convention: winter = January-March, spring = April-June, summer = July-September, fall = October-December, and the merge path now combines likely identical AniList/Jikan rows into one item with per-backend records.

  • schedule uses --day all as the seven-day window starting today in the selected timezone, defaulting to local. --timezone accepts local, UTC/Z, IANA names, fixed offsets such as +08:00 or UTC+8, and dateutil timezone strings such as CST-8.

  • The JSON envelope keeps both successful rows and per-source status entries.