Skip to content

Commit e1c54da

Browse files
committed
initial commit
1 parent 04d6b8d commit e1c54da

31 files changed

+8607
-0
lines changed

.gitignore

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Dependencies
2+
/node_modules
3+
4+
# Production
5+
/build
6+
7+
# IDE
8+
.idea
9+
10+
# Generated files
11+
_remote
12+
.docusaurus
13+
.cache-loader
14+
15+
# Misc
16+
.DS_Store
17+
.env.local
18+
.env.development.local
19+
.env.test.local
20+
.env.production.local
21+
22+
npm-debug.log*
23+
yarn-debug.log*
24+
yarn-error.log*

README.md

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Website
2+
3+
This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
4+
5+
### Installation
6+
7+
```
8+
$ yarn
9+
```
10+
11+
### Local Development
12+
13+
```
14+
$ yarn start
15+
```
16+
17+
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
18+
19+
### Build
20+
21+
```
22+
$ yarn build
23+
```
24+
25+
This command generates static content into the `build` directory and can be served using any static contents hosting service.
26+
27+
### Deployment
28+
29+
Using SSH:
30+
31+
```
32+
$ USE_SSH=true yarn deploy
33+
```
34+
35+
Not using SSH:
36+
37+
```
38+
$ GIT_USER=<Your GitHub username> yarn deploy
39+
```
40+
41+
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.

babel.config.js

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = {
2+
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
3+
};

docs/comicinfo/_category_.json

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"label": "ComicInfo",
3+
"position": 20,
4+
"link": {
5+
"type": "generated-index"
6+
}
7+
}

docs/comicinfo/intro.md

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
sidebar_position: 1
3+
title: ComicRack's ComicInfo.xml
4+
---
5+
6+
## What is it?
7+
8+
The `ComicInfo.xml` file originates from the **ComicRack** application, which is not developed anymore.
9+
The `ComicInfo.xml` however is used by a variety of applications.
10+
11+
There is, however, no governance about the file format, until now!
12+
13+
The goals of this initiative are to:
14+
15+
1. document the existing versions of the schema, with the accepted usage of each field
16+
2. centralize, discuss, and document evolutions of the schema
+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"label": "Schemas",
3+
"position": 2,
4+
"collapsed": false,
5+
"link": {
6+
"type": "generated-index"
7+
}
8+
}

docs/comicinfo/schemas/changelog.md

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
sidebar_position: 1
3+
title: Changelog
4+
---
5+
6+
```mdx-code-block
7+
import Changelog, {toc as ChangelogTOC} from "../_remote/CHANGELOG.md"
8+
9+
<Changelog />
10+
11+
export const toc = ChangelogTOC;
12+
```

docs/comicinfo/schemas/v1.0.md

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
sidebar_position: 30
3+
title: Version 1.0
4+
---
5+
6+
[Source](https://github.com/anansi-project/comicinfo/blob/main/schema/v1.0/ComicInfo.xsd) on GitHub
7+
8+
```mdx-code-block
9+
import CodeBlock from '@theme/CodeBlock';
10+
import Schema from '!!raw-loader!./v1.0/ComicInfo.xsd';
11+
12+
<CodeBlock className="language-xml">{Schema}</CodeBlock>
13+
```
+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
3+
<xs:element name="ComicInfo" nillable="true" type="ComicInfo" />
4+
<xs:complexType name="ComicInfo">
5+
<xs:sequence>
6+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Title" type="xs:string" />
7+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Series" type="xs:string" />
8+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Number" type="xs:string" />
9+
<xs:element minOccurs="0" maxOccurs="1" default="-1" name="Count" type="xs:int" />
10+
<xs:element minOccurs="0" maxOccurs="1" default="-1" name="Volume" type="xs:int" />
11+
<xs:element minOccurs="0" maxOccurs="1" default="" name="AlternateSeries" type="xs:string" />
12+
<xs:element minOccurs="0" maxOccurs="1" default="" name="AlternateNumber" type="xs:string" />
13+
<xs:element minOccurs="0" maxOccurs="1" default="-1" name="AlternateCount" type="xs:int" />
14+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Summary" type="xs:string" />
15+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Notes" type="xs:string" />
16+
<xs:element minOccurs="0" maxOccurs="1" default="-1" name="Year" type="xs:int" />
17+
<xs:element minOccurs="0" maxOccurs="1" default="-1" name="Month" type="xs:int" />
18+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Writer" type="xs:string" />
19+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Penciller" type="xs:string" />
20+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Inker" type="xs:string" />
21+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Colorist" type="xs:string" />
22+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Letterer" type="xs:string" />
23+
<xs:element minOccurs="0" maxOccurs="1" default="" name="CoverArtist" type="xs:string" />
24+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Editor" type="xs:string" />
25+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Publisher" type="xs:string" />
26+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Imprint" type="xs:string" />
27+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Genre" type="xs:string" />
28+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Web" type="xs:string" />
29+
<xs:element minOccurs="0" maxOccurs="1" default="0" name="PageCount" type="xs:int" />
30+
<xs:element minOccurs="0" maxOccurs="1" default="" name="LanguageISO" type="xs:string" />
31+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Format" type="xs:string" />
32+
<xs:element minOccurs="0" maxOccurs="1" default="Unknown" name="BlackAndWhite" type="YesNo" />
33+
<xs:element minOccurs="0" maxOccurs="1" default="Unknown" name="Manga" type="YesNo" />
34+
<xs:element minOccurs="0" maxOccurs="1" name="Pages" type="ArrayOfComicPageInfo" />
35+
</xs:sequence>
36+
</xs:complexType>
37+
<xs:simpleType name="YesNo">
38+
<xs:restriction base="xs:string">
39+
<xs:enumeration value="Unknown" />
40+
<xs:enumeration value="No" />
41+
<xs:enumeration value="Yes" />
42+
</xs:restriction>
43+
</xs:simpleType>
44+
<xs:complexType name="ArrayOfComicPageInfo">
45+
<xs:sequence>
46+
<xs:element minOccurs="0" maxOccurs="unbounded" name="Page" nillable="true" type="ComicPageInfo" />
47+
</xs:sequence>
48+
</xs:complexType>
49+
<xs:complexType name="ComicPageInfo">
50+
<xs:attribute name="Image" type="xs:int" use="required" />
51+
<xs:attribute default="Story" name="Type" type="ComicPageType" />
52+
<xs:attribute default="false" name="DoublePage" type="xs:boolean" />
53+
<xs:attribute default="0" name="ImageSize" type="xs:long" />
54+
<xs:attribute default="" name="Key" type="xs:string" />
55+
<xs:attribute default="-1" name="ImageWidth" type="xs:int" />
56+
<xs:attribute default="-1" name="ImageHeight" type="xs:int" />
57+
</xs:complexType>
58+
<xs:simpleType name="ComicPageType">
59+
<xs:list>
60+
<xs:simpleType>
61+
<xs:restriction base="xs:string">
62+
<xs:enumeration value="FrontCover" />
63+
<xs:enumeration value="InnerCover" />
64+
<xs:enumeration value="Roundup" />
65+
<xs:enumeration value="Story" />
66+
<xs:enumeration value="Advertisment" />
67+
<xs:enumeration value="Editorial" />
68+
<xs:enumeration value="Letters" />
69+
<xs:enumeration value="Preview" />
70+
<xs:enumeration value="BackCover" />
71+
<xs:enumeration value="Other" />
72+
<xs:enumeration value="Deleted" />
73+
</xs:restriction>
74+
</xs:simpleType>
75+
</xs:list>
76+
</xs:simpleType>
77+
</xs:schema>

docs/comicinfo/schemas/v2.0.md

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
sidebar_position: 29
3+
title: Version 2.0
4+
---
5+
6+
[Source](https://github.com/anansi-project/comicinfo/blob/main/schema/v2.0/ComicInfo.xsd) on GitHub
7+
8+
```mdx-code-block
9+
import CodeBlock from '@theme/CodeBlock';
10+
import Schema from '!!raw-loader!./v2.0/ComicInfo.xsd';
11+
12+
<CodeBlock className="language-xml">{Schema}</CodeBlock>
13+
```
+111
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
3+
<xs:element name="ComicInfo" nillable="true" type="ComicInfo" />
4+
<xs:complexType name="ComicInfo">
5+
<xs:sequence>
6+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Title" type="xs:string" />
7+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Series" type="xs:string" />
8+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Number" type="xs:string" />
9+
<xs:element minOccurs="0" maxOccurs="1" default="-1" name="Count" type="xs:int" />
10+
<xs:element minOccurs="0" maxOccurs="1" default="-1" name="Volume" type="xs:int" />
11+
<xs:element minOccurs="0" maxOccurs="1" default="" name="AlternateSeries" type="xs:string" />
12+
<xs:element minOccurs="0" maxOccurs="1" default="" name="AlternateNumber" type="xs:string" />
13+
<xs:element minOccurs="0" maxOccurs="1" default="-1" name="AlternateCount" type="xs:int" />
14+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Summary" type="xs:string" />
15+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Notes" type="xs:string" />
16+
<xs:element minOccurs="0" maxOccurs="1" default="-1" name="Year" type="xs:int" />
17+
<xs:element minOccurs="0" maxOccurs="1" default="-1" name="Month" type="xs:int" />
18+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Writer" type="xs:string" />
19+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Penciller" type="xs:string" />
20+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Inker" type="xs:string" />
21+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Colorist" type="xs:string" />
22+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Letterer" type="xs:string" />
23+
<xs:element minOccurs="0" maxOccurs="1" default="" name="CoverArtist" type="xs:string" />
24+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Editor" type="xs:string" />
25+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Publisher" type="xs:string" />
26+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Imprint" type="xs:string" />
27+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Genre" type="xs:string" />
28+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Web" type="xs:string" />
29+
<xs:element minOccurs="0" maxOccurs="1" default="0" name="PageCount" type="xs:int" />
30+
<xs:element minOccurs="0" maxOccurs="1" default="" name="LanguageISO" type="xs:string" />
31+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Format" type="xs:string" />
32+
<xs:element minOccurs="0" maxOccurs="1" default="Unknown" name="BlackAndWhite" type="YesNo" />
33+
<xs:element minOccurs="0" maxOccurs="1" default="Unknown" name="Manga" type="Manga" />
34+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Characters" type="xs:string" />
35+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Teams" type="xs:string" />
36+
<xs:element minOccurs="0" maxOccurs="1" default="" name="Locations" type="xs:string" />
37+
<xs:element minOccurs="0" maxOccurs="1" default="" name="ScanInformation" type="xs:string" />
38+
<xs:element minOccurs="0" maxOccurs="1" default="" name="StoryArc" type="xs:string" />
39+
<xs:element minOccurs="0" maxOccurs="1" default="" name="SeriesGroup" type="xs:string" />
40+
<xs:element minOccurs="0" maxOccurs="1" default="Unknown" name="AgeRating" type="AgeRating" />
41+
<xs:element minOccurs="0" maxOccurs="1" name="Pages" type="ArrayOfComicPageInfo" />
42+
</xs:sequence>
43+
</xs:complexType>
44+
<xs:simpleType name="YesNo">
45+
<xs:restriction base="xs:string">
46+
<xs:enumeration value="Unknown" />
47+
<xs:enumeration value="No" />
48+
<xs:enumeration value="Yes" />
49+
</xs:restriction>
50+
</xs:simpleType>
51+
<xs:simpleType name="Manga">
52+
<xs:restriction base="xs:string">
53+
<xs:enumeration value="Unknown" />
54+
<xs:enumeration value="No" />
55+
<xs:enumeration value="Yes" />
56+
<xs:enumeration value="YesAndRightToLeft" />
57+
</xs:restriction>
58+
</xs:simpleType>
59+
<xs:simpleType name="AgeRating">
60+
<xs:restriction base="xs:string">
61+
<xs:enumeration value="Unknown" />
62+
<xs:enumeration value="Adults Only 18+" />
63+
<xs:enumeration value="Early Childhood" />
64+
<xs:enumeration value="Everyone" />
65+
<xs:enumeration value="Everyone 10+" />
66+
<xs:enumeration value="G" />
67+
<xs:enumeration value="Kids to Adults" />
68+
<xs:enumeration value="M" />
69+
<xs:enumeration value="MA 15+" />
70+
<xs:enumeration value="Mature 17+" />
71+
<xs:enumeration value="PG" />
72+
<xs:enumeration value="R18+" />
73+
<xs:enumeration value="Rating Pending" />
74+
<xs:enumeration value="Teen" />
75+
<xs:enumeration value="X18+" />
76+
</xs:restriction>
77+
</xs:simpleType>
78+
<xs:complexType name="ArrayOfComicPageInfo">
79+
<xs:sequence>
80+
<xs:element minOccurs="0" maxOccurs="unbounded" name="Page" nillable="true" type="ComicPageInfo" />
81+
</xs:sequence>
82+
</xs:complexType>
83+
<xs:complexType name="ComicPageInfo">
84+
<xs:attribute name="Image" type="xs:int" use="required" />
85+
<xs:attribute default="Story" name="Type" type="ComicPageType" />
86+
<xs:attribute default="false" name="DoublePage" type="xs:boolean" />
87+
<xs:attribute default="0" name="ImageSize" type="xs:long" />
88+
<xs:attribute default="" name="Key" type="xs:string" />
89+
<xs:attribute default="-1" name="ImageWidth" type="xs:int" />
90+
<xs:attribute default="-1" name="ImageHeight" type="xs:int" />
91+
</xs:complexType>
92+
<xs:simpleType name="ComicPageType">
93+
<xs:list>
94+
<xs:simpleType>
95+
<xs:restriction base="xs:string">
96+
<xs:enumeration value="FrontCover" />
97+
<xs:enumeration value="InnerCover" />
98+
<xs:enumeration value="Roundup" />
99+
<xs:enumeration value="Story" />
100+
<xs:enumeration value="Advertisment" />
101+
<xs:enumeration value="Editorial" />
102+
<xs:enumeration value="Letters" />
103+
<xs:enumeration value="Preview" />
104+
<xs:enumeration value="BackCover" />
105+
<xs:enumeration value="Other" />
106+
<xs:enumeration value="Deleted" />
107+
</xs:restriction>
108+
</xs:simpleType>
109+
</xs:list>
110+
</xs:simpleType>
111+
</xs:schema>

docs/comicinfo/schemas/v2.1.md

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
sidebar_position: 25
3+
title: Version 2.1 (Draft)
4+
---
5+
6+
[Source](https://github.com/anansi-project/comicinfo/blob/main/drafts/v2.1/ComicInfo.xsd) on GitHub
7+
8+
```mdx-code-block
9+
import CodeBlock from '@theme/CodeBlock';
10+
import Schema from '!!raw-loader!../_remote/drafts/v2.1/ComicInfo.xsd';
11+
12+
<CodeBlock className="language-xml">{Schema}</CodeBlock>
13+
```

docs/introduction.md

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
---
2+
sidebar_position: 1
3+
label: Introduction
4+
---
5+
6+
# What is The Anansi Project?
7+
8+
The Anansi Project is a collection of software initiatives around comics & books.
9+
10+
## Initiatives
11+
12+
At the moment, the Anansi Project comprises 3 initiatives:
13+
14+
- [OPDS Page Streaming Extension](opds-pse/intro)
15+
- [the ComicInfo metadata format](comicinfo/intro)
16+
- target metadata model for comics & books
17+
18+
## A bit of history
19+
20+
The Anansi Project was started in August 2021 by gotson, the developer of Komga. The initial aim was to gather feedback
21+
and comments around comicbook metadata: the different formats and their limitations, the websites publishing metadata,
22+
and start discussing a new metadata model that would address all the griefs from existing solutions.
23+
24+
A lot of feedback was gathered, and a new data model has been drafted, but time being a scarce resource, this is still a
25+
work in progress.
26+
27+
In December 2022, following a request by a Komga user to enhance the OPDS feed, gotson decided to make some changes to
28+
the OPDS Page Streaming Extension. The 1.0 specification was written in 2014 for Ubooquity, but is now used by many
29+
application. Ubooquity was already inactive for a couple of years, so changing the specification would mean publish it
30+
somewhere. gotson already had a mirror of the 1.0 specification, in case the original page would suddenly go down.
31+
That's when the idea came to bring the OPDS PSE specification under the Anansi Project.
32+
33+
With OPDS PSE under a new home, it was obvious that we should also bring the ComicInfo schema specification under the
34+
Anansi Project umbrella too. gotson teamed up with majora2007, the developer of Kavita, to bring all of this together.

docs/opds-pse/_category_.json

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"label": "OPDS Page Streaming Extension",
3+
"position": 10,
4+
"link": {
5+
"type": "generated-index"
6+
}
7+
}

0 commit comments

Comments
 (0)