Files
mangabaka-seeder/README.md
T
Lucas WintherandClaude Opus 5.5 dd2d5a94bc docs: approve spec 001; self-hosted Bun server, defer password gate
The user signed off the spec. The server runs self-hosted under Bun;
the password gate and the Cloudflare Workers entry stay designed but
deferred until abuse or traffic calls for them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 22:10:20 +02:00

93 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# mangabaka-seeder
A tool for seeding edits to the [MangaBaka](https://mangabaka.org) manga/comics
database, in the spirit of [yambs](https://codeberg.org/derat/yambs) for
MusicBrainz.
> **Status:** designed, not built yet. This README describes the planned
> behaviour; see [the spec](docs/specs/001-webtoons-covers.md).
Today's goal is one thing done well: **given a MangaBaka series link and a
Webtoons series link, find every cover the Webtoons series has used, current
and historical, and request them added to the MangaBaka series**. The current
poster becomes the main (default) cover for the edition's language.
## Two ways to use it
- **Web page** (primary). Open the page, paste the two links, review the
covers. A small server behind the page reads Webtoons and the Wayback
Machine for you, because browsers can't. It runs on your own machine with
Bun.
- **Userscript.** Install `mbseed.user.js` in Tampermonkey or Violentmonkey.
On a MangaBaka series page it adds a **Seed covers** panel; paste the
Webtoons link. It reads Webtoons directly from your browser, and with
litterbox or catbox it needs no server at all.
A command-line version (Bun) may follow.
## How it works
1. **Read both links.** The MangaBaka link gives the series id; the Webtoons
link gives the title, `title_no`, language, and official or canvas. If the
MangaBaka series has no link to that `title_no`, you're warned.
2. **Collect covers.**
- **Current:** the portrait poster, the square thumbnail, and the banner and
hero art.
- **Historical:** cover images in archived copies of the series page on the
[Wayback Machine](https://web.archive.org), up to one snapshot per month.
3. **Check each image.** It downloads each image to get its size and hash,
classifies it by shape (portrait → `volume`, square → `other`, wide →
`banner`), and drops duplicates and images MangaBaka already has.
4. **Build the submission.** Existing covers are kept and new ones added. The
current poster is the default (the square for canvas series, which have no
poster). Every new cover gets a note recording where and when it was seen.
5. **Rehost the images** when you click **Rehost selected**, to the host you
pick:
| Host | Links last |
|---|---|
| the server's own storage (default, if configured) | 30 days |
| [litterbox](https://litterbox.catbox.moe) | 1 hour – 72 hours |
| [catbox.moe](https://catbox.moe) | permanently |
| none (`direct`): submit the Webtoons URL itself | as long as Webtoons keeps it |
A link must still work when a MangaBaka moderator looks at the request. If
it has expired by then, run the tool again.
6. **Hand it to you.**
- **Without API access (most users):** copy the hosted URLs and paste them
into MangaBaka's cover form for the series (the page links to it).
- **With a personal access token:** the tool shows MangaBaka's preview diff
and, after you confirm, submits the request for review.
Nothing is uploaded or sent to MangaBaka without your action, and submissions
always go to review. You choose the content rating (default `safe`); titles
Webtoons marks as mature show a warning. Your token is sent only to
MangaBaka's API, never to our server.
MangaBaka's submissions API is only open to contributors, or to users with at
least 25 approved submissions.
## Supported sources
| Source | Links | Current covers | Historical covers |
|---|---|---|---|
| WEBTOON (official & canvas) | `https://www.webtoons.com/<lang>/…/list?title_no=N`, `m.webtoons.com` | poster, square, banner, foreground | Wayback Machine |
Each Webtoons language edition has its own `title_no`. Run the tool once per
edition; the covers are tagged with that edition's language.
## Notes and limitations
- **Some covers may only exist in the archive.** If an old cover is no longer
on Webtoons' server, its archive.org copy is used instead.
- **Not everything is a cover.** Some historical images are promotional or
landing-page art. Review the list before submitting.
- **Requests are rate-limited** to stay polite to Webtoons, the Wayback Machine
and MangaBaka.
## Development
Working on this repo, by hand or with an AI agent: start at
[`AGENTS.md`](AGENTS.md). Design: [`docs/specs/`](docs/specs/); current
architecture: [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md).