Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
7bb44c0
KSN: add `violet-evergarden.json` arc mapping
codebend3r Jun 30, 2026
2a59b1e
KSN: add `devilman-crybaby.json` arc mapping
codebend3r Jun 30, 2026
a2bde3a
KSN: add `k-on.json` arc mapping
codebend3r Jun 30, 2026
0d68cc6
KSN: add `domestic-girlfriend.json` arc mapping
codebend3r Jun 30, 2026
e783853
KSN: add `shikimoris-not-just-a-cutie.json` arc mapping
codebend3r Jun 30, 2026
2707fa3
KSN: add `heavenly-delusion.json` arc mapping
codebend3r Jun 30, 2026
b39a69d
KSN: add `case-study-of-vanitas.json` arc mapping
codebend3r Jun 30, 2026
73d35dd
KSN: add `shimoneta.json` arc mapping
codebend3r Jun 30, 2026
351a6da
KSN: add `how-not-to-summon-a-demon-lord.json` arc mapping
codebend3r Jun 30, 2026
fff1914
KSN: add `haruhi-suzumiya.json` arc mapping
codebend3r Jun 30, 2026
45247d6
KSN: add `welcome-to-the-nhk.json` arc mapping
codebend3r Jun 30, 2026
9540f91
KSN: add `worlds-finest-assassin.json` arc mapping
codebend3r Jun 30, 2026
f498a93
KSN: add `my-love-story-with-yamada-kun.json` arc mapping
codebend3r Jun 30, 2026
cc47c32
KSN: add `akashic-records.json` arc mapping
codebend3r Jun 30, 2026
5946040
KSN: add `cautious-hero.json` arc mapping
codebend3r Jun 30, 2026
408203b
KSN: add `trinity-seven.json` arc mapping
codebend3r Jun 30, 2026
9459d0c
KSN: add `black-bullet.json` arc mapping
codebend3r Jun 30, 2026
b3b3917
KSN: add `tsuredure-children.json` arc mapping
codebend3r Jun 30, 2026
ae0cc9b
KSN: add `gate.json` arc mapping
codebend3r Jun 30, 2026
cd7e852
KSN: add `fragrant-flower.json` arc mapping
codebend3r Jun 30, 2026
b3a63e1
KSN: add `alya-sometimes-hides.json` arc mapping
codebend3r Jun 30, 2026
52391b2
KSN: add `daily-lives-of-high-school-boys.json` arc mapping
codebend3r Jun 30, 2026
acdf06e
KSN: add `kokoro-connect.json` arc mapping
codebend3r Jun 30, 2026
5f6f40f
KSN: add `im-sakamoto.json` arc mapping
codebend3r Jun 30, 2026
900fcc4
KSN: add `baccano.json` arc mapping
codebend3r Jun 30, 2026
02af40a
KSN: add `yamada-and-the-seven-witches.json` arc mapping
codebend3r Jun 30, 2026
0e05c72
KSN: add `higehiro.json` arc mapping
codebend3r Jun 30, 2026
51249f5
KSN: add `eromanga-sensei.json` arc mapping
codebend3r Jun 30, 2026
83e0ff8
KSN: add `wind-breaker.json` arc mapping
codebend3r Jun 30, 2026
683fcfd
KSN: add `blend-s.json` arc mapping
codebend3r Jun 30, 2026
3aacd72
KSN: add `scums-wish.json` arc mapping
codebend3r Jun 30, 2026
8fa682e
KSN: add `wise-mans-grandchild.json` arc mapping
codebend3r Jun 30, 2026
60d22de
KSN: add `grimgar.json` arc mapping
codebend3r Jun 30, 2026
44fa188
KSN: add `snow-white-with-the-red-hair.json` arc mapping
codebend3r Jun 30, 2026
0db25b6
KSN: add `bofuri.json` arc mapping
codebend3r Jun 30, 2026
71993ba
KSN: add `shangri-la-frontier.json` arc mapping
codebend3r Jun 30, 2026
782501c
KSN: add `saekano.json` arc mapping
codebend3r Jun 30, 2026
6061358
KSN: add `great-teacher-onizuka.json` arc mapping
codebend3r Jun 30, 2026
13078c6
KSN: add `gamers.json` arc mapping
codebend3r Jun 30, 2026
3acd7ef
KSN: add `darwins-game.json` arc mapping
codebend3r Jun 30, 2026
eb1aea9
KSN: add `umaru-chan.json` arc mapping
codebend3r Jun 30, 2026
48450dc
KSN: add `tomo-chan-is-a-girl.json` arc mapping
codebend3r Jun 30, 2026
1b438df
KSN: add `monster-musume.json` arc mapping
codebend3r Jun 30, 2026
a14e9de
KSN: add `teasing-master-takagi-san.json` arc mapping
codebend3r Jun 30, 2026
013b798
KSN: add `tsukimichi.json` arc mapping
codebend3r Jun 30, 2026
554b8d9
KSN: add `kamisama-kiss.json` arc mapping
codebend3r Jun 30, 2026
63e2fe6
KSN: add `laid-back-camp.json` arc mapping
codebend3r Jun 30, 2026
ccbd40f
KSN: add `haganai.json` arc mapping
codebend3r Jun 30, 2026
f414b24
KSN: add `iruma-kun.json` arc mapping
codebend3r Jun 30, 2026
f58b18c
KSN: add `amagi-brilliant-park.json` arc mapping
codebend3r Jun 30, 2026
b8dd913
KSN: add `angel-next-door.json` arc mapping
codebend3r Jun 30, 2026
d7548bd
KSN: add `tomodachi-game.json` arc mapping
codebend3r Jun 30, 2026
36b489d
KSN: add `mieruko-chan.json` arc mapping
codebend3r Jun 30, 2026
93ec696
KSN: add `testament-of-sister-new-devil.json` arc mapping
codebend3r Jun 30, 2026
1ecef58
KSN: add `way-of-the-househusband.json` arc mapping
codebend3r Jun 30, 2026
8228804
KSN: add `more-than-a-married-couple.json` arc mapping
codebend3r Jun 30, 2026
16c5293
KSN: add `my-love-story.json` arc mapping
codebend3r Jun 30, 2026
961c597
KSN: add `asterisk-war.json` arc mapping
codebend3r Jun 30, 2026
5d05078
KSN: add `moriarty-the-patriot.json` arc mapping
codebend3r Jun 30, 2026
5d5b6ef
KSN: add `familiar-of-zero.json` arc mapping
codebend3r Jun 30, 2026
6d8ef0f
KSN: add `dangers-in-my-heart.json` arc mapping
codebend3r Jun 30, 2026
fd692d2
KSN: add `say-i-love-you.json` arc mapping
codebend3r Jun 30, 2026
6ed75fc
KSN: add `smartphone.json` arc mapping
codebend3r Jun 30, 2026
1c921f3
KSN: add `barakamon.json` arc mapping
codebend3r Jun 30, 2026
f9ae8a2
KSN: add `watamote.json` arc mapping
codebend3r Jun 30, 2026
34e162d
KSN: add `so-im-a-spider.json` arc mapping
codebend3r Jun 30, 2026
e1e7cb9
KSN: add `gleipnir.json` arc mapping
codebend3r Jun 30, 2026
fc17ef7
KSN: add `wandering-witch.json` arc mapping
codebend3r Jun 30, 2026
51c8a1f
KSN: add `hinamatsuri.json` arc mapping
codebend3r Jun 30, 2026
195d06f
KSN: add `uzaki-chan.json` arc mapping
codebend3r Jun 30, 2026
051429c
KSN: add `asobi-asobase.json` arc mapping
codebend3r Jun 30, 2026
01f0e40
KSN: add `redo-of-healer.json` arc mapping
codebend3r Jun 30, 2026
3d818a4
KSN: add `oreimo.json` arc mapping
codebend3r Jun 30, 2026
cab8d5d
KSN: add `villainess.json` arc mapping
codebend3r Jun 30, 2026
3e1ef3d
KSN: add `my-first-girlfriend-is-a-gal.json` arc mapping
codebend3r Jun 30, 2026
d68ee1b
KSN: add `cheat-skill.json` arc mapping
codebend3r Jun 30, 2026
e0891ce
KSN: add `lucky-star.json` arc mapping
codebend3r Jun 30, 2026
44a0c1c
KSN: add `citrus.json` arc mapping
codebend3r Jun 30, 2026
f566f79
KSN: add `netoge.json` arc mapping
codebend3r Jun 30, 2026
c28123f
KSN: add `tomozaki.json` arc mapping
codebend3r Jun 30, 2026
288b8dc
KSN: add `blue-box.json` arc mapping
codebend3r Jun 30, 2026
5ab7e67
KSN: add `to-love-ru.json` arc mapping
codebend3r Jun 30, 2026
655889f
KSN: add `blood-lad.json` arc mapping
codebend3r Jun 30, 2026
24460df
KSN: add `my-happy-marriage.json` arc mapping
codebend3r Jun 30, 2026
d076571
KSN: add `plunderer.json` arc mapping
codebend3r Jun 30, 2026
bbdadcd
KSN: add `oresuki.json` arc mapping
codebend3r Jun 30, 2026
419ba7d
KSN: add `phantom-world.json` arc mapping
codebend3r Jun 30, 2026
74eae97
KSN: add `killing-slimes-300-years.json` arc mapping
codebend3r Jun 30, 2026
4c5f67d
KSN: add `bloom-into-you.json` arc mapping
codebend3r Jun 30, 2026
13ea348
KSN: add `realist-hero.json` arc mapping
codebend3r Jun 30, 2026
9969531
KSN: add `gangsta.json` arc mapping
codebend3r Jun 30, 2026
fdbdf55
KSN: add `seirei-gensouki.json` arc mapping
codebend3r Jun 30, 2026
d745d98
KSN: add `girls-last-tour.json` arc mapping
codebend3r Jun 30, 2026
60cba2d
KSN: add `mmo-junkie.json` arc mapping
codebend3r Jun 30, 2026
51b0cc0
KSN: add `sign-of-affection.json` arc mapping
codebend3r Jun 30, 2026
a8bf66b
KSN: add `death-march.json` arc mapping
codebend3r Jun 30, 2026
1e8784f
KSN: add `high-rise-invasion.json` arc mapping
codebend3r Jun 30, 2026
e9377cf
KSN: add `katanagatari.json` arc mapping
codebend3r Jun 30, 2026
99f3d97
KSN: add `world-god-only-knows.json` arc mapping
codebend3r Jun 30, 2026
4f4d5a8
KSN: add `record-of-ragnarok.json` arc mapping
codebend3r Jun 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
200 changes: 200 additions & 0 deletions src/data/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,106 @@ import prisonSchool from "@/data/mappings/prison-school.json";
import dateALive from "@/data/mappings/date-a-live.json";
import aoHaruRide from "@/data/mappings/ao-haru-ride.json";
import tonikawa from "@/data/mappings/tonikawa.json";
import violetEvergarden from "@/data/mappings/violet-evergarden.json";
import devilmanCrybaby from "@/data/mappings/devilman-crybaby.json";
import kOn from "@/data/mappings/k-on.json";
import domesticGirlfriend from "@/data/mappings/domestic-girlfriend.json";
import shikimorisNotJustACutie from "@/data/mappings/shikimoris-not-just-a-cutie.json";
import heavenlyDelusion from "@/data/mappings/heavenly-delusion.json";
import caseStudyOfVanitas from "@/data/mappings/case-study-of-vanitas.json";
import shimoneta from "@/data/mappings/shimoneta.json";
import howNotToSummonADemonLord from "@/data/mappings/how-not-to-summon-a-demon-lord.json";
import haruhiSuzumiya from "@/data/mappings/haruhi-suzumiya.json";
import welcomeToTheNhk from "@/data/mappings/welcome-to-the-nhk.json";
import worldsFinestAssassin from "@/data/mappings/worlds-finest-assassin.json";
import myLoveStoryWithYamadaKun from "@/data/mappings/my-love-story-with-yamada-kun.json";
import akashicRecords from "@/data/mappings/akashic-records.json";
import cautiousHero from "@/data/mappings/cautious-hero.json";
import trinitySeven from "@/data/mappings/trinity-seven.json";
import blackBullet from "@/data/mappings/black-bullet.json";
import tsuredureChildren from "@/data/mappings/tsuredure-children.json";
import gate from "@/data/mappings/gate.json";
import fragrantFlower from "@/data/mappings/fragrant-flower.json";
import alyaSometimesHides from "@/data/mappings/alya-sometimes-hides.json";
import dailyLivesOfHighSchoolBoys from "@/data/mappings/daily-lives-of-high-school-boys.json";
import kokoroConnect from "@/data/mappings/kokoro-connect.json";
import imSakamoto from "@/data/mappings/im-sakamoto.json";
import baccano from "@/data/mappings/baccano.json";
import yamadaAndTheSevenWitches from "@/data/mappings/yamada-and-the-seven-witches.json";
import higehiro from "@/data/mappings/higehiro.json";
import eromangaSensei from "@/data/mappings/eromanga-sensei.json";
import windBreaker from "@/data/mappings/wind-breaker.json";
import blendS from "@/data/mappings/blend-s.json";
import scumsWish from "@/data/mappings/scums-wish.json";
import wiseMansGrandchild from "@/data/mappings/wise-mans-grandchild.json";
import grimgar from "@/data/mappings/grimgar.json";
import snowWhiteWithTheRedHair from "@/data/mappings/snow-white-with-the-red-hair.json";
import bofuri from "@/data/mappings/bofuri.json";
import shangriLaFrontier from "@/data/mappings/shangri-la-frontier.json";
import saekano from "@/data/mappings/saekano.json";
import greatTeacherOnizuka from "@/data/mappings/great-teacher-onizuka.json";
import gamers from "@/data/mappings/gamers.json";
import darwinsGame from "@/data/mappings/darwins-game.json";
import umaruChan from "@/data/mappings/umaru-chan.json";
import tomoChanIsAGirl from "@/data/mappings/tomo-chan-is-a-girl.json";
import monsterMusume from "@/data/mappings/monster-musume.json";
import teasingMasterTakagiSan from "@/data/mappings/teasing-master-takagi-san.json";
import tsukimichi from "@/data/mappings/tsukimichi.json";
import kamisamaKiss from "@/data/mappings/kamisama-kiss.json";
import laidBackCamp from "@/data/mappings/laid-back-camp.json";
import haganai from "@/data/mappings/haganai.json";
import irumaKun from "@/data/mappings/iruma-kun.json";
import amagiBrilliantPark from "@/data/mappings/amagi-brilliant-park.json";
import angelNextDoor from "@/data/mappings/angel-next-door.json";
import tomodachiGame from "@/data/mappings/tomodachi-game.json";
import mierukoChan from "@/data/mappings/mieruko-chan.json";
import testamentOfSisterNewDevil from "@/data/mappings/testament-of-sister-new-devil.json";
import wayOfTheHousehusband from "@/data/mappings/way-of-the-househusband.json";
import moreThanAMarriedCouple from "@/data/mappings/more-than-a-married-couple.json";
import myLoveStory from "@/data/mappings/my-love-story.json";
import asteriskWar from "@/data/mappings/asterisk-war.json";
import moriartyThePatriot from "@/data/mappings/moriarty-the-patriot.json";
import familiarOfZero from "@/data/mappings/familiar-of-zero.json";
import dangersInMyHeart from "@/data/mappings/dangers-in-my-heart.json";
import sayILoveYou from "@/data/mappings/say-i-love-you.json";
import smartphone from "@/data/mappings/smartphone.json";
import barakamon from "@/data/mappings/barakamon.json";
import watamote from "@/data/mappings/watamote.json";
import soImASpider from "@/data/mappings/so-im-a-spider.json";
import gleipnir from "@/data/mappings/gleipnir.json";
import wanderingWitch from "@/data/mappings/wandering-witch.json";
import hinamatsuri from "@/data/mappings/hinamatsuri.json";
import uzakiChan from "@/data/mappings/uzaki-chan.json";
import asobiAsobase from "@/data/mappings/asobi-asobase.json";
import redoOfHealer from "@/data/mappings/redo-of-healer.json";
import oreimo from "@/data/mappings/oreimo.json";
import villainess from "@/data/mappings/villainess.json";
import myFirstGirlfriendIsAGal from "@/data/mappings/my-first-girlfriend-is-a-gal.json";
import cheatSkill from "@/data/mappings/cheat-skill.json";
import luckyStar from "@/data/mappings/lucky-star.json";
import citrus from "@/data/mappings/citrus.json";
import netoge from "@/data/mappings/netoge.json";
import tomozaki from "@/data/mappings/tomozaki.json";
import blueBox from "@/data/mappings/blue-box.json";
import toLoveRu from "@/data/mappings/to-love-ru.json";
import bloodLad from "@/data/mappings/blood-lad.json";
import myHappyMarriage from "@/data/mappings/my-happy-marriage.json";
import plunderer from "@/data/mappings/plunderer.json";
import oresuki from "@/data/mappings/oresuki.json";
import phantomWorld from "@/data/mappings/phantom-world.json";
import killingSlimes300Years from "@/data/mappings/killing-slimes-300-years.json";
import bloomIntoYou from "@/data/mappings/bloom-into-you.json";
import realistHero from "@/data/mappings/realist-hero.json";
import gangsta from "@/data/mappings/gangsta.json";
import seireiGensouki from "@/data/mappings/seirei-gensouki.json";
import girlsLastTour from "@/data/mappings/girls-last-tour.json";
import mmoJunkie from "@/data/mappings/mmo-junkie.json";
import signOfAffection from "@/data/mappings/sign-of-affection.json";
import deathMarch from "@/data/mappings/death-march.json";
import highRiseInvasion from "@/data/mappings/high-rise-invasion.json";
import katanagatari from "@/data/mappings/katanagatari.json";
import worldGodOnlyKnows from "@/data/mappings/world-god-only-knows.json";
import recordOfRagnarok from "@/data/mappings/record-of-ragnarok.json";

// JSON imports lose tuple types — `[1, 100]` becomes `number[]` instead of
// `[number, number]`. `normalizeMapping` rebuilds tuples literally.
Expand Down Expand Up @@ -481,6 +581,106 @@ const ALL_MAPPINGS: SeriesMapping[] = [
dateALive,
aoHaruRide,
tonikawa,
violetEvergarden,
devilmanCrybaby,
kOn,
domesticGirlfriend,
shikimorisNotJustACutie,
heavenlyDelusion,
caseStudyOfVanitas,
shimoneta,
howNotToSummonADemonLord,
haruhiSuzumiya,
welcomeToTheNhk,
worldsFinestAssassin,
myLoveStoryWithYamadaKun,
akashicRecords,
cautiousHero,
trinitySeven,
blackBullet,
tsuredureChildren,
gate,
fragrantFlower,
alyaSometimesHides,
dailyLivesOfHighSchoolBoys,
kokoroConnect,
imSakamoto,
baccano,
yamadaAndTheSevenWitches,
higehiro,
eromangaSensei,
windBreaker,
blendS,
scumsWish,
wiseMansGrandchild,
grimgar,
snowWhiteWithTheRedHair,
bofuri,
shangriLaFrontier,
saekano,
greatTeacherOnizuka,
gamers,
darwinsGame,
umaruChan,
tomoChanIsAGirl,
monsterMusume,
teasingMasterTakagiSan,
tsukimichi,
kamisamaKiss,
laidBackCamp,
haganai,
irumaKun,
amagiBrilliantPark,
angelNextDoor,
tomodachiGame,
mierukoChan,
testamentOfSisterNewDevil,
wayOfTheHousehusband,
moreThanAMarriedCouple,
myLoveStory,
asteriskWar,
moriartyThePatriot,
familiarOfZero,
dangersInMyHeart,
sayILoveYou,
smartphone,
barakamon,
watamote,
soImASpider,
gleipnir,
wanderingWitch,
hinamatsuri,
uzakiChan,
asobiAsobase,
redoOfHealer,
oreimo,
villainess,
myFirstGirlfriendIsAGal,
cheatSkill,
luckyStar,
citrus,
netoge,
tomozaki,
blueBox,
toLoveRu,
bloodLad,
myHappyMarriage,
plunderer,
oresuki,
phantomWorld,
killingSlimes300Years,
bloomIntoYou,
realistHero,
gangsta,
seireiGensouki,
girlsLastTour,
mmoJunkie,
signOfAffection,
deathMarch,
highRiseInvasion,
katanagatari,
worldGodOnlyKnows,
recordOfRagnarok,
].map(normalizeMapping);

export function findMappingByMediaId(mediaId: number): SeriesMapping | null {
Expand Down
32 changes: 32 additions & 0 deletions src/data/mappings/akashic-records.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"anilistAnimeId": 21700,
"anilistMangaId": 86432,
"title": "Akashic Records of Bastard Magic Instructor",
"sourceNotes": "Source is Taro Hitsuji's light novel (24 vols, ended 2023). Mapped against Aosa Tsunemi's MANGA adaptation (AniList 86432), which finished in June 2021 at 16 volumes / 78 chapters and covers roughly LN vols 1-10. The 2017 TV anime (12 eps, single cour) is a heavily abridged take on LN vols 1-5; the manga adapts that same span across vols 1-10 (ch 1-44), so a viewer resumes reading at ch 45. Episode-to-volume groupings: eps 1-3 = LN1, eps 4-6 = LN2, eps 7-9 = LN3, eps 10-12 = LN4-5. Manga chapter boundaries from MangaDex volume aggregate; LN-to-arc alignment approximate. No theatrical films.",
"mappings": [
{
"episodes": [1, 3],
"chapters": [1, 9],
"arc": "The Foolish Magic Instructor (Academy Debut & Terrorist Incident)"
},
{
"episodes": [4, 6],
"chapters": [10, 18],
"arc": "The Magic Competition"
},
{
"episodes": [7, 9],
"chapters": [19, 28],
"arc": "Re=L and the Sea of Falling Stars"
},
{
"episodes": [10, 12],
"chapters": [29, 44],
"arc": "The Imperial Court Mage Corps Battle"
},
{
"chapters": [45, 78],
"arc": "Beyond the Anime (Unadapted)"
}
]
}
27 changes: 27 additions & 0 deletions src/data/mappings/alya-sometimes-hides.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"anilistAnimeId": 162804,
"anilistMangaId": 152404,
"title": "Alya Sometimes Hides Her Feelings in Russian",
"sourceNotes": "Source is Sunsunsun's light novel (Roshidere); paired here with the ongoing manga adaptation (AniList 152404, ~9 volumes / ch 83 as of mid-2026). The 2024 TV anime (AniList 162804) is a single cour of 12 episodes adapting light-novel volumes 1-3 (vol 1 prologue through vol 3 epilogue, the student-council election speeches). This is a slow-burn romcom with loose, episodic arcs, so arcs are grouped by light-novel volume and the manga-chapter boundaries are approximate. Manga pacing anchors: the manga had reached ~ch 45 (end of LN vol 2) around the time the anime aired, and manga vol 9 (ch ~67+) covers the student-council election *competition* (LN vol 4+, beyond the anime), which places the anime's endpoint near manga ch 66. Chapters 67-83 are the unadapted tail (resume reading there after the anime). A second TV season (AniList 181641) was announced but had not aired. No theatrical films.",
"mappings": [
{
"episodes": [1, 4],
"chapters": [1, 23],
"arc": "The Aloof Princess and Her Neighbor (Daily School Life)"
},
{
"episodes": [5, 8],
"chapters": [24, 45],
"arc": "Student Council & Cultural Festival (Family Revelations)"
},
{
"episodes": [9, 12],
"chapters": [46, 66],
"arc": "Student Council President Election Campaign"
},
{
"chapters": [67, 83],
"arc": "Election Competition & Beyond (ongoing, unadapted)"
}
]
}
32 changes: 32 additions & 0 deletions src/data/mappings/amagi-brilliant-park.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"anilistAnimeId": 20602,
"anilistMangaId": 85217,
"title": "Amagi Brilliant Park",
"sourceNotes": "Source is Shoji Gatoh's LIGHT NOVEL (illustrated by Yuka Nakajima; AniList id 85200), of which Fujimi Shobo published 8 volumes before the series went on hiatus in 2016. The 2014 Kyoto Animation TV anime (13 eps; the OVA 'No Time to Take It Easy!' ep 14 is excluded) adapts roughly LN VOLUMES 1-2 (with a touch of vol 3) — the park-revival-by-deadline plot, racing to 250,000 guests by the July 31 deadline — and wraps up with an ANIME-ORIGINAL ending, so a viewer resumes reading at LN vol 3. The linked manga adaptation (AniList id 85217; 32 chapters / 6 volumes, FINISHED) is a separate parallel retelling whose chapters don't cleanly anchor the anime, so this mapping uses LIGHT-NOVEL VOLUME numbers as the 'chapters' unit, NOT manga chapters. With only ~2 volumes spanning 13 episodes the groupings are coarse and volume-to-episode boundaries are APPROXIMATE. Vols 3-8 are unadapted (LN on hiatus). No theatrical films.",
"mappings": [
{
"episodes": [1, 2],
"chapters": [1, 1],
"arc": "Seiya's Recruitment & the 250,000-Visitor Deadline (LN vol 1)"
},
{
"episodes": [3, 7],
"chapters": [1, 2],
"arc": "Rebuilding the Park — Marketing, Money, Staff & Pool (LN vols 1-2)"
},
{
"episodes": [8, 10],
"chapters": [2, 2],
"arc": "Side Stories & Mounting Crisis (Love Appeal / Teamwork) (LN vol 2)"
},
{
"episodes": [11, 13],
"chapters": [2, 2],
"arc": "The Final Deadline Push (anime-original ending) (LN vol 2)"
},
{
"chapters": [3, 8],
"arc": "Post-anime (LN vols 3-8, on hiatus & unadapted)"
}
]
}
32 changes: 32 additions & 0 deletions src/data/mappings/angel-next-door.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"anilistAnimeId": 143338,
"anilistMangaId": 113533,
"title": "The Angel Next Door Spoils Me Rotten",
"sourceNotes": "Source is Saekisan's light novel (AniList id 113533, type MANGA / format NOVEL), 12 main volumes as of mid-2026 (Japanese vol 12 released March 2026; Yen Press English at vol 10). The official manga adaptation (id 122337) is paced far behind the anime — only ~ch 28-29 / 7 tankobon as of June 2026, not yet past the anime's content — so chapter mapping is unusable; this maps by LIGHT NOVEL VOLUME instead. IMPORTANT: the `chapters` tuples below hold LN VOLUME numbers, NOT chapter numbers (AniList lists no chapter/volume count for either entry). The 2023 TV anime (id 143338, 12 eps, single cour) adapts LN vols 1-4, ending right as Amane and Mahiru confess and start dating. Episode-to-volume groupings are even ~3-eps-per-volume estimates — this is a low-arc slice-of-life romcom, so boundaries are approximate. The unadapted tail (vols 5-12) was partly covered by the 2026 Season 2 (id 170019, vols ~5-8), which is a separate AniList entry not included here.",
"mappings": [
{
"episodes": [1, 3],
"chapters": [1, 1],
"arc": "Meeting the Angel Next Door (LN vol 1)"
},
{
"episodes": [4, 6],
"chapters": [2, 2],
"arc": "Growing Closer at Home & School (LN vol 2)"
},
{
"episodes": [7, 9],
"chapters": [3, 3],
"arc": "Amane's Family & Deepening Trust (LN vol 3)"
},
{
"episodes": [10, 12],
"chapters": [4, 4],
"arc": "Christmas & the Confession (LN vol 4)"
},
{
"chapters": [5, 12],
"arc": "After They Start Dating (LN vols 5-12, unadapted by this anime)"
}
]
}
22 changes: 22 additions & 0 deletions src/data/mappings/asobi-asobase.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"anilistAnimeId": 101001,
"anilistMangaId": 97418,
"title": "Asobi Asobase",
"sourceNotes": "Gag manga — chapter ranges are approximate. Rin Suzukawa's skit-based comedy is complete at 15 volumes (132 main chapters; AniList counts 134 including extras). The 2018 Lerche TV anime is a single 12-episode season directed by Seiji Kishi, and each episode wedges together three to four unrelated short chapters rather than following any continuous arc, ending around volume 5 / chapter 47 with only a handful of chapters skipped. Because the adaptation samples short gags rather than mapping cleanly, the per-episode chapter ranges below are coarse approximations, not exact matches. The canon OVA (a separate side entry) adapts a couple of stray chapters and there are no theatrical films. A reader continues past the anime from roughly chapter 48 to the finale at chapter 134.",
"mappings": [
{
"episodes": [1, 6],
"chapters": [1, 24],
"arc": "Episodes 1-6 (assorted sketches; gag manga, approximate)"
},
{
"episodes": [7, 12],
"chapters": [25, 47],
"arc": "Episodes 7-12 (assorted sketches through vol 5; gag manga, approximate)"
},
{
"chapters": [48, 134],
"arc": "Later Stories to the Finale (unadapted; gag manga, approximate)"
}
]
}
Loading
Loading