Fork me on GitHub

Herr Knedel/Hal-hal hebat dengan kontainer: Secara otomatis menandai PDF dengan Calibre dan Docker

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

232 Words

Seringkali membosankan untuk menambahkan meta-info yang tepat ke PDF. Saya sendiri menyortir PDF yang diunduh dari akun langganan Heise IX saya ke perpustakaan Calibre pribadi saya.

Karena proses ini berulang setiap bulan, saya telah membuat pengaturan berikut ini. Saya hanya menyeret PDF baru saya ke perpustakaan saya. Saya telah membuat container yang mendapatkan pustaka Calibre saya sebagai volume (-v …:/books). Dalam container ini saya telah menginstal paket-paket berikut:
x
+
Terminal

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

Sekarang skrip saya mencari PDF baru yang cocok dengan pola “IX*.pdf”. Dari setiap PDF, 5 halaman pertama diekspor sebagai teks. Kemudian semua kata yang muncul pada daftar kata ini dihapus: 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


Dengan perintah “calibredb set_metadata”, saya menetapkan segala sesuatu yang lain sebagai tag. Hasilnya terlihat seperti ini:

Skrip ini juga tersedia di Github: https://github.com/ChristianKnedel/heise-ix-reader-for-calibre .