Fork me on GitHub

Herr Knedel/Suuria asioita konttien avulla: PDF-tiedostojen automaattinen merkitseminen Calibren ja Dockerin avulla

Created Thu, 27 Feb 2020 00:00:00 +0000 Modified Sat, 02 Apr 2022 15:55:06 +0000 Schwierigkeitsgrad: Für jeden machbar

198 Words

Oikeiden metatietojen lisääminen PDF-tiedostoihin voi usein olla työlästä. Itse lajittelen Heise IX -tililtä ladatut PDF-tiedostot yksityiseen Calibre-kirjastooni.

Koska tämä prosessi toistuu joka kuukausi, olen päätynyt seuraavaan asetukseen. Vedän vain uudet PDF-tiedostot kirjastooni. Olen luonut säiliön, joka saa Calibre-kirjastoni tilavuutena (-v …:/books). Tähän säiliöön olen asentanut seuraavat paketit:
x
+
Terminal

$ apt-get update && apt-get install -y xpdf calibre

Nyt skriptini etsii uusia PDF-tiedostoja, jotka vastaavat mallia “IX*.pdf”. Jokaisesta PDF-tiedostosta viedään 5 ensimmäistä sivua tekstinä. Sitten poistetaan kaikki sanat, jotka esiintyvät tässä sanaluettelossa: https://raw.githubusercontent.com/ChristianKnedel/heise-ix-reader-for-calibre/master/blacklist.txt.

#!/bin/bash
export LANG=C.UTF-8
mkdir /tmp/worker1/

find /books/ -type f -iname '*.pdf' -newermt 20201201 -print0 | 
while IFS= read -r -d '' line; do 
        calibreID=$(echo  "$line" | sed -r 's/.*\(([0-9]+)\).*/\1/g')
        
        echo "bearbeite $clearName"
        echo "id $calibreID";

        cp "$line" /tmp/worker1/test.pdf

        echo "ocr "
        pdftotext -f 0 -l 5 /tmp/worker1/test.pdf /tmp/worker1/tmp.txt

        echo "text aufbereitung"
        cat /tmp/worker1/tmp.txt  | grep  -i -F -w -v -f  /books/blacklist.txt | sed -r s/[^a-zA-ZäöüÄÖÜ]+//g | grep -iE '[A-Za-z]{2,212}' |  sed ':begin;$!N;s/\n/,/;tbegin' > /tmp/worker1/final.txt

        calibredb set_metadata  --with-library /books/ --field cover:"cover.jpg" --field tags:"$(cat /tmp/worker1/final.txt) " --field series:"Heise IX" --field languages:"Deutsch" --field authors:"Heise Verkag" $calibreID
        
        rm /tmp/worker1/*
done


Komennolla “calibredb set_metadata” asetan kaiken muun tunnisteiksi. Tulos näyttää tältä:

Skripti on saatavilla myös Githubissa: https://github.com/ChristianKnedel/heise-ix-reader-for-calibre .