]> zdv2.bktei.com Git - BK-2020-03.git/blobdiff - user/htmlz_to_cbz.sh
update(user/htmlz_to_cbz.sh): Use jdupes to deduplicate images
[BK-2020-03.git] / user / htmlz_to_cbz.sh
index bf535f05f5ca154c646f2fd7a0eff9e6fa102d07..b1c450e870a82db15134ddbd427a23186ac71263 100755 (executable)
@@ -1,13 +1,14 @@
 #!/bin/bash
 # Desc: Collects .jpg/jpeg files from a Calibre .htmlz file into .cbz files
 #!/bin/bash
 # Desc: Collects .jpg/jpeg files from a Calibre .htmlz file into .cbz files
-# Version: 0.0.1
+# Version: 0.1.0
+# Depends: jdupes 1.27.3
 
 for fin in ./*.htmlz; do
     (
         dout="${fin%.*}";
         unzip "$fin" -x / -d "$dout";
         pushd "$dout";
 
 for fin in ./*.htmlz; do
     (
         dout="${fin%.*}";
         unzip "$fin" -x / -d "$dout";
         pushd "$dout";
-        mapfile -t images < <(cat index.html  | grep -E "(.jpg|.jpeg)" | sed -E -e 's#.+(images/[0-9]+.(jpeg|jpg)).+#\1#');
+        mapfile -t images < <(cat index.html  | grep -E "(.jpg|.jpeg)" | sed -E -e 's#.+(images/[0-9]+.(jpeg|jpg)).+#\1#' | uniq; );
         dout="./output";
         if [[ -d "$dout" ]]; then
             rm -r "$dout";
         dout="./output";
         if [[ -d "$dout" ]]; then
             rm -r "$dout";
@@ -19,14 +20,19 @@ for fin in ./*.htmlz; do
             cp "$path" "$fnew";
             ((n++));
         done;
             cp "$path" "$fnew";
             ((n++));
         done;
+        # Add cover file if present
         if [[ -f cover.jpg ]]; then
         if [[ -f cover.jpg ]]; then
-            cp -n cover.jpg ./output/000000.jpg;
+            cp -n cover.jpg "${dout}/000000.jpg";
+        fi;
+        # Remove duplicate images
+        if command -v jdupes 1>/dev/random 2>&1; then
+            jdupes -dN "$dout";
         fi;
         faout="output.cbz";
         if [[ -f "$faout" ]]; then
             rm "$fout";
         fi;
         fi;
         faout="output.cbz";
         if [[ -f "$faout" ]]; then
             rm "$fout";
         fi;
-        zip -r output.cbz output;
+        zip -j output.cbz "$dout"/*;
     ) &
 done;
 wait && echo "STATUS:Finished." 1>&2;
     ) &
 done;
 wait && echo "STATUS:Finished." 1>&2;