Skip to content

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

lubimyczytac-abs

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

Funkcjonalność

  • 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

Obrazy Docker

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

Szybki start — Docker Compose

# 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-first

Szybki start — Node.js lokalnie

npm install

# Tryb: najpierw audiobooki (port 3020)
node server_audiobooks_first.js

# Tryb: najpierw książki (port 3021)
node server_books_first.js

Budowanie obrazów Docker

# 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

Publikowanie na Docker Hub

# 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-first

API

Wyszukiwanie

GET /search?query=Tytuł&autor=Autor
Authorization: <API_KEY>

Przykład:

curl -H "Authorization: mojiklucz" \
  "http://localhost:3020/search?query=Pancerne+serce&autor=Jo+Nesbø"

Odpowiedź

{
  "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
    }
  ]
}

Pola odpowiedzi

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)

Zmienne środowiskowe

Zmienna Domyślna Opis
PORT 3020 / 3021 Port nasłuchiwania (zależnie od pliku)

Konfiguracja na Unraid — przez GUI (Add Container)

Krok 1: Dodaj container

  1. Otwórz Container Manager na Unraid
  2. Kliknij Add Container (przycisk +)
  3. 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

Krok 2: Porty

Pole Wartość
Port Mappings 3020:3020 (audiobook-first) lub 3021:3021 (books-first)

Krok 3: Zmienne środowiskowe (opcjonalnie)

Pole Wartość
Add another Path, Variable, Parameter or Label PORT = 3020 (lub 3021)

Krok 4: Restart policy

Pole Wartość
Restart policy always lub on-container start

Krok 5: Apply

Kliknij Apply — container zostanie pobrany z Docker Hub i uruchomiony.

Konfiguracja na Unraid — przez Docker Compose

Krok 1: Utwórz katalog konfiguracyjny

mkdir -p /mnt/user/appdata/lubimyczytac-abs

Krok 2: Utwórz plik docker-compose.yml

nano /mnt/user/appdata/lubimyczytac-abs/docker-compose.yml

Zawartość 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

Krok 3: Uruchom przez Container Manager

  1. Otwórz Container Manager na Unraid
  2. Kliknij Add Container → Add new container → From Compose
  3. Wskaż plik: /mnt/user/appdata/lubimyczytac-abs/docker-compose.yml
  4. Kliknij Apply

Krok 4: Alternatywnie przez SSH

cd /mnt/user/appdata/lubimyczytac-abs
docker compose up -d

Aktualizacja na Unraid

Przez GUI

  1. Otwórz Container Manager
  2. Kliknij na kontener
  3. Kliknij Stop
  4. Kliknij Remove
  5. Kliknij Update (container zostanie ponownie pobrany z Docker Hub)

Przez SSH

# 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

Konfiguracja w Audiobookshelf

  1. Otwórz Audiobookshelf → Settings → Metadata Providers
  2. 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

image

Skrypty automatyzacji

setup-git.ps1 — konfiguracja Git i push do GitHub

powershell -ExecutionPolicy Bypass -File setup-git.ps1

Parametry:

  • -UserName — nazwa użytkownika Git
  • -UserEmail — email użytkownika Git
  • -GitHubRepo — nazwa repozytorium na GitHub
  • -GitHubBranch — nazwa domyślnej gałęzi

push-to-dockerhub.ps1 — budowanie i push na Docker Hub

powershell -ExecutionPolicy Bypass -File push-to-dockerhub.ps1

Parametry:

  • -DockerHubUser — login Docker Hub
  • -ImageName — nazwa obrazu
  • -AudiobookTag — tag dla audiobook-first
  • -BooksTag — tag dla books-first

Struktura plików

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

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages