- Perl 54.8%
- HTML 23.4%
- JavaScript 15.8%
- CSS 4.5%
- Shell 0.7%
- Other 0.8%
If the grouptanks parameter is true, then search results may include a mix of archives and tankoubons. Tankoubons have different metadata handling than archives, and so the existing sorting code didn't handle it correctly. There's a question here about how sorting by a prefix should be handled. In some places, tankoubons are considered to have a tagset equal to the union of all their constituent archives. This is sensible for bare tags, but problematic for metadata tags with prefixes. In particular, if a tankoubon has multiple tags prefixed "artist" etc, then a search sorting on the artist prefix is ambiguous. (This problem also applies to archives that simply have more than one artist: tag in their native tagset.) Currently, the handling of this case for archives is that the system picks an arbitrary one of the matching tags to use for the sort key. (Specifically, it's the first one in the serialized tag string.) Tag string serialization has no defined order, so which tag is selected will depend on the source of the tag and the order in which operations are executed. It's not clear how this problem is correctly handled, in the general case. For this particular bug fix, I just punt: when sorting by a tag prefix, tankoubons use only the tank's native set of tags, ignoring any tags on the constituent archives. Co-authored-by: alethiophile <mail@alethiophile.dev> |
||
|---|---|---|
| .devcontainer | ||
| .github | ||
| lib | ||
| locales/template | ||
| log | ||
| public | ||
| script | ||
| templates | ||
| tests | ||
| tools | ||
| .dockerignore | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| .perlcriticrc | ||
| .perltidyrc | ||
| CONTRIBUTING.md | ||
| COPYING | ||
| eslint.config.mjs | ||
| lrr.conf | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
LANraragi
Open source server for archival of comics/manga, running on Mojolicious + Redis.
💬 Talk with other fellow LANraragi Users on Discord or GitHub Discussions
📄 Documentation | ⏬ Download | 🎞 Demo | 🪟🌃 Windows Nightlies | 💵 Sponsor Development | 🉐 Buy Stickers!
LANraragi uses Weblate for translation hosting.
Screenshots
| Main Page, Thumbnail View | Main Page, List View |
|---|---|
![]() |
| Archive Reader | Reader with overlay |
|---|---|
![]() |
![]() |
| Configuration | Plugin Configuration |
|---|---|
![]() |
![]() |
Features
-
Stores your comics in archive format. (zip/rar/targz/lzma/7z/xz/cbz/cbr/pdf supported, barebones support for epub)
-
Read archives directly from your web browser: the server reads from within compressed files using temporary folders.
-
Read your archives in dedicated reader software using the built-in OPDS Catalog (now with PSE support!)
-
Use the Client API to interact with LANraragi from other programs (Available for many platforms!)
-
Two different user interfaces : compact archive list with thumbnails-on-hover, or thumbnail view.
-
Localized interface with English, Chinese, and more to come.
-
Choose from 5 preinstalled responsive library styles, or add your own with CSS.
-
Full Tag support with Namespaces: Add your own or import them from other sources using Plugins.
-
Store archives in either arbitrary or dynamic Categories to sort your Library easily
-
Import metadata using Plugins automatically when archives are added to LANraragi.
-
Download archives from the Internet directly to the server, while using the aforementioned automatic metadata import
-
Scan for duplicates within your saved archives
-
Backup your database as JSON to carry your tags over to another LANraragi instance.




