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
7e9aff1
KSN: add `gun-gale-online-alternative.json` arc mapping
codebend3r Jul 8, 2026
6a4474f
KSN: add `a-certain-scientific-railgun.json` arc mapping
codebend3r Jul 8, 2026
ddb6990
KSN: add `sentenced-to-be-a-hero.json` arc mapping
codebend3r Jul 8, 2026
96f60a4
KSN: add `the-fruit-of-grisaia.json` arc mapping
codebend3r Jul 8, 2026
2a41979
KSN: add `hellsing-2001.json` arc mapping
codebend3r Jul 8, 2026
14ffb67
KSN: add `the-summer-hikaru-died.json` arc mapping
codebend3r Jul 8, 2026
716f2d2
KSN: add `takopis-original-sin.json` arc mapping
codebend3r Jul 8, 2026
7b6c2ef
KSN: add `lovely-complex.json` arc mapping
codebend3r Jul 8, 2026
1297c9b
KSN: add `rokka-braves-of-the-six-flowers.json` arc mapping
codebend3r Jul 8, 2026
18e722f
KSN: add `sankarea.json` arc mapping
codebend3r Jul 8, 2026
9c5ba5d
KSN: add `accel-world.json` arc mapping
codebend3r Jul 8, 2026
1fc48a2
KSN: add `infinite-stratos.json` arc mapping
codebend3r Jul 8, 2026
fa7d4c5
KSN: add `fate-apocrypha.json` arc mapping
codebend3r Jul 8, 2026
82c50a8
KSN: add `oreshura.json` arc mapping
codebend3r Jul 8, 2026
38f625e
KSN: add `uncle-from-another-world.json` arc mapping
codebend3r Jul 8, 2026
078c9ec
KSN: add `girlfriend-girlfriend.json` arc mapping
codebend3r Jul 8, 2026
afed7e6
KSN: add `we-never-learn.json` arc mapping
codebend3r Jul 8, 2026
8fd0969
KSN: add `gabriel-dropout.json` arc mapping
codebend3r Jul 8, 2026
c9ba0b7
KSN: add `platinum-end.json` arc mapping
codebend3r Jul 8, 2026
ed2002d
KSN: add `strike-the-blood.json` arc mapping
codebend3r Jul 8, 2026
92a5080
KSN: add `natsume-yuujinchou.json` arc mapping
codebend3r Jul 8, 2026
5059def
KSN: add `makeine-too-many-losing-heroines.json` arc mapping
codebend3r Jul 8, 2026
7a30b79
KSN: add `the-detective-is-already-dead.json` arc mapping
codebend3r Jul 8, 2026
8d7e9b3
KSN: add `aho-girl.json` arc mapping
codebend3r Jul 8, 2026
9dc05ec
KSN: add `hidden-dungeon.json` arc mapping
codebend3r Jul 8, 2026
5154cf1
KSN: add `100-girlfriends.json` arc mapping
codebend3r Jul 8, 2026
566c692
KSN: add `kemono-jihen.json` arc mapping
codebend3r Jul 8, 2026
5782ac9
KSN: add `aharen-san-wa-hakarenai.json` arc mapping
codebend3r Jul 8, 2026
872686f
KSN: add `tanaka-kun-is-always-listless.json` arc mapping
codebend3r Jul 8, 2026
b9d25c4
KSN: add `how-heavy-dumbbells.json` arc mapping
codebend3r Jul 8, 2026
44a8848
KSN: add `rosario-vampire.json` arc mapping
codebend3r Jul 8, 2026
fe868c4
KSN: add `school-live.json` arc mapping
codebend3r Jul 8, 2026
ba2ac72
KSN: add `ping-pong-the-animation.json` arc mapping
codebend3r Jul 8, 2026
8324e53
KSN: add `gosick.json` arc mapping
codebend3r Jul 8, 2026
8c6e197
KSN: add `twin-star-exorcists.json` arc mapping
codebend3r Jul 8, 2026
80f5c58
KSN: add `banished-from-the-heros-party.json` arc mapping
codebend3r Jul 8, 2026
3e26aca
KSN: add `wrong-way-to-use-healing-magic.json` arc mapping
codebend3r Jul 8, 2026
beb7023
KSN: add `problem-children.json` arc mapping
codebend3r Jul 8, 2026
da4d40b
KSN: add `combatants-will-be-dispatched.json` arc mapping
codebend3r Jul 8, 2026
a958e5c
KSN: add `bakuman.json` arc mapping
codebend3r Jul 8, 2026
4bca3c7
KSN: add `konosuba-explosion.json` arc mapping
codebend3r Jul 8, 2026
ae59210
KSN: add `talentless-nana.json` arc mapping
codebend3r Jul 8, 2026
9da4729
KSN: add `new-game.json` arc mapping
codebend3r Jul 8, 2026
9a6cb6f
KSN: add `absolute-duo.json` arc mapping
codebend3r Jul 8, 2026
0da0b29
KSN: add `science-fell-in-love.json` arc mapping
codebend3r Jul 8, 2026
94414b1
KSN: add `trapped-in-a-dating-sim.json` arc mapping
codebend3r Jul 8, 2026
997acf3
KSN: add `non-non-biyori.json` arc mapping
codebend3r Jul 8, 2026
d40e6ec
KSN: add `magi-adventure-of-sinbad.json` arc mapping
codebend3r Jul 8, 2026
69c3974
KSN: add `baka-and-test.json` arc mapping
codebend3r Jul 8, 2026
956d35a
KSN: add `dagashi-kashi.json` arc mapping
codebend3r Jul 8, 2026
5e58411
KSN: add `worldend-sukasuka.json` arc mapping
codebend3r Jul 8, 2026
7570d4c
KSN: add `ascendance-of-a-bookworm.json` arc mapping
codebend3r Jul 8, 2026
f9e3716
KSN: add `keep-your-hands-off-eizouken.json` arc mapping
codebend3r Jul 8, 2026
4fafee5
KSN: add `campfire-cooking-in-another-world.json` arc mapping
codebend3r Jul 8, 2026
0d194b2
KSN: add `daemons-of-the-shadow-realm.json` arc mapping
codebend3r Jul 8, 2026
88733e9
KSN: add `initial-d.json` arc mapping
codebend3r Jul 8, 2026
bb73471
KSN: add `is-this-a-zombie.json` arc mapping
codebend3r Jul 8, 2026
4f39d62
KSN: add `blast-of-tempest.json` arc mapping
codebend3r Jul 8, 2026
019b3b9
KSN: add `love-and-lies.json` arc mapping
codebend3r Jul 8, 2026
915f79e
KSN: add `boarding-school-juliet.json` arc mapping
codebend3r Jul 8, 2026
9653c33
KSN: add `skeleton-knight-in-another-world.json` arc mapping
codebend3r Jul 8, 2026
ca29a09
KSN: add `my-senpai-is-annoying.json` arc mapping
codebend3r Jul 8, 2026
c1a05c9
KSN: add `reincarnated-as-a-sword.json` arc mapping
codebend3r Jul 8, 2026
291d253
KSN: add `a-couple-of-cuckoos.json` arc mapping
codebend3r Jul 8, 2026
4476dd8
KSN: add `remake-our-life.json` arc mapping
codebend3r Jul 8, 2026
3ccb742
KSN: add `chained-soldier.json` arc mapping
codebend3r Jul 8, 2026
2dcb586
KSN: add `assassins-pride.json` arc mapping
codebend3r Jul 8, 2026
09df88e
KSN: add `greatest-demon-lord-reborn-typical-nobody.json` arc mapping
codebend3r Jul 8, 2026
87c9929
KSN: add `o-maidens-in-your-savage-season.json` arc mapping
codebend3r Jul 8, 2026
c421f3a
KSN: add `our-last-crusade.json` arc mapping
codebend3r Jul 8, 2026
9e647c5
KSN: add `ragna-crimson.json` arc mapping
codebend3r Jul 8, 2026
6ca6946
KSN: add `seitokai-yakuindomo.json` arc mapping
codebend3r Jul 8, 2026
fa18591
KSN: add `why-the-hell-are-you-here-teacher.json` arc mapping
codebend3r Jul 8, 2026
03e3cb5
KSN: add `maoyu.json` arc mapping
codebend3r Jul 8, 2026
c4eb807
KSN: add `azumanga-daioh.json` arc mapping
codebend3r Jul 8, 2026
213a815
KSN: add `senko-san.json` arc mapping
codebend3r Jul 8, 2026
e9c1263
KSN: add `interspecies-reviewers.json` arc mapping
codebend3r Jul 8, 2026
72ad962
KSN: add `keijo.json` arc mapping
codebend3r Jul 8, 2026
63e68d5
KSN: add `vermeil-in-gold.json` arc mapping
codebend3r Jul 8, 2026
d72143f
KSN: add `genius-princes-guide-raising-nation-debt.json` arc mapping
codebend3r Jul 8, 2026
5100d6a
KSN: add `im-quitting-heroing.json` arc mapping
codebend3r Jul 8, 2026
3a95716
KSN: add `farming-life-in-another-world.json` arc mapping
codebend3r Jul 8, 2026
15cb29b
KSN: add `insomniacs-after-school.json` arc mapping
codebend3r Jul 8, 2026
5309077
KSN: add `kakushigoto.json` arc mapping
codebend3r Jul 8, 2026
d4b10a1
KSN: add `you-and-i-are-polar-opposites.json` arc mapping
codebend3r Jul 8, 2026
2c79793
KSN: add `faraway-paladin.json` arc mapping
codebend3r Jul 8, 2026
52d972b
KSN: add `my-stepmoms-daughter-is-my-ex.json` arc mapping
codebend3r Jul 8, 2026
aa95852
KSN: add `when-supernatural-battles-became-commonplace.json` arc mapping
codebend3r Jul 8, 2026
ca84963
KSN: add `my-deer-friend-nokotan.json` arc mapping
codebend3r Jul 8, 2026
8e488a4
KSN: add `kiss-x-sis.json` arc mapping
codebend3r Jul 8, 2026
44bba5c
KSN: add `romantic-killer.json` arc mapping
codebend3r Jul 8, 2026
4abaade
KSN: add `kiss-him-not-me.json` arc mapping
codebend3r Jul 8, 2026
87fc333
KSN: add `sailor-moon.json` arc mapping
codebend3r Jul 8, 2026
9e84f43
KSN: add `astra-lost-in-space.json` arc mapping
codebend3r Jul 8, 2026
1ac8761
KSN: add `kono-oto-tomare.json` arc mapping
codebend3r Jul 8, 2026
2e17fc4
KSN: add `interviews-with-monster-girls.json` arc mapping
codebend3r Jul 8, 2026
fb4e4de
KSN: add `a-sisters-all-you-need.json` arc mapping
codebend3r Jul 8, 2026
f1a1023
KSN: add `yosuga-no-sora.json` arc mapping
codebend3r Jul 8, 2026
c118e56
KSN: add `school-babysitters.json` arc mapping
codebend3r Jul 8, 2026
3ebac1f
KSN: add `pluto.json` arc mapping
codebend3r Jul 8, 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 @@ -306,6 +306,106 @@ 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";
import gunGaleOnlineAlternative from "@/data/mappings/gun-gale-online-alternative.json";
import aCertainScientificRailgun from "@/data/mappings/a-certain-scientific-railgun.json";
import sentencedToBeAHero from "@/data/mappings/sentenced-to-be-a-hero.json";
import theFruitOfGrisaia from "@/data/mappings/the-fruit-of-grisaia.json";
import hellsing2001 from "@/data/mappings/hellsing-2001.json";
import theSummerHikaruDied from "@/data/mappings/the-summer-hikaru-died.json";
import takopisOriginalSin from "@/data/mappings/takopis-original-sin.json";
import lovelyComplex from "@/data/mappings/lovely-complex.json";
import rokkaBravesOfTheSixFlowers from "@/data/mappings/rokka-braves-of-the-six-flowers.json";
import sankarea from "@/data/mappings/sankarea.json";
import accelWorld from "@/data/mappings/accel-world.json";
import infiniteStratos from "@/data/mappings/infinite-stratos.json";
import fateApocrypha from "@/data/mappings/fate-apocrypha.json";
import oreshura from "@/data/mappings/oreshura.json";
import uncleFromAnotherWorld from "@/data/mappings/uncle-from-another-world.json";
import girlfriendGirlfriend from "@/data/mappings/girlfriend-girlfriend.json";
import weNeverLearn from "@/data/mappings/we-never-learn.json";
import gabrielDropout from "@/data/mappings/gabriel-dropout.json";
import platinumEnd from "@/data/mappings/platinum-end.json";
import strikeTheBlood from "@/data/mappings/strike-the-blood.json";
import natsumeYuujinchou from "@/data/mappings/natsume-yuujinchou.json";
import makeineTooManyLosingHeroines from "@/data/mappings/makeine-too-many-losing-heroines.json";
import theDetectiveIsAlreadyDead from "@/data/mappings/the-detective-is-already-dead.json";
import ahoGirl from "@/data/mappings/aho-girl.json";
import hiddenDungeon from "@/data/mappings/hidden-dungeon.json";
import hundredGirlfriends from "@/data/mappings/100-girlfriends.json";
import kemonoJihen from "@/data/mappings/kemono-jihen.json";
import aharenSanWaHakarenai from "@/data/mappings/aharen-san-wa-hakarenai.json";
import tanakaKunIsAlwaysListless from "@/data/mappings/tanaka-kun-is-always-listless.json";
import howHeavyDumbbells from "@/data/mappings/how-heavy-dumbbells.json";
import rosarioVampire from "@/data/mappings/rosario-vampire.json";
import schoolLive from "@/data/mappings/school-live.json";
import pingPongTheAnimation from "@/data/mappings/ping-pong-the-animation.json";
import gosick from "@/data/mappings/gosick.json";
import twinStarExorcists from "@/data/mappings/twin-star-exorcists.json";
import banishedFromTheHerosParty from "@/data/mappings/banished-from-the-heros-party.json";
import wrongWayToUseHealingMagic from "@/data/mappings/wrong-way-to-use-healing-magic.json";
import problemChildren from "@/data/mappings/problem-children.json";
import combatantsWillBeDispatched from "@/data/mappings/combatants-will-be-dispatched.json";
import bakuman from "@/data/mappings/bakuman.json";
import konosubaExplosion from "@/data/mappings/konosuba-explosion.json";
import talentlessNana from "@/data/mappings/talentless-nana.json";
import newGame from "@/data/mappings/new-game.json";
import absoluteDuo from "@/data/mappings/absolute-duo.json";
import scienceFellInLove from "@/data/mappings/science-fell-in-love.json";
import trappedInADatingSim from "@/data/mappings/trapped-in-a-dating-sim.json";
import nonNonBiyori from "@/data/mappings/non-non-biyori.json";
import magiAdventureOfSinbad from "@/data/mappings/magi-adventure-of-sinbad.json";
import bakaAndTest from "@/data/mappings/baka-and-test.json";
import dagashiKashi from "@/data/mappings/dagashi-kashi.json";
import worldendSukasuka from "@/data/mappings/worldend-sukasuka.json";
import ascendanceOfABookworm from "@/data/mappings/ascendance-of-a-bookworm.json";
import keepYourHandsOffEizouken from "@/data/mappings/keep-your-hands-off-eizouken.json";
import campfireCookingInAnotherWorld from "@/data/mappings/campfire-cooking-in-another-world.json";
import daemonsOfTheShadowRealm from "@/data/mappings/daemons-of-the-shadow-realm.json";
import initialD from "@/data/mappings/initial-d.json";
import isThisAZombie from "@/data/mappings/is-this-a-zombie.json";
import blastOfTempest from "@/data/mappings/blast-of-tempest.json";
import loveAndLies from "@/data/mappings/love-and-lies.json";
import boardingSchoolJuliet from "@/data/mappings/boarding-school-juliet.json";
import skeletonKnightInAnotherWorld from "@/data/mappings/skeleton-knight-in-another-world.json";
import mySenpaiIsAnnoying from "@/data/mappings/my-senpai-is-annoying.json";
import reincarnatedAsASword from "@/data/mappings/reincarnated-as-a-sword.json";
import aCoupleOfCuckoos from "@/data/mappings/a-couple-of-cuckoos.json";
import remakeOurLife from "@/data/mappings/remake-our-life.json";
import chainedSoldier from "@/data/mappings/chained-soldier.json";
import assassinsPride from "@/data/mappings/assassins-pride.json";
import greatestDemonLordRebornTypicalNobody from "@/data/mappings/greatest-demon-lord-reborn-typical-nobody.json";
import oMaidensInYourSavageSeason from "@/data/mappings/o-maidens-in-your-savage-season.json";
import ourLastCrusade from "@/data/mappings/our-last-crusade.json";
import ragnaCrimson from "@/data/mappings/ragna-crimson.json";
import seitokaiYakuindomo from "@/data/mappings/seitokai-yakuindomo.json";
import whyTheHellAreYouHereTeacher from "@/data/mappings/why-the-hell-are-you-here-teacher.json";
import maoyu from "@/data/mappings/maoyu.json";
import azumangaDaioh from "@/data/mappings/azumanga-daioh.json";
import senkoSan from "@/data/mappings/senko-san.json";
import interspeciesReviewers from "@/data/mappings/interspecies-reviewers.json";
import keijo from "@/data/mappings/keijo.json";
import vermeilInGold from "@/data/mappings/vermeil-in-gold.json";
import geniusPrincesGuideRaisingNationDebt from "@/data/mappings/genius-princes-guide-raising-nation-debt.json";
import imQuittingHeroing from "@/data/mappings/im-quitting-heroing.json";
import farmingLifeInAnotherWorld from "@/data/mappings/farming-life-in-another-world.json";
import insomniacsAfterSchool from "@/data/mappings/insomniacs-after-school.json";
import kakushigoto from "@/data/mappings/kakushigoto.json";
import youAndIArePolarOpposites from "@/data/mappings/you-and-i-are-polar-opposites.json";
import farawayPaladin from "@/data/mappings/faraway-paladin.json";
import myStepmomsDaughterIsMyEx from "@/data/mappings/my-stepmoms-daughter-is-my-ex.json";
import whenSupernaturalBattlesBecameCommonplace from "@/data/mappings/when-supernatural-battles-became-commonplace.json";
import myDeerFriendNokotan from "@/data/mappings/my-deer-friend-nokotan.json";
import kissXSis from "@/data/mappings/kiss-x-sis.json";
import romanticKiller from "@/data/mappings/romantic-killer.json";
import kissHimNotMe from "@/data/mappings/kiss-him-not-me.json";
import sailorMoon from "@/data/mappings/sailor-moon.json";
import astraLostInSpace from "@/data/mappings/astra-lost-in-space.json";
import konoOtoTomare from "@/data/mappings/kono-oto-tomare.json";
import interviewsWithMonsterGirls from "@/data/mappings/interviews-with-monster-girls.json";
import aSistersAllYouNeed from "@/data/mappings/a-sisters-all-you-need.json";
import yosugaNoSora from "@/data/mappings/yosuga-no-sora.json";
import schoolBabysitters from "@/data/mappings/school-babysitters.json";
import pluto from "@/data/mappings/pluto.json";

// JSON imports lose tuple types — `[1, 100]` becomes `number[]` instead of
// `[number, number]`. `normalizeMapping` rebuilds tuples literally.
Expand Down Expand Up @@ -681,6 +781,106 @@ const ALL_MAPPINGS: SeriesMapping[] = [
katanagatari,
worldGodOnlyKnows,
recordOfRagnarok,
gunGaleOnlineAlternative,
aCertainScientificRailgun,
sentencedToBeAHero,
theFruitOfGrisaia,
hellsing2001,
theSummerHikaruDied,
takopisOriginalSin,
lovelyComplex,
rokkaBravesOfTheSixFlowers,
sankarea,
accelWorld,
infiniteStratos,
fateApocrypha,
oreshura,
uncleFromAnotherWorld,
girlfriendGirlfriend,
weNeverLearn,
gabrielDropout,
platinumEnd,
strikeTheBlood,
natsumeYuujinchou,
makeineTooManyLosingHeroines,
theDetectiveIsAlreadyDead,
ahoGirl,
hiddenDungeon,
hundredGirlfriends,
kemonoJihen,
aharenSanWaHakarenai,
tanakaKunIsAlwaysListless,
howHeavyDumbbells,
rosarioVampire,
schoolLive,
pingPongTheAnimation,
gosick,
twinStarExorcists,
banishedFromTheHerosParty,
wrongWayToUseHealingMagic,
problemChildren,
combatantsWillBeDispatched,
bakuman,
konosubaExplosion,
talentlessNana,
newGame,
absoluteDuo,
scienceFellInLove,
trappedInADatingSim,
nonNonBiyori,
magiAdventureOfSinbad,
bakaAndTest,
dagashiKashi,
worldendSukasuka,
ascendanceOfABookworm,
keepYourHandsOffEizouken,
campfireCookingInAnotherWorld,
daemonsOfTheShadowRealm,
initialD,
isThisAZombie,
blastOfTempest,
loveAndLies,
boardingSchoolJuliet,
skeletonKnightInAnotherWorld,
mySenpaiIsAnnoying,
reincarnatedAsASword,
aCoupleOfCuckoos,
remakeOurLife,
chainedSoldier,
assassinsPride,
greatestDemonLordRebornTypicalNobody,
oMaidensInYourSavageSeason,
ourLastCrusade,
ragnaCrimson,
seitokaiYakuindomo,
whyTheHellAreYouHereTeacher,
maoyu,
azumangaDaioh,
senkoSan,
interspeciesReviewers,
keijo,
vermeilInGold,
geniusPrincesGuideRaisingNationDebt,
imQuittingHeroing,
farmingLifeInAnotherWorld,
insomniacsAfterSchool,
kakushigoto,
youAndIArePolarOpposites,
farawayPaladin,
myStepmomsDaughterIsMyEx,
whenSupernaturalBattlesBecameCommonplace,
myDeerFriendNokotan,
kissXSis,
romanticKiller,
kissHimNotMe,
sailorMoon,
astraLostInSpace,
konoOtoTomare,
interviewsWithMonsterGirls,
aSistersAllYouNeed,
yosugaNoSora,
schoolBabysitters,
pluto,
].map(normalizeMapping);

export function findMappingByMediaId(mediaId: number): SeriesMapping | null {
Expand Down
66 changes: 66 additions & 0 deletions src/data/mappings/100-girlfriends.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"anilistAnimeId": 162694,
"anilistMangaId": 114416,
"title": "The 100 Girlfriends Who Really, Really, Really, Really, REALLY Love You",
"sourceNotes": "Cumulative episodes across S1 (12) + S2 (12) = 24. Manga ongoing in Weekly Young Jump (approx. ch. 250 / 25 volumes as of mid-2026; AniList reports null chapter count). S1 adapts ch. 1-22 (continue at Vol. 3 ch. 23); S2 adapts ch. 23-50 (continue at Vol. 7 ch. 51); zero filler. This is a gag romcom structured around introducing one soulmate at a time, so arcs are named for the girlfriend introduced. Girlfriend-intro chapters are anchored where known (Hakari ch.1, Karane ch.2, Shizuka ch.3, Kurumi ch.24, Mei ch.30, Meme ch.45) and volume boundaries (V4 24-32, V5 33-41, V6 42-50, V7 51-59); intermediate episode/chapter splits are approximate. Season 3 premiered July 2026 and is not yet mapped; post-S2 chapters are listed source-only.",
"mappings": [
{
"episodes": [1, 2],
"chapters": [1, 4],
"arc": "Hakari Hanazono & Karane Inda"
},
{
"episodes": [3, 4],
"chapters": [5, 7],
"arc": "Shizuka Yoshimoto"
},
{
"episodes": [5, 6],
"chapters": [8, 10],
"arc": "Nano Eiai"
},
{
"episodes": [7, 9],
"chapters": [11, 16],
"arc": "Kusuri Yakuzen"
},
{
"episodes": [10, 12],
"chapters": [17, 22],
"arc": "Hahari Hanazono"
},
{
"episodes": [13, 15],
"chapters": [23, 29],
"arc": "Kurumi Haraga"
},
{
"episodes": [16, 17],
"chapters": [30, 35],
"arc": "Mei Meido"
},
{
"episodes": [18, 20],
"chapters": [36, 40],
"arc": "Iku Sutou"
},
{
"episodes": [21, 22],
"chapters": [41, 44],
"arc": "Mimimi Utsukushisugi"
},
{
"episodes": [23, 24],
"chapters": [45, 50],
"arc": "Meme Kakure"
},
{
"chapters": [51, 59],
"arc": "Chiyo & Naddy (Vol. 7)"
},
{
"chapters": [60, 250],
"arc": "Ongoing manga (Vol. 8+)"
}
]
}
46 changes: 46 additions & 0 deletions src/data/mappings/a-certain-scientific-railgun.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"anilistAnimeId": 6213,
"anilistMangaId": 37776,
"title": "A Certain Scientific Railgun",
"sourceNotes": "Cumulative episodes across 3 TV seasons: Railgun S1 (24, 2009) + Railgun S (24, 2013) + Railgun T (25, 2020) = 73 eps. anilistMangaId 37776 is Kazuma Kamachi & Motoi Fuyukawa's Toaru Kagaku no Railgun manga (AniList lists 180 chapters; manga is actually still ongoing, ~180+ chapters / 20+ volumes as of 2025 — last entry extends to AniList's 180). Roughly half the anime is adaptation and half is anime-original: S1 adapts the Level Upper arc (eps 1-14) then invents the Poltergeist arc (eps 15-24, Big Spider woven in); Railgun S adapts the Sisters arc (eps 1-16) then invents the Silent Party arc (eps 17-24); Railgun T adapts the Daihaseisai/Daihasei Festival arc (eps 1-15) and the Dream Ranker arc (eps 16-25, covering the Indian Poker/Dream Ranker and Doppelganger/Kuriba Ryouko manga chapters with anime-original Scavenger/Kihara additions). Per-arc chapter boundaries are approximate (sources disagree by a chapter or two at arc seams). Anime-original arcs are anchored to their surrounding chapter as a placeholder and adapt no source. Unadapted manga tail: Jailbreaker arc (ch 97-127) and later school-life storylines (ch 128-180). Railgun has no theatrical film (the franchise's Endymion movie belongs to the sister series A Certain Magical Index).",
"mappings": [
{
"episodes": [1, 14],
"chapters": [1, 17],
"arc": "Level Upper Arc"
},
{
"episodes": [15, 24],
"chapters": [17, 17],
"arc": "Poltergeist Arc (anime-original; Big Spider woven in)"
},
{
"episodes": [25, 40],
"chapters": [18, 39],
"arc": "Sisters Arc"
},
{
"episodes": [41, 48],
"chapters": [39, 39],
"arc": "Silent Party Arc (anime-original)"
},
{
"episodes": [49, 63],
"chapters": [40, 70],
"arc": "Daihaseisai (Daihasei Festival) Arc"
},
{
"episodes": [64, 73],
"chapters": [71, 96],
"arc": "Dream Ranker Arc (Indian Poker + Doppelganger; anime-original Scavenger/Kihara additions)"
},
{
"chapters": [97, 127],
"arc": "Jailbreaker Arc (unadapted)"
},
{
"chapters": [128, 180],
"arc": "Post-Jailbreaker school-life storylines (unadapted; manga ongoing)"
}
]
}
52 changes: 52 additions & 0 deletions src/data/mappings/a-couple-of-cuckoos.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
"anilistAnimeId": 132052,
"anilistMangaId": 114383,
"title": "A Couple of Cuckoos",
"sourceNotes": "Cumulative episodes across S1 (24 eps, 2 cours, 2022) + S2 (12 eps, 2025) = 36 total; S2E1 is cumulative episode 25. Faithful ~2-3-chapters-per-episode adaptation of Miki Yoshikawa's romcom manga (Weekly Shonen Magazine), 0 filler. S1 covers chapters 1-56 (a viewer resumes at ch 57); S2 covers roughly ch 57-112 (a viewer resumes at ch 113). The adaptation reorders a few late-S1 chapters: S1E24 pulls ch 59-60 forward while S2E25 backfills the skipped ch 57-58, so chapter ranges here are presented monotonically (S1 = ch 1-56, S2 = ch 57-112) to match the clean \"start reading\" points rather than strict adaptation order. Since the source has no official arc names, groupings are a descriptive segmentation of this love-polygon romcom. Manga is ongoing and entered its final arc on Jan 28, 2026 (current ch. ~300, 33 volumes); the unadapted tail is chapters-only. The \"Kakkou no Iikagen\" YouTube mini-series is a promotional short spin-off and is not mapped.",
"mappings": [
{
"episodes": [1, 4],
"chapters": [1, 8],
"arc": "The Baby Swap & the Arranged Engagement"
},
{
"episodes": [5, 9],
"chapters": [9, 21],
"arc": "Erika Transfers In: School Life & the Love Square"
},
{
"episodes": [10, 13],
"chapters": [22, 30],
"arc": "Hiro, Sachi & Deepening Feelings"
},
{
"episodes": [14, 19],
"chapters": [31, 44],
"arc": "Summer Break: Beach, Idol Work & the Festival"
},
{
"episodes": [20, 24],
"chapters": [45, 56],
"arc": "The Amano Family & the S1 Finale"
},
{
"episodes": [25, 28],
"chapters": [57, 76],
"arc": "New Term: Rivalries & the Culture Festival"
},
{
"episodes": [29, 32],
"chapters": [77, 95],
"arc": "Shifting Hearts & the Marriage Question"
},
{
"episodes": [33, 36],
"chapters": [96, 112],
"arc": "Confessions & the S2 Finale"
},
{
"chapters": [113, 300],
"arc": "Beyond the Anime (manga-only, ongoing final arc)"
}
]
}
Loading
Loading