scripts de gestion de fichiers depuis la méthodo novoid et PARA
This commit is contained in:
parent
4ba07f5542
commit
317fa59f67
17
bash/file_management/README.md
Normal file
17
bash/file_management/README.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Install file management
|
||||||
|
|
||||||
|
inspired by the work of Karl Voit
|
||||||
|
https://karl-voit.at/managing-digital-photographs/
|
||||||
|
|
||||||
|
install all these scripts to use geeqie and Novoid libs to manage your files.
|
||||||
|
check the install script to ensure it makes what you expect from it before running it.
|
||||||
|
``` bash
|
||||||
|
bash install.sh
|
||||||
|
```
|
||||||
|
# tldrlol
|
||||||
|
install all the things with this:
|
||||||
|
``` bash
|
||||||
|
git clone https://forge.chapril.org/tykayn/scripts
|
||||||
|
cd scripts/bash/file_management
|
||||||
|
bash install.sh
|
||||||
|
```
|
12
bash/file_management/add-tags.desktop
Normal file
12
bash/file_management/add-tags.desktop
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=filetags add
|
||||||
|
GenericName=filetags
|
||||||
|
Comment=
|
||||||
|
Exec=$HOME/areas/www/misc/vk-filetags-interactive-adding-wrapper-with-gnome-terminal.sh %F
|
||||||
|
Icon=
|
||||||
|
Terminal=true
|
||||||
|
Type=Application
|
||||||
|
Categories=Application;Graphics;
|
||||||
|
hidden=false
|
||||||
|
MimeType=image/*;video/*;image/mpo;image/thm
|
||||||
|
Categories=X-Geeqie;
|
12
bash/file_management/append-name.desktop
Normal file
12
bash/file_management/append-name.desktop
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=filetags append file name
|
||||||
|
GenericName=filetags
|
||||||
|
Comment=
|
||||||
|
Exec=$HOME/areas/www/misc/vk-filetags-interactive-append-file-name-wrapper-with-gnome-terminal.sh %F
|
||||||
|
Icon=
|
||||||
|
Terminal=true
|
||||||
|
Type=Application
|
||||||
|
Categories=Application;Graphics;
|
||||||
|
hidden=false
|
||||||
|
MimeType=image/*;video/*;image/mpo;image/thm
|
||||||
|
Categories=X-Geeqie;
|
12
bash/file_management/guess-filename.desktop
Normal file
12
bash/file_management/guess-filename.desktop
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=filetags guess file name
|
||||||
|
GenericName=filetags
|
||||||
|
Comment=
|
||||||
|
Exec=$HOME/areas/www/misc/vk-filetags-interactive-guess-filename-with-gnome-terminal.sh %F
|
||||||
|
Icon=
|
||||||
|
Terminal=true
|
||||||
|
Type=Application
|
||||||
|
Categories=Application;Graphics;
|
||||||
|
hidden=false
|
||||||
|
MimeType=image/*;video/*;image/mpo;image/thm
|
||||||
|
Categories=X-Geeqie;
|
90
bash/file_management/guess_filename.sh
Normal file
90
bash/file_management/guess_filename.sh
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
shopt -s globstar || exit
|
||||||
|
for PIC in **
|
||||||
|
do
|
||||||
|
# look only for jpg
|
||||||
|
if [[ "$PIC" =~ \.JPG$ ]] || [[ "$PIC" =~ \.jpg$ ]]; then
|
||||||
|
echo "file_$PIC"
|
||||||
|
# get the date and time from the tag DateTimeOriginal
|
||||||
|
DATE=$(exiftool -p '$DateTimeOriginal' "$PIC" | sed 's/[: ]//g')
|
||||||
|
LONGDATE=$(echo $DATE | sed -e 's/^\(.\{12\}\).*/\1/')
|
||||||
|
# check if DateTimeOriginal is 0000... OR empty
|
||||||
|
if [[ "$LONGDATE" != "000000000000" ]] && [[ -n "$LONGDATE" ]]; then
|
||||||
|
echo "datetimeoriginal_$LONGDATE"
|
||||||
|
# modify the attribute date with the info in the tag date
|
||||||
|
touch -t $LONGDATE "$PIC"
|
||||||
|
# customize date, in this case eliminate the time, getting only the date in 8 numbers and adding _
|
||||||
|
DATEMOD2=$(echo $DATE | sed -e 's/^\(.\{8\}\).*/\1_/')
|
||||||
|
echo "datemod2_$DATEMOD2"
|
||||||
|
# skip renaming if
|
||||||
|
# 8 numbers at beginning followed by _ or after IMG_ or P_ and followed by _ (already date stamped)
|
||||||
|
if [[ "$PIC" =~ [[:digit:]]{8}_.*$ ]] || [[ "$PIC" =~ IMG_[[:digit:]]{8}_.*$] ]] || [[ "$PIC" =~ P_[[:digit:]]{8}_.*$] ]]; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
# this will be done
|
||||||
|
|
||||||
|
filename=$(basename "$PIC")
|
||||||
|
echo "$filename"
|
||||||
|
echo "mv -i \""$PIC"\" \""$(dirname "$PIC")"/"$DATEMOD2""$filename"\""
|
||||||
|
#uncomment if you like it
|
||||||
|
mv -i "$PIC" "$(dirname "$PIC")/$DATEMOD2$filename"
|
||||||
|
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# get the date and time from the tag HistoryWhen
|
||||||
|
|
||||||
|
DATE=$(exiftool -p '$HistoryWhen' "$PIC" | sed 's/[: ]//g')
|
||||||
|
LONGDATE=$(echo $DATE | sed -e 's/^\(.\{12\}\).*/\1/')
|
||||||
|
|
||||||
|
# check if Historywhen is 0000... or empty
|
||||||
|
if [[ "$LONGDATE" != "000000000000" ]] && [[ -n "$LONGDATE" ]]; then
|
||||||
|
echo "historywhentag_$LONGDATE"
|
||||||
|
|
||||||
|
touch -t $LONGDATE "$PIC"
|
||||||
|
DATEMOD2B=$(echo $DATE | sed -e 's/^\(.\{8\}\).*/\1_/')
|
||||||
|
echo "datemod2B_$DATEMOD2B"
|
||||||
|
|
||||||
|
if [[ "$PIC" =~ [[:digit:]]{8}_.*$ ]] || [[ "$PIC" =~ IMG_[[:digit:]]{8}_.*$] ]] || [[ "$PIC" =~ P_[[:digit:]]{8}_.*$] ]]; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
# this will be done
|
||||||
|
filename=$(basename "$PIC")
|
||||||
|
echo "$filename"
|
||||||
|
echo "mv -i \""$PIC"\" \""$(dirname "$PIC")"/"$DATEMOD2B""$filename"\""
|
||||||
|
#uncomment if you like it
|
||||||
|
mv -i "$PIC" "$(dirname "$PIC")/$DATEMOD2B$filename"
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
# get the date and time from the tag tag filemodifydate
|
||||||
|
|
||||||
|
DATE=$(exiftool -p '$filemodifydate' "$PIC" | sed 's/[: ]//g')
|
||||||
|
LONGDATE=$(echo $DATE | sed -e 's/^\(.\{12\}\).*/\1/')
|
||||||
|
|
||||||
|
# check if filemodifydate is 0000... or empty
|
||||||
|
if [[ "$LONGDATE" != "000000000000" ]] && [[ -n "$LONGDATE" ]]; then
|
||||||
|
#echo "filemodifydatetag_$LONGDATE"
|
||||||
|
|
||||||
|
#touch -t $LONGDATE "$PIC"
|
||||||
|
DATEMOD2C=$(echo $DATE | sed -e 's/^\(.\{8\}\).*/\1_/')
|
||||||
|
echo "datemod2C_$DATEMOD2C"
|
||||||
|
|
||||||
|
if [[ "$PIC" =~ [[:digit:]]{8}_.*$ ]] || [[ "$PIC" =~ IMG_[[:digit:]]{8}_.*$] ]] || [[ "$PIC" =~ P_[[:digit:]]{8}_.*$] ]]; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
# this will be done
|
||||||
|
filename=$(basename "$PIC")
|
||||||
|
echo "$filename"
|
||||||
|
echo "mv -i \""$PIC"\" \""$(dirname "$PIC")"/"$DATEMOD2C""$filename"\""
|
||||||
|
#uncomment if you like it
|
||||||
|
mv -i "$PIC" "$(dirname "$PIC")/$DATEMOD2C$filename"
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
echo "Error, NO date available"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
50
bash/file_management/install.sh
Normal file
50
bash/file_management/install.sh
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "installation des outils de file management pour geequie"
|
||||||
|
|
||||||
|
|
||||||
|
if ! hash "exiftool" > /dev/null; then
|
||||||
|
echo "installer les paquets apt: apt install exiftool xfce4-terminal geeqie "
|
||||||
|
apt install exiftool xfce4-terminal geeqie gnome-terminal
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! hash "guessfilename" > /dev/null; then
|
||||||
|
echo "installer les paquets python : guessfilename filetags date2name appendfilename"
|
||||||
|
pip install guessfilename filetags date2name appendfilename
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# créer le dossier de scripts
|
||||||
|
if [ ! -d $HOME/areas/www/misc ]; then
|
||||||
|
echo "installer les dossiers PARA dans la home"
|
||||||
|
mkdir -p $HOME/areas/www/misc
|
||||||
|
mkdir -p $HOME/projects
|
||||||
|
mkdir -p $HOME/archives
|
||||||
|
mkdir -p $HOME/ressources
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ ! -d $HOME/areas/www/misc/novoid/filetags ]; then
|
||||||
|
git clone https://github.com/novoid/filetags.git $HOME/areas/www/misc/novoid
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
mkdir -p $HOME/.config/geeqie/applications
|
||||||
|
|
||||||
|
# copier les wrappers
|
||||||
|
echo "copier les wrappers dans $HOME/areas/www/misc"
|
||||||
|
cp vk-filetags*.sh $HOME/areas/www/misc
|
||||||
|
|
||||||
|
cp guess_filename.sh $HOME/areas/www/misc
|
||||||
|
cp vkorgheadingstats.sh $HOME/areas/www/misc
|
||||||
|
# rendre éxécutable les scripts
|
||||||
|
chmod u+x /home/cipherbliss/areas/www/misc/*.sh
|
||||||
|
|
||||||
|
# copier les scripts qui seront utilisés par geeqie
|
||||||
|
echo "copier les scripts qui seront utilisés par geeqie dans $HOME/.config/geeqie/applications/"
|
||||||
|
cp *.desktop $HOME/.config/geeqie/applications/
|
||||||
|
|
||||||
|
echo "ça c'est fait. plus qu'a configurer les raccourcis de ces scripts dans la partie plugins de Geeqie"
|
12
bash/file_management/remove-tags.desktop
Normal file
12
bash/file_management/remove-tags.desktop
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=filetags remove
|
||||||
|
GenericName=filetags
|
||||||
|
Comment=
|
||||||
|
Exec=$HOME/areas/www/misc/vk-filetags-interactive-removing-wrapper-with-gnome-terminal.sh %F
|
||||||
|
Icon=
|
||||||
|
Terminal=true
|
||||||
|
Type=Application
|
||||||
|
Categories=Application;Graphics;
|
||||||
|
hidden=false
|
||||||
|
MimeType=image/*;video/*;image/mpo;image/thm
|
||||||
|
Categories=X-Geeqie;
|
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
/usr/bin/gnome-terminal \
|
||||||
|
--geometry=73x5+330+5 \
|
||||||
|
--hide-menubar \
|
||||||
|
-x $HOME/areas/www/misc/novoid/filetags/__init__.py --interactive "${@}"
|
||||||
|
|
||||||
|
#end
|
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
/usr/bin/gnome-terminal \
|
||||||
|
--geometry=73x5+330+5 \
|
||||||
|
--hide-menubar \
|
||||||
|
-x $HOME/.local/bin/appendfilename "${@}"
|
||||||
|
|
||||||
|
#end
|
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
/usr/bin/gnome-terminal \
|
||||||
|
--geometry=73x5+330+5 \
|
||||||
|
--hide-menubar \
|
||||||
|
-x $HOME/.local/bin/guessfilename --interactive "${@}"
|
||||||
|
|
||||||
|
#end
|
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
/usr/bin/gnome-terminal \
|
||||||
|
--geometry=73x5+330+5 \
|
||||||
|
--hide-menubar \
|
||||||
|
-x $HOME/areas/www/misc/novoid/filetags/__init__.py --interactive --remove "${@}"
|
||||||
|
|
||||||
|
#end
|
Loading…
Reference in New Issue
Block a user