diff -Nru keneric-scripts-0.7/debian/changelog keneric-scripts-0.7.3/debian/changelog --- keneric-scripts-0.7/debian/changelog 2023-12-09 13:30:00.000000000 +0000 +++ keneric-scripts-0.7.3/debian/changelog 2023-12-16 21:00:00.000000000 +0000 @@ -1,78 +1,21 @@ -keneric-scripts (0.7-0~noble) noble; urgency=low +keneric-scripts (0.7.3-0~noble) noble; urgency=low [english] + Creation of the metapackage keneric-scripts. + Separation of scripts and services. + Division of the keneric script into several entities (with automatic use of source). + Improved keneric script code. SearchInFolder function added. - Set up script sources. - Automated source loading with the SourceLoader function. - Improved log file system with (among others) LogFileMessage. - Create a package and its sub-packages. - Packages keneric-custom-icon keneric-delete-custom-icon added. + Log file system improved with (among others) LogFileMessage. + Use of keneric.conf config file. [français] + Création d'un meta paquet keneric-scripts. + Séparation des scripts et des services. + Division du script keneric en plusieurs entités (avec utilisation automatique de source). + Amélioration du code du script keneric. Ajout de la fonction SearchInFolder. - Mise en place des source des scripts. - Automatisation du chargement des sources avec la fonction SourceLoader. Amélioration du système du fichier log avec (en autre) LogFileMessage. - Création d'un paquet et de ses sous-paquets. - Ajout des paquets keneric-custom-icon keneric-delete-custom-icon. + Utilisation du fichier de config keneric.conf - -- Terence Belleguic Sat, 9 Dec 2023 15:30:00 +0200 - -keneric (0.6-0~noble) noble; urgency=low - - [english] - log file created in tmp folder. - - [français] - Création d'un fichier log dans le dossier tmp - - -- Terence Belleguic Thu, 7 Sep 2023 15:00:00 +0200 - -keneric (0.5-0~noble) noble; urgency=low - - [english] - Load of the thumbnail if exists. - - [français] - Chargement de la vignette si elle existe. - - -- Terence Belleguic Sun, 23 Jan 2022 20:00:00 +0200 - -keneric (0.4-0~noble) noble; urgency=low - - [english] - The temp thumbnail name is now the md5 hash of the final thumbnail file. - The executed script was renamed from stripPicture to keneric. - Use of conf file is now added. - - [français] - Le nom de la vignette (thumbnail) temporaire est maintenant le hash md5 de la vignette finale. - Le script exécuté a été renommé de stripPicture en keneric. - L'utilisation d'un fichier conf est maintenant ajouté. - - -- Terence Belleguic Tue, 18 Jan 2022 21:00:00 +0200 - - -keneric (0.3-1~noble) noble; urgency=low - - [english] - PPA sources created from https://github.com/yodor/keneric - - [français] - Création des sources PPA depuis https://github.com/yodor/keneric - - [original] - 2015-01-02: v0.3 - Unique name for the thumbnail picture - Script call arguments are: stripPicture - Thumbnail plugin is making the 'keneric' directory - - 2015-12-20: v0.2 - Drop UseThisPicture.png extension -> "/keneric/UseThisPicture" - Add mime to the script call arguments: stripPicture - Fix uninitialized ‘parent’ warning - - 2015-12-04: v0.1 - Initial release - - -- Terence Belleguic Sun, 19 Sep 2021 13:03:13 +0200 + -- Terence Belleguic Sat, 16 Dec 2023 23:00:00 +0200 diff -Nru keneric-scripts-0.7/debian/control keneric-scripts-0.7.3/debian/control --- keneric-scripts-0.7/debian/control 2023-12-09 13:30:00.000000000 +0000 +++ keneric-scripts-0.7.3/debian/control 2023-12-16 21:00:00.000000000 +0000 @@ -10,6 +10,22 @@ Priority: standard Section: libs +Package: keneric-scripts +Architecture: any +Depends: + ${shlibs:Depends}, + ${misc:Depends}, + keneric-base, + keneric-directory-desktop, + keneric-directory-nokeneric, + keneric-directory-disk, + keneric-directory-full, + keneric-directory-cover, + keneric-x-matroska-mkv-cover, + keneric-video-all +Homepage: https://github.com/Hizoka76/keneric/blob/master/scripts +Description: metapackage of the scripts of keneric + Package: keneric-base Architecture: any Depends: @@ -84,7 +100,7 @@ An image without transparency has a black border. Script name : keneric-directory-030-cover -Package: keneric-video-mkv-cover +Package: keneric-x-matroska-mkv-cover Architecture: any Depends: ${shlibs:Depends}, @@ -95,12 +111,11 @@ imagemagick Recommends: ffmpegthumbnailer -Homepage: https://github.com/Hizoka76/keneric/blob/master/scripts/keneric-video-010-mkv-cover +Homepage: https://github.com/Hizoka76/keneric/blob/master/scripts/keneric-x-matroska-010-mkv-cover Description: Use an image of a mkv file as thumbnail Searches for an image with the name cover|front|dvd first, otherwise uses the first image found. The image receives a different colored border depending on its resolution. - Script name : keneric-video-010-mkv-cover - Script name : keneric-application-010-mkv-cover + Script name : keneric-x-matroska-010-mkv-cover Package: keneric-video-all Architecture: any @@ -112,43 +127,3 @@ Homepage: https://github.com/Hizoka76/keneric/blob/master/scripts/keneric-video-999-all Description: ffmpegthumbnailer for all video file Script name : keneric-video-999-all - -Package: keneric-delete-custom-icon -Architecture: any -Depends: - ${shlibs:Depends}, - ${misc:Depends}, - keneric-base, - kdialog -Homepage: https://github.com/Hizoka76/keneric/tree/master/KenericDeleteCustomIcon -Description: Service menus to delete custom thumbnail - Service menus to delete custom thumbnail link created by Hizo. - -Package: keneric-custom-icon -Architecture: any -Depends: - ${shlibs:Depends}, - ${misc:Depends}, - keneric-base, - kdialog -Homepage: https://github.com/Hizoka76/keneric/tree/master/KenericCustomIcon -Description: Service menus to use a custom thumbnail - Service menus to choice an image as custom thumbnail created by Hizo. - -Package: keneric-hash-file -Architecture: any -Depends: - ${shlibs:Depends}, - ${misc:Depends} -Homepage: https://github.com/Hizoka76/keneric/tree/master/KenericHashFile -Description: Service menus for Dolphin (KDE) created by Hizo - Item's Thumbnails Remover: Service menu to remove the actual thumbnail used. - -Package: keneric-remove-thumbnails -Architecture: any -Depends: - ${shlibs:Depends}, - ${misc:Depends} -Homepage: https://github.com/Hizoka76/keneric/tree/master/KenericRemoveThumbnails -Description: Service menus for Dolphin (KDE) created by Hizo - Item's Thumbnails Remover: Service menu to remove the actual thumbnail used. diff -Nru keneric-scripts-0.7/debian/keneric-custom-icon.install keneric-scripts-0.7.3/debian/keneric-custom-icon.install --- keneric-scripts-0.7/debian/keneric-custom-icon.install 2023-12-09 13:30:00.000000000 +0000 +++ keneric-scripts-0.7.3/debian/keneric-custom-icon.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -desktop/keneric-custom-icon.desktop usr/share/kservices5/ServiceMenus -scripts/keneric-custom-icon usr/share/keneric diff -Nru keneric-scripts-0.7/debian/keneric-delete-custom-icon.install keneric-scripts-0.7.3/debian/keneric-delete-custom-icon.install --- keneric-scripts-0.7/debian/keneric-delete-custom-icon.install 2023-12-09 13:30:00.000000000 +0000 +++ keneric-scripts-0.7.3/debian/keneric-delete-custom-icon.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -desktop/keneric-delete-custom-icon.desktop usr/share/kservices5/ServiceMenus -scripts/keneric-delete-custom-icon usr/share/keneric diff -Nru keneric-scripts-0.7/debian/keneric-directory-disk.install keneric-scripts-0.7.3/debian/keneric-directory-disk.install --- keneric-scripts-0.7/debian/keneric-directory-disk.install 2023-12-09 13:30:00.000000000 +0000 +++ keneric-scripts-0.7.3/debian/keneric-directory-disk.install 2023-12-14 08:18:35.000000000 +0000 @@ -1,2 +1,2 @@ scripts/keneric-directory-010-disk usr/share/keneric -img/baseDisk.png usr/share/keneric +img/baseDisk.png usr/share/keneric/img diff -Nru keneric-scripts-0.7/debian/keneric-hash-file.install keneric-scripts-0.7.3/debian/keneric-hash-file.install --- keneric-scripts-0.7/debian/keneric-hash-file.install 2023-12-09 13:30:00.000000000 +0000 +++ keneric-scripts-0.7.3/debian/keneric-hash-file.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -desktop/keneric-hash-file.desktop usr/share/kservices5/ServiceMenus -scripts/keneric-hash-file usr/share/keneric diff -Nru keneric-scripts-0.7/debian/keneric-hash-file.links keneric-scripts-0.7.3/debian/keneric-hash-file.links --- keneric-scripts-0.7/debian/keneric-hash-file.links 2023-12-09 13:30:00.000000000 +0000 +++ keneric-scripts-0.7.3/debian/keneric-hash-file.links 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/share/keneric-hash-file usr/bin/keneric-hash-file diff -Nru keneric-scripts-0.7/debian/keneric-remove-thumbnails.install keneric-scripts-0.7.3/debian/keneric-remove-thumbnails.install --- keneric-scripts-0.7/debian/keneric-remove-thumbnails.install 2023-12-09 13:30:00.000000000 +0000 +++ keneric-scripts-0.7.3/debian/keneric-remove-thumbnails.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -desktop/keneric-remove-thumbnails.desktop usr/share/kservices5/ServiceMenus -scripts/keneric-remove-thumbnails usr/share/keneric -scripts/keneric-recursive-remove-thumbnails usr/share/keneric diff -Nru keneric-scripts-0.7/debian/keneric-remove-thumbnails.links keneric-scripts-0.7.3/debian/keneric-remove-thumbnails.links --- keneric-scripts-0.7/debian/keneric-remove-thumbnails.links 2023-12-09 13:30:00.000000000 +0000 +++ keneric-scripts-0.7.3/debian/keneric-remove-thumbnails.links 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -usr/share/keneric/keneric-remove-thumbnails usr/bin/keneric-remove-thumbnails -usr/share/keneric/keneric-recursive-remove-thumbnails usr/bin/keneric-recursive-remove-thumbnails diff -Nru keneric-scripts-0.7/debian/keneric-video-mkv-cover.docs keneric-scripts-0.7.3/debian/keneric-video-mkv-cover.docs --- keneric-scripts-0.7/debian/keneric-video-mkv-cover.docs 2023-12-09 13:30:00.000000000 +0000 +++ keneric-scripts-0.7.3/debian/keneric-video-mkv-cover.docs 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -readme/Video-mkv-Cover.png diff -Nru keneric-scripts-0.7/debian/keneric-video-mkv-cover.install keneric-scripts-0.7.3/debian/keneric-video-mkv-cover.install --- keneric-scripts-0.7/debian/keneric-video-mkv-cover.install 2023-12-09 13:30:00.000000000 +0000 +++ keneric-scripts-0.7.3/debian/keneric-video-mkv-cover.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -scripts/keneric-video-010-mkv-cover usr/share/keneric -scripts/keneric-application-010-mkv-cover usr/share/keneric -desktop/KenericVideoMKVType.desktop usr/share/kservices5 diff -Nru keneric-scripts-0.7/debian/keneric-x-matroska-mkv-cover.docs keneric-scripts-0.7.3/debian/keneric-x-matroska-mkv-cover.docs --- keneric-scripts-0.7/debian/keneric-x-matroska-mkv-cover.docs 1970-01-01 00:00:00.000000000 +0000 +++ keneric-scripts-0.7.3/debian/keneric-x-matroska-mkv-cover.docs 2023-12-14 09:08:16.000000000 +0000 @@ -0,0 +1 @@ +readme/Video-mkv-Cover.png diff -Nru keneric-scripts-0.7/debian/keneric-x-matroska-mkv-cover.install keneric-scripts-0.7.3/debian/keneric-x-matroska-mkv-cover.install --- keneric-scripts-0.7/debian/keneric-x-matroska-mkv-cover.install 1970-01-01 00:00:00.000000000 +0000 +++ keneric-scripts-0.7.3/debian/keneric-x-matroska-mkv-cover.install 2023-12-14 09:05:57.000000000 +0000 @@ -0,0 +1,2 @@ +scripts/keneric-x-matroska-010-mkv-cover usr/share/keneric +desktop/KenericVideoMKVType.desktop usr/share/kservices5 diff -Nru keneric-scripts-0.7/desktop/KenericVideoMKVType.desktop keneric-scripts-0.7.3/desktop/KenericVideoMKVType.desktop --- keneric-scripts-0.7/desktop/KenericVideoMKVType.desktop 2023-12-09 16:55:05.000000000 +0000 +++ keneric-scripts-0.7.3/desktop/KenericVideoMKVType.desktop 2023-12-14 09:30:18.000000000 +0000 @@ -3,7 +3,7 @@ Name=Keneric Video MKV Type X-KDE-ServiceTypes=ThumbCreator -MimeType=video/x-matroska;video/x-matroska-3d;application/x-matroska;application/x-matroska-3d; +MimeType=*/x-matroska;*/x-matroska-3d; X-KDE-Library=keneric CacheThumbnail=true diff -Nru keneric-scripts-0.7/desktop/keneric-custom-icon.desktop keneric-scripts-0.7.3/desktop/keneric-custom-icon.desktop --- keneric-scripts-0.7/desktop/keneric-custom-icon.desktop 2023-09-06 13:14:29.000000000 +0000 +++ keneric-scripts-0.7.3/desktop/keneric-custom-icon.desktop 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -[Desktop Entry] -Type=Service -X-KDE-ServiceTypes=KonqPopupMenu/Plugin -MimeType=all/allfiles;inode/directory; -Actions=_SEPARATOR_;keneric-custom-icon; -TryExec=keneric-custom-icon -X-KDE-Submenu=Keneric Actions - -[Desktop Action keneric-custom-icon] -Name=Choose a custom thumbnail -Name[fr]=Choisir une vignette personnalisée -Icon=link -Exec=keneric-custom-icon %U diff -Nru keneric-scripts-0.7/desktop/keneric-delete-custom-icon.desktop keneric-scripts-0.7.3/desktop/keneric-delete-custom-icon.desktop --- keneric-scripts-0.7/desktop/keneric-delete-custom-icon.desktop 2023-09-06 13:14:29.000000000 +0000 +++ keneric-scripts-0.7.3/desktop/keneric-delete-custom-icon.desktop 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -[Desktop Entry] -Type=Service -X-KDE-ServiceTypes=KonqPopupMenu/Plugin -MimeType=all/allfiles;inode/directory; -Actions=_SEPARATOR_;keneric-delete-custom-icon; -TryExec=keneric-delete-custom-icon -X-KDE-Submenu=Keneric Actions - -[Desktop Action keneric-delete-custom-icon] -Name=Remove the custom thumbnail link -Name[fr]=Supprimer le lien de la vignette personnalisée -Icon=remove-link -Exec=keneric-delete-custom-icon %U diff -Nru keneric-scripts-0.7/desktop/keneric-hash-file.desktop keneric-scripts-0.7.3/desktop/keneric-hash-file.desktop --- keneric-scripts-0.7/desktop/keneric-hash-file.desktop 2023-09-06 13:14:29.000000000 +0000 +++ keneric-scripts-0.7.3/desktop/keneric-hash-file.desktop 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -[Desktop Entry] -Type=Service -X-KDE-ServiceTypes=KonqPopupMenu/Plugin -MimeType=all/allfiles;inode/directory; -Actions=_SEPARATOR_;hash-md5-file; -X-KDE-Submenu=Keneric Actions -TryExec=keneric-hash-file - -[Desktop Action hash-md5-file] -Name=Copy the md5 hash of the file -Name[fr]=Copier le hash md5 du fichier -Icon=edit-copy -Exec=keneric-hash-file %u diff -Nru keneric-scripts-0.7/desktop/keneric-remove-thumbnails.desktop keneric-scripts-0.7.3/desktop/keneric-remove-thumbnails.desktop --- keneric-scripts-0.7/desktop/keneric-remove-thumbnails.desktop 2023-12-13 21:07:35.000000000 +0000 +++ keneric-scripts-0.7.3/desktop/keneric-remove-thumbnails.desktop 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -[Desktop Entry] -Type=Service -X-KDE-ServiceTypes=KonqPopupMenu/Plugin -MimeType=all/allfiles;inode/directory; -Actions=_SEPARATOR_;keneric-remove-thumbnails;keneric-recursif-remove-thumbnails; -TryExec=keneric-remove-thumbnails -X-KDE-Submenu=Keneric Actions - -[Desktop Action keneric-remove-thumbnails] -Name=Delete thumbnails of items -Name[fr]=Supprimer les vignettes des éléments -Icon=delete -Exec=keneric-remove-thumbnails %U - -[Desktop Action keneric-remove-thumbnails] -Name=Recursive delete thumbnails of items -Name[fr]=Supprimer recursivement les vignettes des éléments -Icon=delete -Exec=keneric-recursive-remove-thumbnails %U diff -Nru keneric-scripts-0.7/readme/README.md keneric-scripts-0.7.3/readme/README.md --- keneric-scripts-0.7/readme/README.md 2023-12-13 21:34:55.000000000 +0000 +++ keneric-scripts-0.7.3/readme/README.md 2023-12-17 19:15:07.000000000 +0000 @@ -66,18 +66,26 @@ Ce script est appelé par keneric.so qui lui fourni les arguments suivants : - Le fichier en attente de vignette. - Le mimetype du fichier en attente de vignette. - - L'emplacement et le nom de la vignette que doit fournir le script à keneric.so. + - L'emplacement et le nom de la vignette que doit être retourner à keneric.so. => Le nom de la vignette est le même que celui qui sera utilisé pour la vignette finale. -Ce script n'a pas d'extension afin de permettre l'utilisation de plusieurs langages comme python ou bash. - -Le script doit être déplacé dans un dossier du path : +Le script doit être placé dans un dossier du path : ``` echo "$PATH" ``` -Des exemples de scripts sont disponibles dans le dossier scripts des sources ici-présentes. +#### Scripts sourcés par keneric : +Afin de faciliter le développement de nouvelles possibilités, keneric source des sous-scripts. +Toutes les explications sur le fonctionnement des sous-scripts dans le [dossier script](scripts). + + +#### Fichier keneric.conf : +Fichier ~/.config/keneric.conf. +Il est utilisé par keneric.so et par le script keneric. + +Toutes les informations sur le fichier dans le [dossier config](config) + ### Exemples : #### Script Directory-Covert : Avec un fichier cover dans le dossier. @@ -97,14 +105,12 @@ ![Video-mkv-Cover](Video-mkv-Cover.png) -### Plus d'informations : - - Le dossier conf présente le fonctionnement du fichier de configuration et donne des exemples. +### Services : - Le dossier KenericHashFile présente un service menu copiant le hash d'un élément. - Le dossier KenericRemoveThumbnails présente un service menu supprimant les vignettes d'éléments. - Le dossier KenericCustomIcon présente un service menu facilitant l'utilisation de vignettes personnalisées. - Le dossier KenericDeleteCustomIcon présente un service menu facilitant la suppression de vignettes personnalisées. -## ## English version: If it doesn't work with the Dolphin browser, remove the [PreviewSettings] group from the ~/.config/dolphinrc file. @@ -183,7 +189,16 @@ echo "$PATH" ``` -Examples of scripts are available in the scripts folder of the sources here. +#### Scripts sourced by keneric : +To facilitate the development of new possibilities, keneric sources sub-scripts. +See [script folder](scripts) for a full explanation of how sub-scripts work. + +#### File keneric.conf : +~/.config/keneric.conf file. +It is used by keneric.so and by the keneric script. + +All information on the file in the [config folder](config). + ### Examples: #### Directory-Covert Script: With a cover file in the folder. @@ -199,8 +214,7 @@ The color of the outline adapts to the resolution of the video and in case of 3D. ![Video-mkv-Cover](Video-mkv-Cover.png) -### More information: - - The conf folder presents how the configuration file works and gives examples. +### Services: - The KenericHashFile folder presents a menu service copying the hash of an item. - The KenericRemoveThumbnails folder presents a menu service deleting thumbnails of items. - The KenericCustomIcon folder presents a menu service to facilitate the use of custom icons. diff -Nru keneric-scripts-0.7/scripts/keneric keneric-scripts-0.7.3/scripts/keneric --- keneric-scripts-0.7/scripts/keneric 2023-12-13 21:38:45.000000000 +0000 +++ keneric-scripts-0.7.3/scripts/keneric 2023-12-17 19:20:57.000000000 +0000 @@ -3,11 +3,15 @@ ############# ## Version ## ############# -# v0.7 - 2023/12/09 : +# v0.7 - 2023/12/16 : # Ajout de la fonction SearchInFolder. # Mise en place des source des scripts. # Automatisation du chargement des sources avec la fonction SourceLoader. # Amélioration du système du fichier log avec (en autre) LogFileMessage. + # Utilisation du fichier de config keneric.conf + # [general] + # LogEnabled=1 + # LogFile=/tmp/keneric.conf # v0.6 - 2023/09/07 : # Création d'un fichier log dans le dossier tmp. @@ -16,6 +20,7 @@ # Ajout des encadrés des mkv. + ################# ## Utilisation ## ################# @@ -33,6 +38,9 @@ # Nom de la vignette attendue Thumb="${ExportPicture##*/}" +# Variable indiquant que la vignette a été créée lorsqu'elle passe à 1 +ThumbCreated=0 + ################################### ## Emplacement du script keneric ## @@ -53,24 +61,6 @@ ExecFolder="$(cd -P "${Source%/*}" >/dev/null 2>&1 && pwd)" -################# -## Fichier log ## -################# -# Pour activer le mode log, il faut passer LogEnabled à 1 -# Attention ! Il ne faut pas laisser ce mode actif sans raison car cela va créer un gros fichier log ! -LogEnabled=0 -(( LogEnabled )) && LogRedirection="/tmp/keneric.log" || LogRedirection="/dev/null" - -echo -e "-----\n${ExecFolder}/keneric ${1} ${2} ${3} ${Thumb}" >> "${LogRedirection}" - - -################## -## Vérification ## -################## -# Si la vignette existe déjà, on ne fait rien, ce n'est pas sensé se produire -[[ -e "${HOME}/.cache/thumbnails/large/${Thumb}.png" || -e "${HOME}/.cache/thumbnails/normal/${Thumb}.png" ]] && exit - - ######################### ## Fonctions partagées ## ######################### @@ -122,6 +112,7 @@ function SourceLoader { # $1 : Base de nom des scripts, ex : folder, video + (( ThumbCreated )) && EndOfScript # Recherche tous les scripts de type keneric-$1- et les tri par nom ce qui permet de définir un ordre de priorité dans les scripts mapfile -td '' KenericScripts < <(find "${ExecFolder}" -mindepth 1 -maxdepth 1 -iname "keneric-${1}-[0-9][0-9][0-9]-*" -print0 | sort -uz) @@ -129,7 +120,9 @@ # Chargement de chaque script for KenericScript in "${KenericScripts[@]}" do + LogFileMessage "Sourcing of the script: ${KenericScript}" source "${KenericScript}" + (( ThumbCreated )) && EndOfScript done } @@ -139,16 +132,92 @@ { # $1 : Message # ${BASH_SOURCE[0]##*/} correspond au nom du script sourcé - echo "${BASH_SOURCE[0]##*/} : ${1}" >> "${LogRedirection}" + + local FromPipe + + # FromPipe : Si LogFileMessage appelé via un pipe + if [[ -z ${1} ]] + then + while read -r FromPipe + do + LogFileMessages+=("${FromPipe}") + done + + # $1 : Si LogFileMessage appelé directement avec un argument + else + LogFileMessages+=("${1}") + fi +} + + +# Arrêt du script +function EndOfScript +{ + # Envoi des logs en une fois pour éviter les mélanges + LogFileMessagesToReturn=$(printf "\n%s" "${LogFileMessages[@]}") + echo -e "${LogFileMessagesToReturn:1}" &>> "${LogRedirection}" + + exit 0 } +####################### +## Fichier de config ## +####################### +# Chargement des données du fichier de config +ConfigFile="${HOME}/.config/keneric.conf" + +# Lecture du fichier de config avec séparation des clés et de leurs valeurs +while IFS='=' read -r Key Value; do + # Si la clé et la valeur existe, si la clé ne commence pas par un # et si la variable portant le nom de la clé n'existe pas + if [[ ${Key} && ${Value} && ${Key:0:1} != "#" && -z ${!Key} ]] + then + # Déclaration de la variable et de sa valeur + declare "${Key}=${Value}" + fi +done < "${ConfigFile}" + + +################# +## Fichier log ## +################# +# Pour activer le mode log, il faut passer LogEnabled à 1 dans le fichier de config +# Attention ! Il ne faut pas laisser ce mode actif sans raison car cela va créer un gros fichier log ! +(( ${LogEnabled:-0} )) && LogRedirection="${LogRedirection:-/tmp/keneric.log}" || LogRedirection="/dev/null" + +# Liste qui contiendra les messages de log +LogFileMessages=() + +# Permet au dernier pipe d'être dans le shell actuel et de récupérer les retours des commandes via : command |& LogFileMessage +shopt -s lastpipe + +# Message log de base +LogFileMessage "-----" +LogFileMessage "script: ${ExecFolder}/keneric" +LogFileMessage "\$1 / FullName: ${FullName}" +LogFileMessage "\$2 / MimeType: ${MimeType}" +LogFileMessage "\$3 / ExportPicture: ${ExportPicture}" +LogFileMessage "Thumb: ${Thumb}" + + +################## +## Vérification ## +################## +# Si la vignette existe déjà, on ne fait rien, ce n'est pas sensé se produire +if [[ -e "${HOME}/.cache/thumbnails/large/${Thumb}.png" || -e "${HOME}/.cache/thumbnails/normal/${Thumb}.png" ]] +then + LogFileMessage "Thumbnail already exists." + exit 0 +fi + + ###################################### ## Chargement des scripts adéquates ## ###################################### # Chargement des scripts en se basant sur le MimeType # Ex : video/x-matroska => video-x-matroska => Recherche des scripts nommés keneric-video-x-matroska-[0-9][0-9][0-9]- # Ex : audio/ac3 => audio-ac3 => Recherche des scripts nommés keneric-audio-ac3-[0-9][0-9][0-9]- + SourceLoader "${MimeType//\//-}" # Chargement des scripts en se basant sur le 2e élément du MimeType @@ -159,34 +228,40 @@ # Chargement des scripts en se basant sur le 1er élément du MimeType # Ex : video/x-matroska => video => Recherche des scripts nommés keneric-video-[0-9][0-9][0-9]- # Ex : audio/ac3 => audio => Recherche des scripts nommés keneric-audio-[0-9][0-9][0-9]- -SourceLoader "${MimeType%%/*}" ;; +SourceLoader "${MimeType%%/*}" + +# Récapitulatif de l'ordre d'exécution : + # script-video-x-matroska-[0-9][0-9][0-9]- + # script-x-matroska-[0-9][0-9][0-9]- + # script-video-[0-9][0-9][0-9]- + +# Fin du script +EndOfScript ################################## ## Informations sur les scripts ## ################################## # Ils peuvent utiliser les fonctions partagées : - # Dependencies : À utiliser pour vérifier des dépendances avant d'utiliser les commandes liées. - # SearchInFolder : Utile pour la recherche d'un fichier dans un dossier - # LogFileMessage : Fonction d'envoi de message au fichier log s'il est actif. - # Ex de message : LogFileMessage "NoKeneric file found : ${Image}" - +# Dependencies : À utiliser pour vérifier des dépendances avant d'utiliser les commandes liées. +# SearchInFolder : Utile pour la recherche d'un fichier dans un dossier +# LogFileMessage : Fonction d'envoi de message au fichier log s'il est actif. +# Ex de message : LogFileMessage "NoKeneric file found : ${Image}" +# Ex de message d'erreur : convert ... |& LogFileMessage +# # Ils peuvent utiliser les variables globales : - # FullName : Adresse du fichier/dossier. - # MimeType : Mimetype du fichier/dossier. - # ExportPicture : Adresse de la vignette du fichier/dossier qui sera reprise par keneric. - # Thumb : Nom de la vignette attendue - # ExecFolder : Dossier du script keneric. - # LogRedirection : Fonction d'envoi de message retour de commande au fichier log s'il est actif. - # Ex de message d'erreur : convert ... 2>> "${LogRedirection}" - +# FullName : Adresse du fichier/dossier. +# MimeType : Mimetype du fichier/dossier. +# ExportPicture : Adresse de la vignette du fichier/dossier qui sera reprise par keneric. +# Thumb : Nom de la vignette attendue +# ExecFolder : Dossier du script keneric. +# LogRedirection : Sorite des retours des messages log. +# # Toujours déclarer les variables (avec leurs valeurs par défaut) avant de les tester afin d'éviter qu'un précédent script ait créés des variables de même nom. - +# # Un script n'ayant pas créé la vignette ne doit pas faire de return ou d'exit. -# Un script ayant créé la vignette doit l'avoir exporté vers $ExportPicture et faire un exit 0 afin d'arrêter keneric. - +# Un script ayant créé la vignette doit l'avoir exporté vers $ExportPicture et faire un ThumbCreated=1 afin de terminer le script keneric. +# # Il n'est pas obligatoire que les scripts soient exécutables. - -# Si le script touche un sous type de MimeType, il faut encadrer le code du script dans un IF qui vérifie le MimeType. - +# # Les noms des scripts sont importants car avant d'être chargés, ils sont triés par leur nom, ce qui crée un ordre d'exécution des scripts. diff -Nru keneric-scripts-0.7/scripts/keneric-application-010-mkv-cover keneric-scripts-0.7.3/scripts/keneric-application-010-mkv-cover --- keneric-scripts-0.7/scripts/keneric-application-010-mkv-cover 2023-12-09 14:43:04.000000000 +0000 +++ keneric-scripts-0.7.3/scripts/keneric-application-010-mkv-cover 1970-01-01 00:00:00.000000000 +0000 @@ -1,129 +0,0 @@ -#!/bin/bash - -############################## -## Version 0.1 - 2023/12/02 ## -############################## -# Affichage d'une image contenue dans les fichiers mkv avec mise en place d'un encadrement de couleur en fonction de la résolution de la vidéo. - -# Ne traite que les fichiers mkv, important à préciser car le script est chargé pour toutes les vidéos -if [[ "${MimeType}" == @(application/x-matroska|application/x-matroska-3d) ]] -then - # Pour les vidéos en 3D - if [[ "${MimeType}" == @(application/x-matroska-3d|video/x-matroska-3d) ]] - then - BorderColor="purple" - - # Pour les vidéos normales - else - # Couleur par défaut - BorderColor="white" - - # Utilisation de mkvinfo pour déterminer la résolution - if Dependencies mkvinfo - then - # Résolution de la vidéo, utilisation d'une liste en cas de vidéos multiples - Resolution=($(LANG=C.UTF-8 mkvinfo "${FullName}" | sed -n "/+ Pixel width:.*/ s/.* //p")) - - # Si c'est de la 3D malgré l'extension - if LANG=C.UTF-8 mkvinfo "${FullName}" | grep -q "Stereo mode" - then - BorderColor="purple" - - # Si c'est de la 4K - elif (( ${Resolution[0]} >= 2200 )) - then - BorderColor="black" - - # Si c'est de la HD - elif (( ${Resolution[0]} >= 1400 )) - then - BorderColor="navy" - - # Si c'est de la LD - elif (( ${Resolution[0]} < 1400 )) - then - BorderColor="grey" - fi - fi - fi - - LogFileMessage "BorderColor : ${BorderColor}" - - # Si les dépendances sont présentes, on va rechercher une image dans le mkv - if Dependencies jq mkvmerge mkvextract - then - # Récupération de la liste des fichiers joints - mapfile -td 'µ' jsonValues < <(mkvmerge -J "${FullName}" | jq -r '.attachments | to_entries|map("\(.value)µ")|.[]') - unset jsonValues["-1"] - - # Boucle recherchant certaines images - for FichierJoint in "${jsonValues[@]}" - do - # Récupération du nom de la piste - [[ "${FichierJoint}" =~ file_name.:.([^\"]+) ]] - Name="${BASH_REMATCH[1]}" - - # Récupération de l'id de la piste - [[ "${FichierJoint}" =~ id.:([0-9]+) ]] - Id="${BASH_REMATCH[1]}" - - # Si on a pas pu récupérer l'id du fichier joint - [[ -z ${Id} ]] && continue - - # Si c'est une image - if [[ "${Name,,}" == *.+(jpg|jpeg|png|webp|gif) ]] - then - # Si le fichier a un nom spécifique de cover, il sera utilisé - if [[ "${Name,,}" == +(cover|front|dvd).* ]] - then - ImageList=("${Id}:/tmp/${Name}") - break - - # Dans les autres cas, on le conserve et on continue à la recherche d'un cover - else - ImageList+=("${Id}:/tmp/${Name}") - fi - fi - done - - # Utilisation de la 1ere image trouvée (cover ou 1ere si pas cover) - if [[ ${ImageList[0]} ]] - then - LogFileMessage "ImageList[0] : ${ImageList[0]}" - - # Extraction de l'image - mkvextract attachments "${FullName}" ${ImageList[0]%%:*}:"${ImageList[0]#*:}" > /dev/null 2>> "${LogRedirection}" - - # Resize de l'image avec ajout d'une bordure grâce à convert - if Dependencies convert - then - convert -resize "256x256>" -bordercolor ${BorderColor} -border 5 "${ImageList[0]#*:}" "${ExportPicture}" 2>> "${LogRedirection}" - - # Suppression de l'image extraite - rm "${ImageList[0]#*:}" 2>> "${LogRedirection}" - - # Sinon, c'est un simple renommage de fichier sans encadrement - else - mv "${ImageList[0]#*:}" "${ExportPicture}" 2>> "${LogRedirection}" - fi - - # Si une vignette a été créée, on stoppe le script - exit 0 - fi - fi - - # Si les dépendances ne sont pas bonnes ou qu'il n'y a pas d'image dans le mkv, essaie d'utilisation de ffmpegthumbnailer - if Dependencies ffmpegthumbnailer - then - LogFileMessage "ffmpegthumbnailer used." - - # Extraction d'une image avec ffmpegthumbnailer - ffmpegthumbnailer -s 256 -i "${FullName}" -o "${ExportPicture}" 2>> "${LogRedirection}" - - # Ajout d'une bordure si convert est disponible - Dependencies convert && convert -bordercolor ${BorderColor} -border 5 "${ExportPicture}" "${ExportPicture}" 2>> "${LogRedirection}" - - # Si une vignette a été créée, on stoppe le script - exit 0 - fi -fi diff -Nru keneric-scripts-0.7/scripts/keneric-custom-icon keneric-scripts-0.7.3/scripts/keneric-custom-icon --- keneric-scripts-0.7/scripts/keneric-custom-icon 2023-12-10 20:28:20.000000000 +0000 +++ keneric-scripts-0.7.3/scripts/keneric-custom-icon 1970-01-01 00:00:00.000000000 +0000 @@ -1,138 +0,0 @@ -#!/bin/bash - - -########################################################## -## Suppression des vignettes des éléments sélectionnées ## -########################################################## - - -############# -## Version ## -############# -# v0.1 - 2022/01/23 - - -# Fonction traduisant l'url dans le bon format -function url_encode -{ - # $1 : url du fichier sans file:// - - # Si aucune url donnée - [[ -z "${1}" ]] && return 1 - - local LANG=C i Char Thumb - - # Traite les caractères de l'url - for (( i = 0; i < ${#1}; i++ )) - do - Char="${1:i:1}" - - # Si c'est un caractère à ne pas modifier - if [[ "${Char}" == [[:alnum:]-.,_~/:\(\)\&\!@\[\]\'] ]] - then - Thumb+="${Char}" - - # S'il faut encoder le caractère - else - Thumb+=$(printf '%%%02X' "'${Char}") - fi - done - - # Encodage de l'url - Thumb="$(echo -n "file://${Thumb}" | md5sum)" - - # Renvoie l'url encodée - echo "${Thumb%%[[:space:]]*}" - - return 0 -} - - -# Fonction d'affichage des erreurs -function ErrorMsg -{ - # $1 : Titre à afficher - # $2 : Message à afficher - - local Message - - if [[ $(which kdialog) ]] - then - kdialog \ - --title "${1}" \ - --icon "link" \ - --error "${2}" - fi -} - - -############################## -## Suppression de vignettes ## -############################## - -# Vérifie que le fichier de config existe et que le groupe icon existe -if ! grep -q '\[icons\]' "${HOME}/.config/keneric.conf" -then - echo "[icons]" >> "${HOME}/.config/keneric.conf" -fi - -# Traite la liste des fichiers -for Item in "${@}" -do - # Si le fichier n'existe pas - if [[ ! -e "${Item}" ]] - then - Message="Thumbnails remove" "The ${Item} file cannot be found!" - [[ "${LANG}" == fr* ]] && Message="Suppression des vignettes" "Le fichier ${Item} est introuvable !" - ErrorMsg "${Message}" - - continue - fi - - # Texte - Title="Choice of the icon of the ${Item##*/} file" - [[ "${LANG}" == fr* ]] && Title="Choix de l'icône du fichier ${Item##*/}" - - # Choix de l'icône - Icon=$(kdialog \ - --title "${Title}" \ - --getopenfilename \ - --multiple \ - --separate-output \ - --icon "tag-add") || continue - - # Hash de la vignette - Thumb="$(url_encode "${Item}")" - - # Si une icône personnalisée existe déjà - if grep -q "${Thumb}=" "${HOME}/.config/keneric.conf" - then - # Modification de l'icône personnalisée - sed -i "/${Thumb}=/ s/.*/${Thumb}=${Icon//\//\\/}/" "${HOME}/.config/keneric.conf" - else - # Ajout de l'icône personnalisée dans le fichier de config keneric.conf - sed -i "/\[icons\]/a ${Thumb}=${Icon}" "${HOME}/.config/keneric.conf" - fi -done - -# S'il y a le module de suppression des vignettes -if which keneric-remove-thumbnails &>/dev/null -then - keneric-remove-thumbnails "${@}" -fi - -# Message de fin de traitement -Title="Thumbnails remove" -Text="Removal of thumbnails completed." - -if [[ "${LANG}" == fr* ]] -then - Title="Suppression des vignettes" - Text="Suppression des vignettes terminée." -fi - -kdialog \ - --title "${Title}" \ - --icon "link" \ - --dontagain hizo-service-menus.cfg:KenericChooseIcon \ - --msgbox "${Text}" diff -Nru keneric-scripts-0.7/scripts/keneric-delete-custom-icon keneric-scripts-0.7.3/scripts/keneric-delete-custom-icon --- keneric-scripts-0.7/scripts/keneric-delete-custom-icon 2023-12-10 20:30:34.000000000 +0000 +++ keneric-scripts-0.7.3/scripts/keneric-delete-custom-icon 1970-01-01 00:00:00.000000000 +0000 @@ -1,119 +0,0 @@ -#!/bin/bash - - -########################################################## -## Suppression des vignettes des éléments sélectionnées ## -########################################################## - - -############# -## Version ## -############# -# v0.1 - 2022/01/23 - - -# Fonction traduisant l'url dans le bon format -function url_encode -{ - # $1 : url du fichier sans file:// - - # Si aucune url donnée - [[ -z "${1}" ]] && return 1 - - local LANG=C i Char Thumb - - # Traite les caractères de l'url - for (( i = 0; i < ${#1}; i++ )) - do - Char="${1:i:1}" - - # Si c'est un caractère à ne pas modifier - if [[ "${Char}" == [[:alnum:]-.,_~/:\(\)\&\!@\[\]\'] ]] - then - Thumb+="${Char}" - - # S'il faut encoder le caractère - else - Thumb+=$(printf '%%%02X' "'${Char}") - fi - done - - # Encodage de l'url - Thumb="$(echo -n "file://${Thumb}" | md5sum)" - - # Renvoie l'url encodée - echo "${Thumb%%[[:space:]]*}" - - return 0 -} - - -# Fonction d'affichage des erreurs -function ErrorMsg -{ - # $1 : Titre à afficher - # $2 : Message à afficher - - local Message - - if [[ $(which kdialog) ]] - then - kdialog \ - --title "${1}" \ - --icon "remove-link" \ - --error "${2}" - fi -} - - -############################## -## Suppression de vignettes ## -############################## - -# Vérifie que le fichier de config existe -if ! grep -q '\[icons\]' "${HOME}/.config/keneric.conf" -then - exit -fi - -# Traite la liste des fichiers -for Item in "${@}" -do - # Si le fichier n'existe pas - if [[ ! -e "${Item}" ]] - then - Message="Thumbnails link remove" "The ${Item} file cannot be found!" - [[ "${LANG}" == fr* ]] && "Suppression des liens des vignettes" "Le fichier ${Item} est introuvable !" - ErrorMsg "${Message}" - - continue - fi - - # Hash de la vignette - Thumb="$(url_encode "${Item}")" - - # Suppression du lien du fichier de config - sed -i "/${Thumb}=/d" "${HOME}/.config/keneric.conf" -done - -# S'il y a le module de suppression des vignettes -if which keneric-remove-thumbnails &>/dev/null -then - keneric-remove-thumbnails "${@}" -fi - -# Message de fin de traitement -Title="Thumbnails link remove" -Text="Removal of the custom thumbnails link completed." - -if [[ "${LANG}" == fr* ]] -then - Title="Suppression des liens des vignettes" - Text="Suppression des liens des vignettes personnalisées terminée." -fi - -kdialog \ - --title "${Title}" \ - --icon "remove-link" \ - --dontagain hizo-service-menus.cfg:KenericDeleteChooseIcon \ - --msgbox "${Text}" diff -Nru keneric-scripts-0.7/scripts/keneric-directory-001-nokeneric keneric-scripts-0.7.3/scripts/keneric-directory-001-nokeneric --- keneric-scripts-0.7/scripts/keneric-directory-001-nokeneric 2023-12-09 14:17:50.000000000 +0000 +++ keneric-scripts-0.7.3/scripts/keneric-directory-001-nokeneric 2023-12-14 13:58:43.000000000 +0000 @@ -12,5 +12,5 @@ if [[ -f "${Image}" ]] then LogFileMessage "NoKeneric file found : ${Image}" - exit 0 + ThumbCreated=1 fi diff -Nru keneric-scripts-0.7/scripts/keneric-directory-010-disk keneric-scripts-0.7.3/scripts/keneric-directory-010-disk --- keneric-scripts-0.7/scripts/keneric-directory-010-disk 2023-12-09 16:48:18.000000000 +0000 +++ keneric-scripts-0.7.3/scripts/keneric-directory-010-disk 2023-12-16 22:00:04.000000000 +0000 @@ -6,7 +6,7 @@ # Création de dossier CD pour les fichiers ~ disk.png, nécessite le fichier baseDisk.png # Adresse de l'image avec le CD -BaseDisk="${ExecFolder}/baseDisk.png" +BaseDisk="${ExecFolder}/img/baseDisk.png" # Recherche des fichiers disk avec une extension jpg|png|jpeg|webp Image=$(SearchInFolder "\.?disk.\(jpg\|png\|jpeg\|webp\)") @@ -17,11 +17,11 @@ LogFileMessage "disk file found : ${Image}" # Il faut obligatoirement mettre une extension png pour le convert - convert -size 228x228 canvas:transparent \( "${Image}" -resize 200!x200! -bordercolor black -border 2 \) -geometry +0+12 -composite "${BaseDisk}" -geometry +166+48 -composite -format png "${ExportPicture}.png" 2>> "${LogRedirection}" + convert -size 228x228 canvas:transparent \( "${Image}" -resize 200!x200! -bordercolor black -border 2 \) -geometry +0+12 -composite "${BaseDisk}" -geometry +166+48 -composite -format png "${ExportPicture}.png" |& LogFileMessage # Suppression de l'extension - mv "${ExportPicture}.png" "${ExportPicture}" 2>> "${LogRedirection}" + mv "${ExportPicture}.png" "${ExportPicture}" |& LogFileMessage - # Si une vignette a été créée, on stoppe le script - exit 0 + # Si une vignette a été créée, on l'indique + ThumbCreated=1 fi diff -Nru keneric-scripts-0.7/scripts/keneric-directory-020-full keneric-scripts-0.7.3/scripts/keneric-directory-020-full --- keneric-scripts-0.7/scripts/keneric-directory-020-full 2023-12-09 16:48:06.000000000 +0000 +++ keneric-scripts-0.7.3/scripts/keneric-directory-020-full 2023-12-16 21:59:20.000000000 +0000 @@ -14,8 +14,8 @@ LogFileMessage "disk file found : ${Image}" # Création d'une icône de taille max 512 px avec double bordure - convert -resize "512x512>" -bordercolor black -border 5 -bordercolor white -border 3 -colors 96 "${Image}" "${ExportPicture}" 2>> "${LogRedirection}" + convert -resize "512x512>" -bordercolor black -border 5 -bordercolor white -border 3 -colors 96 "${Image}" "${ExportPicture}" |& LogFileMessage - # Si une vignette a été créée, on stoppe le script - exit 0 + # Si une vignette a été créée, on l'indique + ThumbCreated=1 fi diff -Nru keneric-scripts-0.7/scripts/keneric-directory-030-cover keneric-scripts-0.7.3/scripts/keneric-directory-030-cover --- keneric-scripts-0.7/scripts/keneric-directory-030-cover 2023-12-13 21:37:56.000000000 +0000 +++ keneric-scripts-0.7.3/scripts/keneric-directory-030-cover 2023-12-16 21:59:16.000000000 +0000 @@ -56,24 +56,24 @@ if Dependencies ksvgtopng5:kde-cli-tools then LogFileMessage "svg : ksvgtopng5 used." - ksvgtopng5 256 256 "${Icon}" "/tmp/directory_icon.png" 2>> "${LogRedirection}" + ksvgtopng5 256 256 "${Icon}" "/tmp/directory_icon.png" |& LogFileMessage # Utilisation de rsvg-convert qui donne un résultat bien plus propre pour une taille moindre que convert elif Dependencies rsvg-convert:librsvg2-bin then LogFileMessage "svg : rsvg-convert used." - rsvg-convert "${Icon}" -f png -a -w 256 -o "/tmp/directory_icon.png" 2>> "${LogRedirection}" + rsvg-convert "${Icon}" -f png -a -w 256 -o "/tmp/directory_icon.png" |& LogFileMessage # Imagemagick donne un mauvais résultat... else LogFileMessage "svg : convert used." - convert -resize "256x256" -format png "${Icon}" "/tmp/directory_icon.png" 2>> "${LogRedirection}" + convert -resize "256x256" -format png "${Icon}" "/tmp/directory_icon.png" |& LogFileMessage fi # Sinon on redimensionne l'image en 256px si besoin else LogFileMessage "convert used." - convert -resize "256x256>" "${Icon}" "/tmp/directory_icon.png" 2>> "${LogRedirection}" + convert -resize "256x256>" "${Icon}" "/tmp/directory_icon.png" |& LogFileMessage fi # Arrêt du travail si l'icône temporaire n'existe pas @@ -99,7 +99,7 @@ # Il ne faut pas aplatir les images ayant un canal alpha avec colors [[ $(identify -format '%A' "${Image}") == "False" ]] && Arg="-bordercolor black -border 1 -colors 96" - convert -resize "212x124>" ${Arg} "${Image}" "/tmp/thumb_icon.png" 2>> "${LogRedirection}" + convert -resize "212x124>" ${Arg} "${Image}" "/tmp/thumb_icon.png" |& LogFileMessage if [[ -f "/tmp/thumb_icon.png" ]] then @@ -110,13 +110,13 @@ h=$(( (${DirectorySize#*x} - ${ImageSize#*x}) / 2 + 30 )) # Décalage de 30px pour bien le placer # Empilement des 2 images - composite -compose src-over "/tmp/thumb_icon.png" "/tmp/directory_icon.png" -geometry +${w}+${h} -format png "${ExportPicture}" 2>> "${LogRedirection}" + composite -compose src-over "/tmp/thumb_icon.png" "/tmp/directory_icon.png" -geometry +${w}+${h} -format png "${ExportPicture}" |& LogFileMessage # Suppression de l'image - rm "/tmp/thumb_icon.png" 2>> "${LogRedirection}" + rm "/tmp/thumb_icon.png" |& LogFileMessage - # Si une vignette a été créée, on stoppe le script - exit 0 + # Si une vignette a été créée, on l'indique + ThumbCreated=1 fi fi fi diff -Nru keneric-scripts-0.7/scripts/keneric-hash-file keneric-scripts-0.7.3/scripts/keneric-hash-file --- keneric-scripts-0.7/scripts/keneric-hash-file 2023-09-20 19:11:57.000000000 +0000 +++ keneric-scripts-0.7.3/scripts/keneric-hash-file 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -#!/bin/bash - -############################################# -## Copie dans le presse papier le hash md5 ## -############################################# - - -############# -## Version ## -############# -# v0.1 - 2022/01/23 - - -# Fonction traduisant l'url dans le bon format -function url_encode -{ - # $1 : url du fichier sans file:// - - # Si aucune url donnée - [[ -z "${1}" ]] && return 1 - - local LANG=C i Char Thumb - - # Traite les caractères de l'url - for (( i = 0; i < ${#1}; i++ )) - do - Char="${1:i:1}" - - # Si c'est un caractère à ne pas modifier - if [[ "${Char}" == [[:alnum:]-.,_~/:\(\)\&\!@\[\]\'] ]] - then - Thumb+="${Char}" - - # S'il faut encoder le caractère - else - Thumb+=$(printf '%%%02X' "'${Char}") - fi - done - - # Encodage de l'url - Thumb="$(echo -n "file://${Thumb}" | md5sum)" - - # Renvoie l'url encodée - echo "${Thumb%%[[:space:]]*}" - - return 0 -} - - -# Fonction d'affichage des erreurs -function ErrorMsg -{ - # $1 : Titre à afficher - # $2 : Message à afficher - - local Message - - if [[ $(which kdialog) ]] - then - kdialog \ - --title "${1}" \ - --icon "edit-copy" \ - --error "${2}" - fi -} - - -# Si le fichier n'existe pas -if [[ ! -e "${1}" ]] -then - if [[ "${LANG}" == fr* ]] - then - ErrorMsg "Hash du fichier" "Le fichier ${1} est introuvable !" - else - ErrorMsg "File hash" "The ${1} file cannot be found!" - fi - - exit -fi - -# Hash md5 du fichier -RealLink=$(readlink -e "${1}") -Hash=$(url_encode "${RealLink}") - -# Copie des liens en supprimant le dernier saut de ligne -if which qdbus &>/dev/null -then - qdbus org.kde.klipper /klipper org.kde.klipper.klipper.setClipboardContents "${Hash}" - -elif which xclip &>/dev/null -then - xclip -i -sel clipboard < <(echo -n "${Hash}") -fi diff -Nru keneric-scripts-0.7/scripts/keneric-recursive-remove-thumbnails keneric-scripts-0.7.3/scripts/keneric-recursive-remove-thumbnails --- keneric-scripts-0.7/scripts/keneric-recursive-remove-thumbnails 2023-11-08 16:02:25.000000000 +0000 +++ keneric-scripts-0.7.3/scripts/keneric-recursive-remove-thumbnails 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ -#!/bin/bash - - -########################################################## -## Suppression des vignettes des éléments sélectionnées ## -########################################################## - - -############# -## Version ## -############# -# v0.1 - 2022/01/23 - - -# Fonction traduisant l'url dans le bon format -function url_encode -{ - # $1 : url du fichier sans file:// - - # Si aucune url donnée - [[ -z "${1}" ]] && return 1 - - local LANG=C i Char Thumb - - # Traite les caractères de l'url - for (( i = 0; i < ${#1}; i++ )) - do - Char="${1:i:1}" - - # Si c'est un caractère à ne pas modifier - if [[ "${Char}" == [[:alnum:]-.,_~/:\(\)\&\!@\[\]\'] ]] - then - Thumb+="${Char}" - - # S'il faut encoder le caractère - else - Thumb+=$(printf '%%%02X' "'${Char}") - fi - done - - # Encodage de l'url - Thumb="$(echo -n "file://${Thumb}" | md5sum)" - - # Renvoie l'url encodée - echo "${Thumb%%[[:space:]]*}" - - return 0 -} - - -# Fonction de rafraîchissement des fenêtres Dolphin -function DolphinRefresh -{ - # Rechargement de la fenêtre Dolphin - if which qdbus &>/dev/null - then - for Fenetre in $(qdbus "org.kde.dolphin*") - do - qdbus "${Fenetre}" /dolphin/Dolphin_1/actions/view_redisplay trigger - done - fi -} - - -# Fonction d'affichage des erreurs -function ErrorMsg -{ - # $1 : Titre à afficher - # $2 : Message à afficher - - local Message - - if [[ $(which kdialog) ]] - then - kdialog \ - --title "${1}" \ - --icon "delete" \ - --error "${2}" - fi -} - - -############################## -## Suppression de vignettes ## -############################## -# Traite la liste des fichiers -for Item in "${@}" -do - # Si le fichier n'existe pas - if [[ ! -e "${Item}" ]] - then - if [[ "${LANG}" == fr* ]] - then - ErrorMsg "Suppression des vignettes" "Le fichier ${Item} est introuvable !" - else - ErrorMsg "Thumbnails remove" "The ${Item} file cannot be found!" - fi - - continue - fi - - Item=$(readlink -e "${Item}") - - while read -d '' SubItem - do - Thumb="$(url_encode "${SubItem}")" - - # Suppression des vignettes - find "${HOME}/.cache/thumbnails/" -name "${Thumb}*" -delete - done < <(find "${Item}" -print0) -done - -# Rafraîchissement de l'affichage de Dolphin -DolphinRefresh diff -Nru keneric-scripts-0.7/scripts/keneric-remove-thumbnails keneric-scripts-0.7.3/scripts/keneric-remove-thumbnails --- keneric-scripts-0.7/scripts/keneric-remove-thumbnails 2023-09-20 19:14:26.000000000 +0000 +++ keneric-scripts-0.7.3/scripts/keneric-remove-thumbnails 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ -#!/bin/bash - - -########################################################## -## Suppression des vignettes des éléments sélectionnées ## -########################################################## - - -############# -## Version ## -############# -# v0.1 - 2022/01/23 - - -# Fonction traduisant l'url dans le bon format -function url_encode -{ - # $1 : url du fichier sans file:// - - # Si aucune url donnée - [[ -z "${1}" ]] && return 1 - - local LANG=C i Char Thumb - - # Traite les caractères de l'url - for (( i = 0; i < ${#1}; i++ )) - do - Char="${1:i:1}" - - # Si c'est un caractère à ne pas modifier - if [[ "${Char}" == [[:alnum:]-.,_~/:\(\)\&\!@\[\]\'] ]] - then - Thumb+="${Char}" - - # S'il faut encoder le caractère - else - Thumb+=$(printf '%%%02X' "'${Char}") - fi - done - - # Encodage de l'url - Thumb="$(echo -n "file://${Thumb}" | md5sum)" - - # Renvoie l'url encodée - echo "${Thumb%%[[:space:]]*}" - - return 0 -} - - -# Fonction de rafraîchissement des fenêtres Dolphin -function DolphinRefresh -{ - # Rechargement de la fenêtre Dolphin - if which qdbus &>/dev/null - then - for Fenetre in $(qdbus "org.kde.dolphin*") - do - qdbus "${Fenetre}" /dolphin/Dolphin_1/actions/view_redisplay trigger - done - fi -} - - -# Fonction d'affichage des erreurs -function ErrorMsg -{ - # $1 : Titre à afficher - # $2 : Message à afficher - - local Message - - if [[ $(which kdialog) ]] - then - kdialog \ - --title "${1}" \ - --icon "delete" \ - --error "${2}" - fi -} - - -############################## -## Suppression de vignettes ## -############################## -# Traite la liste des fichiers -for Item in "${@}" -do - # Si le fichier n'existe pas - if [[ ! -e "${Item}" ]] - then - if [[ "${LANG}" == fr* ]] - then - ErrorMsg "Suppression des vignettes" "Le fichier ${Item} est introuvable !" - else - ErrorMsg "Thumbnails remove" "The ${Item} file cannot be found!" - fi - - continue - fi - - # Nom des vignettes - Item=$(readlink -e "${Item}") - Thumb="$(url_encode "${Item}")" - - # Suppression des vignettes - find "${HOME}/.cache/thumbnails/" -name "${Thumb}*" -delete -done - -# Rafraîchissement de l'affichage de Dolphin -DolphinRefresh diff -Nru keneric-scripts-0.7/scripts/keneric-video-010-mkv-cover keneric-scripts-0.7.3/scripts/keneric-video-010-mkv-cover --- keneric-scripts-0.7/scripts/keneric-video-010-mkv-cover 2023-12-11 21:12:06.000000000 +0000 +++ keneric-scripts-0.7.3/scripts/keneric-video-010-mkv-cover 1970-01-01 00:00:00.000000000 +0000 @@ -1,129 +0,0 @@ -#!/bin/bash - -############################## -## Version 0.1 - 2023/12/02 ## -############################## -# Affichage d'une image contenue dans les fichiers mkv avec mise en place d'un encadrement de couleur en fonction de la résolution de la vidéo. - -# Ne traite que les fichiers mkv, important à préciser car le script est chargé pour toutes les vidéos -if [[ "${MimeType}" == @(video/x-matroska|video/x-matroska-3d) ]] -then - # Pour les vidéos en 3D - if [[ "${MimeType}" == @(application/x-matroska-3d|video/x-matroska-3d) ]] - then - BorderColor="purple" - - # Pour les vidéos normales - else - # Couleur par défaut - BorderColor="white" - - # Utilisation de mkvinfo pour déterminer la résolution - if Dependencies mkvinfo:mkvtoolnix - then - # Résolution de la vidéo, utilisation d'une liste en cas de vidéos multiples - Resolution=($(LANG=C.UTF-8 mkvinfo "${FullName}" | sed -n "/+ Pixel width:.*/ s/.* //p")) - - # Si c'est de la 3D malgré l'extension - if LANG=C.UTF-8 mkvinfo "${FullName}" | grep -q "Stereo mode" - then - BorderColor="purple" - - # Si c'est de la 4K - elif (( ${Resolution[0]} >= 2200 )) - then - BorderColor="black" - - # Si c'est de la HD - elif (( ${Resolution[0]} >= 1400 )) - then - BorderColor="navy" - - # Si c'est de la LD - elif (( ${Resolution[0]} < 1400 )) - then - BorderColor="grey" - fi - fi - fi - - LogFileMessage "BorderColor : ${BorderColor}" - - # Si les dépendances sont présentes, on va rechercher une image dans le mkv - if Dependencies jq mkvmerge mkvextract - then - # Récupération de la liste des fichiers joints - mapfile -td 'µ' jsonValues < <(mkvmerge -J "${FullName}" | jq -r '.attachments | to_entries|map("\(.value)µ")|.[]') - unset jsonValues["-1"] - - # Boucle recherchant certaines images - for FichierJoint in "${jsonValues[@]}" - do - # Récupération du nom de la piste - [[ "${FichierJoint}" =~ file_name.:.([^\"]+) ]] - Name="${BASH_REMATCH[1]}" - - # Récupération de l'id de la piste - [[ "${FichierJoint}" =~ id.:([0-9]+) ]] - Id="${BASH_REMATCH[1]}" - - # Si on a pas pu récupérer l'id du fichier joint - [[ -z ${Id} ]] && continue - - # Si c'est une image - if [[ "${Name,,}" == *.+(jpg|jpeg|png|webp|gif) ]] - then - # Si le fichier a un nom spécifique de cover, il sera utilisé - if [[ "${Name,,}" == +(cover|front|dvd).* ]] - then - ImageList=("${Id}:/tmp/${Name}") - break - - # Dans les autres cas, on le conserve et on continue à la recherche d'un cover - else - ImageList+=("${Id}:/tmp/${Name}") - fi - fi - done - - # Utilisation de la 1ere image trouvée (cover ou 1ere si pas cover) - if [[ ${ImageList[0]} ]] - then - LogFileMessage "ImageList[0] : ${ImageList[0]}" - - # Extraction de l'image - mkvextract attachments "${FullName}" ${ImageList[0]%%:*}:"${ImageList[0]#*:}" > /dev/null 2>> "${LogRedirection}" - - # Resize de l'image avec ajout d'une bordure grâce à convert - if Dependencies convert:imagemagick - then - convert -resize "512x512>" -bordercolor ${BorderColor} -border 5 "${ImageList[0]#*:}" "${ExportPicture}" 2>> "${LogRedirection}" - - # Suppression de l'image extraite - rm "${ImageList[0]#*:}" 2>> "${LogRedirection}" - - # Sinon, c'est un simple renommage de fichier sans encadrement - else - mv "${ImageList[0]#*:}" "${ExportPicture}" 2>> "${LogRedirection}" - fi - - # Si une vignette a été créée, on stoppe le script - exit 0 - fi - fi - - # Si les dépendances ne sont pas bonnes ou qu'il n'y a pas d'image dans le mkv, essaie d'utilisation de ffmpegthumbnailer - if Dependencies ffmpegthumbnailer - then - LogFileMessage "ffmpegthumbnailer used." - - # Extraction d'une image avec ffmpegthumbnailer - ffmpegthumbnailer -s 256 -i "${FullName}" -o "${ExportPicture}" 2>> "${LogRedirection}" - - # Ajout d'une bordure si convert est disponible - Dependencies convert:imagemagick && convert -bordercolor ${BorderColor} -border 5 "${ExportPicture}" "${ExportPicture}" 2>> "${LogRedirection}" - - # Si une vignette a été créée, on stoppe le script - exit 0 - fi -fi diff -Nru keneric-scripts-0.7/scripts/keneric-video-999-all keneric-scripts-0.7.3/scripts/keneric-video-999-all --- keneric-scripts-0.7/scripts/keneric-video-999-all 2023-12-09 14:19:42.000000000 +0000 +++ keneric-scripts-0.7.3/scripts/keneric-video-999-all 2023-12-16 21:58:45.000000000 +0000 @@ -11,8 +11,8 @@ LogFileMessage "ffmpegthumbnailer used." # Extraction d'une image avec ffmpegthumbnailer - ffmpegthumbnailer -f -s 256 -i "${FullName}" -o "${ExportPicture}" 2>> "${LogRedirection}" + ffmpegthumbnailer -f -s 256 -i "${FullName}" -o "${ExportPicture}" |& LogFileMessage - # Si une vignette a été créée, on stoppe le script - exit 0 + # Si une vignette a été créée, on l'indique + ThumbCreated=1 fi diff -Nru keneric-scripts-0.7/scripts/keneric-x-matroska-010-mkv-cover keneric-scripts-0.7.3/scripts/keneric-x-matroska-010-mkv-cover --- keneric-scripts-0.7/scripts/keneric-x-matroska-010-mkv-cover 1970-01-01 00:00:00.000000000 +0000 +++ keneric-scripts-0.7.3/scripts/keneric-x-matroska-010-mkv-cover 2023-12-16 21:59:34.000000000 +0000 @@ -0,0 +1,126 @@ +#!/bin/bash + +############################## +## Version 0.1 - 2023/12/02 ## +############################## +# Affichage d'une image contenue dans les fichiers mkv avec mise en place d'un encadrement de couleur en fonction de la résolution de la vidéo. +# En utilisant x-matroska, cela fonctionne pour video/x-matroska et application/x-matroska + +# Pour les vidéos en 3D +if [[ "${MimeType##*/}" == "x-matroska-3d" ]] +then + BorderColor="purple" + +# Pour les vidéos normales +else + # Couleur par défaut + BorderColor="white" + + # Utilisation de mkvinfo pour déterminer la résolution + if Dependencies mkvinfo:mkvtoolnix + then + # Résolution de la vidéo, utilisation d'une liste en cas de vidéos multiples + Resolution=($(LANG=C.UTF-8 mkvinfo "${FullName}" | sed -n "/+ Pixel width:.*/ s/.* //p")) + + # Si c'est de la 3D malgré l'extension + if LANG=C.UTF-8 mkvinfo "${FullName}" | grep -q "Stereo mode" + then + BorderColor="purple" + + # Si c'est de la 4K + elif (( ${Resolution[0]} >= 2200 )) + then + BorderColor="black" + + # Si c'est de la HD + elif (( ${Resolution[0]} >= 1400 )) + then + BorderColor="navy" + + # Si c'est de la LD + elif (( ${Resolution[0]} < 1400 )) + then + BorderColor="grey" + fi + fi +fi + +LogFileMessage "BorderColor : ${BorderColor}" + +# Si les dépendances sont présentes, on va rechercher une image dans le mkv +if Dependencies jq mkvmerge mkvextract +then + # Récupération de la liste des fichiers joints + mapfile -td 'µ' jsonValues < <(mkvmerge -J "${FullName}" | jq -r '.attachments | to_entries|map("\(.value)µ")|.[]') + unset jsonValues["-1"] + + # Boucle recherchant certaines images + for FichierJoint in "${jsonValues[@]}" + do + # Récupération du nom de la piste + [[ "${FichierJoint}" =~ file_name.:.([^\"]+) ]] + Name="${BASH_REMATCH[1]}" + + # Récupération de l'id de la piste + [[ "${FichierJoint}" =~ id.:([0-9]+) ]] + Id="${BASH_REMATCH[1]}" + + # Si on a pas pu récupérer l'id du fichier joint + [[ -z ${Id} ]] && continue + + # Si c'est une image + if [[ "${Name,,}" == *.+(jpg|jpeg|png|webp|gif) ]] + then + # Si le fichier a un nom spécifique de cover, il sera utilisé + if [[ "${Name,,}" == +(cover|front|dvd).* ]] + then + ImageList=("${Id}:/tmp/${Name}") + break + + # Dans les autres cas, on le conserve et on continue à la recherche d'un cover + else + ImageList+=("${Id}:/tmp/${Name}") + fi + fi + done + + # Utilisation de la 1ere image trouvée (cover ou 1ere si pas cover) + if [[ ${ImageList[0]} ]] + then + LogFileMessage "ImageList[0] : ${ImageList[0]}" + + # Extraction de l'image + mkvextract attachments "${FullName}" ${ImageList[0]%%:*}:"${ImageList[0]#*:}" |& LogFileMessage + + # Resize de l'image avec ajout d'une bordure grâce à convert + if Dependencies convert:imagemagick + then + convert -resize "512x512>" -bordercolor ${BorderColor} -border 5 "${ImageList[0]#*:}" "${ExportPicture}" |& LogFileMessage + + # Suppression de l'image extraite + rm "${ImageList[0]#*:}" |& LogFileMessage + + # Sinon, c'est un simple renommage de fichier sans encadrement + else + mv "${ImageList[0]#*:}" "${ExportPicture}" |& LogFileMessage + fi + + # Si une vignette a été créée, on l'indique + ThumbCreated=1 + fi +fi + +# Si les dépendances ne sont pas bonnes ou qu'il n'y a pas d'image dans le mkv, essaie d'utilisation de ffmpegthumbnailer +if ((! ThumbCreated )) && Dependencies ffmpegthumbnailer +then + LogFileMessage "ffmpegthumbnailer used." + + # Extraction d'une image avec ffmpegthumbnailer + ffmpegthumbnailer -s 256 -i "${FullName}" -o "${ExportPicture}" |& LogFileMessage + + # Ajout d'une bordure si convert est disponible + Dependencies convert:imagemagick && convert -bordercolor ${BorderColor} -border 5 "${ExportPicture}" "${ExportPicture}" |& LogFileMessage + + # Si une vignette a été créée, on l'indique + ThumbCreated=1 +fi