Audiobookshelf Custom Metadata Provider dla https://lubimyczytac.pl
Ulepszenia względem oryginału lakafior/lubimyczytac-abs
- Dwa osobne serwery: audiobook-first (port 3020) i books-first (port 3021)
- Pobieranie lektora (
narrator) i tłumacza (translator) - Rozszerzona ekstrakcja wydawcy (4 tryby: data-ga, icon-typewriter1, book__txt, JSON-LD)
- Dodatkowe źródła okładek
- Książki bez ISBN otrzymują penalty similarity
- Dla książek z similarity ≥ 0.95 i brak ISBN — fake ISBN=0 (przydatne z opcją "Skip matching books that already have an ISBN" w ABS)
- Obsługa błędu 429 (throttling)
- Skrypty automatyzacji:
setup-git.ps1,push-to-dockerhub.ps1
- Wyszukiwanie książek i audiobooków w katalogu Lubimyczytać.pl
- Pobieranie pełnych metadanych: tytuł, autor, lektor, tłumacz, wydawca, ISBN, gatunki, tagi, seria, ocena, opis, okładka, język, rok wydania, liczba stron
- Dwa tryby działania:
- server_audiobooks_first.js (port 3020) — najpierw audiobooki, fallback na książki
- server_books_first.js (port 3021) — najpierw książki, fallback na audiobooki
| Obraz | Tag | Port | Opis |
|---|---|---|---|
arkadi222/lubimyczytac-abs |
audiobook-first |
3020 | Najpierw audiobooki |
arkadi222/lubimyczytac-abs |
books-first |
3021 | Najpierw książki |
Docker Hub: https://hub.docker.com/r/arkadi222/lubimyczytac-abs/tags
# Uruchom oba serwery
docker compose up -d
# Lub tylko jeden z nich
docker compose up -d audiobooks-first # port 3020
docker compose up -d books-first # port 3021
# Zatrzymaj
docker compose down
# Wyświetl logi
docker compose logs -f audiobooks-first
docker compose logs -f books-firstnpm install
# Tryb: najpierw audiobooki (port 3020)
node server_audiobooks_first.js
# Tryb: najpierw książki (port 3021)
node server_books_first.js# Buduj audiobook-first
docker build -t arkadi222/lubimyczytac-abs:audiobook-first -f Dockerfile.audiobooks .
# Buduj books-first
docker build -t arkadi222/lubimyczytac-abs:books-first -f Dockerfile.books .
# Lub użyj docker-compose
docker compose build# Zaloguj się
docker login
# Lub użyj skryptu automatyzującego
powershell -ExecutionPolicy Bypass -File push-to-dockerhub.ps1
# Ręcznie
docker build -t arkadi222/lubimyczytac-abs:audiobook-first -f Dockerfile.audiobooks .
docker push arkadi222/lubimyczytac-abs:audiobook-first
docker build -t arkadi222/lubimyczytac-abs:books-first -f Dockerfile.books .
docker push arkadi222/lubimyczytac-abs:books-firstGET /search?query=Tytuł&autor=Autor
Authorization: <API_KEY>
Przykład:
curl -H "Authorization: mojiklucz" \
"http://localhost:3020/search?query=Pancerne+serce&autor=Jo+Nesbø"{
"matches": [
{
"title": "Pancerne serce",
"author": "Jo Nesbø",
"narrator": "Jan Aleksandrowicz-Kraska",
"publisher": "Audioteka, Wydawnictwo Dolnośląskie",
"publishedYear": "2018",
"description": "Opis książki...",
"cover": "https://...",
"isbn": "97883...",
"genres": ["kryminał", "thriller"],
"tags": ["tag1", "tag2"],
"series": [{"series": "Harry Hole", "sequence": "7"}],
"language": "pol",
"duration": 420,
"type": "audiobook",
"similarity": 0.95
}
]
}| Pole | Typ | Opis |
|---|---|---|
title |
string | Tytuł książki/audiobooka |
author |
string | Autor (lub autorzy połączeni przecinkiem) |
narrator |
string? | Lektor (tylko audiobooki) |
publisher |
string? | Wydawca |
publishedYear |
string? | Rok pierwszego wydania |
description |
string? | Opis bez tagów HTML |
cover |
string? | URL okładki |
isbn |
string? | ISBN (lub "0" dla high similarity bez ISBN) |
genres |
string[]? | Gatunki |
tags |
string[]? | Tagi |
series |
object[]? | Seria: {series: "Nazwa", sequence: "7"} |
language |
string? | Język (kodeks ISO: pol, eng) |
duration |
number? | Czas trwania w minutach (tylko audiobooki) |
type |
string | Typ: "book" lub "audiobook" |
similarity |
number | Wynik dopasowania (0-1) |
| Zmienna | Domyślna | Opis |
|---|---|---|
PORT |
3020 / 3021 |
Port nasłuchiwania (zależnie od pliku) |
- Otwórz Container Manager na Unraid
- Kliknij Add Container (przycisk +)
- Wypełnij pola:
Dla audiobook-first (port 3020):
| Pole | Wartość |
|---|---|
| Repository | arkadi222/lubimyczytac-abs:audiobook-first |
| Container name | lubimyczytac-audiobooks-first |
| Network type | bridge |
Dla books-first (port 3021):
| Pole | Wartość |
|---|---|
| Repository | arkadi222/lubimyczytac-abs:books-first |
| Container name | lubimyczytac-books-first |
| Network type | bridge |
| Pole | Wartość |
|---|---|
| Port Mappings | 3020:3020 (audiobook-first) lub 3021:3021 (books-first) |
| Pole | Wartość |
|---|---|
| Add another Path, Variable, Parameter or Label | PORT = 3020 (lub 3021) |
| Pole | Wartość |
|---|---|
| Restart policy | always lub on-container start |
Kliknij Apply — container zostanie pobrany z Docker Hub i uruchomiony.
mkdir -p /mnt/user/appdata/lubimyczytac-absnano /mnt/user/appdata/lubimyczytac-abs/docker-compose.ymlZawartość pliku:
version: "3.8"
services:
audiobooks-first:
image: arkadi222/lubimyczytac-abs:audiobook-first
container_name: lubimyczytac-audiobooks-first
restart: unless-stopped
ports:
- "3020:3020"
environment:
- PORT=3020
books-first:
image: arkadi222/lubimyczytac-abs:books-first
container_name: lubimyczytac-books-first
restart: unless-stopped
ports:
- "3021:3021"
environment:
- PORT=3021- Otwórz Container Manager na Unraid
- Kliknij Add Container → Add new container → From Compose
- Wskaż plik:
/mnt/user/appdata/lubimyczytac-abs/docker-compose.yml - Kliknij Apply
cd /mnt/user/appdata/lubimyczytac-abs
docker compose up -d- Otwórz Container Manager
- Kliknij na kontener
- Kliknij Stop
- Kliknij Remove
- Kliknij Update (container zostanie ponownie pobrany z Docker Hub)
# Pobierz najnowsze obrazy
docker pull arkadi222/lubimyczytac-abs:audiobook-first
docker pull arkadi222/lubimyczytac-abs:books-first
# Zrestartuj kontenery
docker restart lubimyczytac-audiobooks-first
docker restart lubimyczytac-books-first- Otwórz Audiobookshelf → Settings → Metadata Providers
- Dodaj niestandardowego dostawcę:
| Pole | Wartość |
|---|---|
| Type | Custom |
| Name | Lubimyczytac |
| Base URL | http://<IP_UNRAID>:3020 (audiobook-first) lub http://<IP_UNRAID>:3021 (books-first) |
| Auth Header | Authorization |
| Auth Token | Twój klucz API |
powershell -ExecutionPolicy Bypass -File setup-git.ps1Parametry:
-UserName— nazwa użytkownika Git-UserEmail— email użytkownika Git-GitHubRepo— nazwa repozytorium na GitHub-GitHubBranch— nazwa domyślnej gałęzi
powershell -ExecutionPolicy Bypass -File push-to-dockerhub.ps1Parametry:
-DockerHubUser— login Docker Hub-ImageName— nazwa obrazu-AudiobookTag— tag dla audiobook-first-BooksTag— tag dla books-first
PROJECTS/PNy/abs/
├── Dockerfile # Domyślny Dockerfile (audiobook-first)
├── Dockerfile.audiobooks # Obraz Docker (audiobook-first, port 3020)
├── Dockerfile.books # Obraz Docker (books-first, port 3021)
├── docker-compose.yml # Konfiguracja Docker Compose
├── server_audiobooks_first.js # Serwer (audiobook-first, port 3020)
├── server_books_first.js # Serwer (books-first, port 3021)
├── setup-git.ps1 # Skrypt konfiguracji Git i push do GitHub
├── push-to-dockerhub.ps1 # Skrypt budowania i push na Docker Hub
├── package.json
├── package-lock.json
├── .gitignore
└── README.md
