1.0.6 • Published 7 months ago
@lenml/char-card-reader v1.0.6
Char Card Reader
A lightweight library for reading SillyTavern character card metadata from image files (PNG, JPEG, WEBP) without external dependencies.
Features
- Supports character card specifications v1, v2, and v3
- Extracts metadata from PNG, JPEG, and WEBP images
- Provides conversion between different spec versions
- Zero external dependencies
- Works in both Node.js and browser environments
Installation
npm install @lenml/char-card-reader
# or
yarn add @lenml/char-card-reader
# or
pnpm install @lenml/char-card-readerUsage
Basic Usage (Node.js)
import { CharacterCard } from "@lenml/char-card-reader";
import fs from "fs";
(async () => {
const file = fs.readFileSync("./path/to/character.png");
const card = await CharacterCard.from_file(file);
// Access card properties
console.log("Character Name:", card.name);
console.log("Description:", card.description);
console.log("First Message:", card.first_message);
// Convert between specs
const v1Data = card.toSpecV1();
const v2Data = card.toSpecV2();
const v3Data = card.toSpecV3();
})();Browser Usage
<script type="module">
import { CharacterCard } from "https://esm.run/@lenml/char-card-reader";
const fileInput = document.getElementById("character-file");
fileInput.addEventListener("change", async (e) => {
const file = e.target.files[0];
if (!file) return;
const arrayBuffer = await file.arrayBuffer();
const card = await CharacterCard.from_file(arrayBuffer);
console.log("Character Info:", card.toSpecV3());
});
</script>API
CharacterCard Class
Static Methods
from_file(file: ArrayBuffer | Uint8Array): Promise<CharacterCard>- Creates a CharacterCard instance from a file
Instance Properties
avatar- Character avatar URLname- Character namedescription- Character descriptionfirst_message- First message/opening linepersonality- Personality descriptionscenario- Scenario contextalternate_greetings- Array of alternate greetingstags- Array of character tags- And more...
Conversion Methods
toSpecV1()- Converts to v1 spec formattoSpecV2()- Converts to v2 spec formattoSpecV3()- Converts to v3 spec format
CharacterBook (Lorebook)
from character card
import { CharacterCard } from "@lenml/char-card-reader";
const file = fs.readFileSync("./path/to/character.png");
const card = await CharacterCard.from_file(file);
const book = card.get_book();
const entries = book.scan(card.first_message);from json data
import { CharacterBook } from "@lenml/char-card-reader";
const json_data = {
entries: [
/*...*/
],
};
const book = CharacterBook.from_json(json_data);
const entries = book.scan("this xxoo world.");Document
click to [Read generated document]
Specifications References
License
AGPL-3.0