Fork me on GitHub

Herr Knedel/Kapsayıcılarla harika şeyler: Calibre ve Docker ile PDF'leri otomatik olarak etiketleme

Created Thu, 27 Feb 2020 00:00:00 +0000 Modified Sat, 01 Oct 2022 10:41:32 +0000 Schwierigkeitsgrad: Für jeden machbar

205 Words

PDF’lere doğru meta bilgileri eklemek genellikle sıkıcı olabilir. Heise IX abonelik hesabımdan indirdiğim PDF’leri özel Calibre kütüphanemde kendim sıralıyorum.

Bu süreç her ay tekrarlandığı için aşağıdaki düzeni oluşturdum. Yalnızca yeni PDF’lerimi kitaplığıma sürüklüyorum. Calibre kitaplığımı bir birim olarak alan bir kapsayıcı oluşturdum (-v …:/books). Bu konteynerde aşağıdaki paketleri kurdum:
x
+
Terminal

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

Şimdi komut dosyam “IX*.pdf” kalıbıyla eşleşen yeni PDF’leri arıyor. Her PDF’den ilk 5 sayfa metin olarak dışa aktarılır. Ardından bu kelime listesinde görünen tüm kelimeler kaldırılır: 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


“calibredb set_metadata” komutu ile diğer her şeyi etiket olarak ayarladım. Sonuç şöyle görünür:

Komut dosyası Github’da da mevcuttur: https://github.com/ChristianKnedel/heise-ix-reader-for-calibre .