Răsfoiți Sursa

added pptx preview in lf

Noah Vogt 3 ani în urmă
părinte
comite
7b0f8068ba
4 a modificat fișierele cu 100 adăugiri și 3 ștergeri
  1. 3 0
      LICENSE
  2. 2 1
      dot-config/lf/lfrc
  3. 3 2
      dot-config/lf/scope
  4. 92 0
      local-bin/pptx2text

+ 3 - 0
LICENSE

@@ -1,3 +1,6 @@
+Copyright (c) 2016 E. Brian Welch
+Copyright (c) 2022 Noah Vogt
+
                     GNU GENERAL PUBLIC LICENSE
                        Version 3, 29 June 2007
 

+ 2 - 1
dot-config/lf/lfrc

@@ -42,7 +42,8 @@ cmd open ${{
 		;;
 	audio/*) mpv --audio-display=no $f ;;
 	video/*) setsid -f mpv $f -quiet >/dev/null 2>&1 ;;
-	application/pdf|application/vnd*|application/epub*) setsid -f zathura $fx >/dev/null 2>&1 ;;
+    application/vnd*) setsid -f libreoffice "$f" >/dev/null 2>&1;;
+	application/pdf|application/epub*) setsid -f zathura $fx >/dev/null 2>&1 ;;
 	application/pgp-encrypted) $EDITOR $fx ;;
 	xopp) devour xournalpp $f;;
     sc) sc-im $f;;

+ 3 - 2
dot-config/lf/scope

@@ -23,12 +23,13 @@ ifub() {
 
 case "$(file --dereference --brief --mime-type -- "$1")" in
 	image/*) image "$1" "$2" "$3" "$4" "$5" ;;
-	text/html) lynx -width="$4" -display_charset=utf-8 -dump "$1"  ;;
+	text/html) lynx -width="$4" -display_charset=utf-8 -dump "$1" ;;
 	text/troff) man ./ "$1" | col -b ;;
 	text/* | */xml | application/json) bat --terminal-width "$4" -f "$1" ;;
 	application/zip) zipinfo -2htz "$1" ;;
+    application/vnd*) pptx2text -v "$1" ;;
 	#application/zip) atool --list -- "$1" ;;
-        audio/* | application/octet-stream) mediainfo "$1" || exit 1;;
+        audio/* | application/octet-stream) mediainfo "$1" || exit 1 ;;
 	video/* )
 		CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | awk '{print $1}')"
 		[ ! -f "$CACHE" ] && ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0

+ 92 - 0
local-bin/pptx2text

@@ -0,0 +1,92 @@
+#!/bin/bash -f
+
+# command line bash shell script to convert the .pptx format to text
+
+pptx2txt_usage ()
+{
+  echo " "
+  echo "USAGE: pptx2txt [options] PPTX_FILENAME"
+  echo "$#"
+  echo " "
+  echo "OPTIONS:"
+  echo " "
+  echo "  -v, --verbose     verbose output including filename and slide number heading"
+  echo " "
+  echo "  -h, --help        display this help message"
+  echo " "
+  exit 1
+}
+
+error_exit ()
+{
+        echo " "
+        echo "ERROR: $1"
+        pptx2txt_usage
+}
+
+# initialize flags and arguments
+verbose=0
+help=0
+
+# loop over arguments
+while [[ $# > 0 ]]
+do
+key="$1"
+  case $key in
+    -v|--verbose)
+      verbose=1
+      ;;
+    -h|--help)
+      help=1
+      ;;
+    *)
+      if [ -e "$key"  ]
+      then
+        pptx_filename="$key"
+      else
+        error_exit "unknown option '$key'"
+      fi;
+      break
+      ;;
+  esac
+  shift
+done
+
+# dislpay help if requested
+if [ $help -eq 1  ]
+then
+  pptx2txt_usage
+fi;
+
+# detect empty PPTX_FILENAME
+if [ -z "$pptx_filename" ];
+then
+  error_exit "No PPTX_FILENAME name detected."
+else
+  pptx_filename="$1"
+fi;
+
+# find number of slides in pptx file
+nslides=`unzip -l "$pptx_filename" ppt/slides/slide*.xml | awk '{print $2}' | tail -1`
+
+# echo PPTX_FILENAME and TOTAL SLIDE COUNT if verbose
+if [ $verbose -eq 1 ]
+then
+  echo "PPTX_FILENAME = $pptx_filename"
+  echo "TOTAL SLIDE COUNT = $nslides"
+fi;
+
+# loop over slide index
+for idx in `seq 1 $nslides`;
+  do
+
+    if [ $verbose -eq 1 ]
+    then
+      echo " "
+      echo "SLIDE $idx OF $nslides"
+      echo " "
+    fi;
+
+    unzip -qc "$pptx_filename" ppt/slides/slide$idx.xml | perl -e 'while(<>) {  if (@list = ($_ =~ m/\<a:t\>(.+?)\<\/a:t\>/g)) { print "$_\n" for @list } }'
+
+done