diff -Nru keneric-0.6.8/CMakeLists.txt keneric-0.6.10/CMakeLists.txt --- keneric-0.6.8/CMakeLists.txt 2023-09-06 13:14:29.000000000 +0000 +++ keneric-0.6.10/CMakeLists.txt 2023-12-11 20:49:37.000000000 +0000 @@ -15,9 +15,7 @@ find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Gui) find_package(KF5 REQUIRED COMPONENTS KIO) -include_directories( - ${CMAKE_CURRENT_BINARY_DIR} - ) +include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_library(keneric MODULE keneric.cpp) diff -Nru keneric-0.6.8/debian/changelog keneric-0.6.10/debian/changelog --- keneric-0.6.8/debian/changelog 2023-12-09 13:30:00.000000000 +0000 +++ keneric-0.6.10/debian/changelog 2023-12-09 13:30:00.000000000 +0000 @@ -1,21 +1,9 @@ -keneric (0.6.8-0~noble) noble; urgency=low +keneric (0.6.10-0~noble) noble; urgency=low [english] - 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. Path ~/.local/bin added. [français] - 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. Ajout du path ~/.local/bin. -- Terence Belleguic Sat, 9 Dec 2023 15:30:00 +0200 diff -Nru keneric-0.6.8/debian/keneric-application-mkv-cover.install keneric-0.6.10/debian/keneric-application-mkv-cover.install --- keneric-0.6.8/debian/keneric-application-mkv-cover.install 2023-12-09 13:30:00.000000000 +0000 +++ keneric-0.6.10/debian/keneric-application-mkv-cover.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -scripts/keneric-application-010-mkv-cover usr/share/keneric -desktop/KenericVideoMKVType.desktop usr/share/kservices5 diff -Nru keneric-0.6.8/debian/keneric-base.install keneric-0.6.10/debian/keneric-base.install --- keneric-0.6.8/debian/keneric-base.install 2023-12-09 13:30:00.000000000 +0000 +++ keneric-0.6.10/debian/keneric-base.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -scripts/keneric usr/share/keneric diff -Nru keneric-0.6.8/debian/keneric-base.links keneric-0.6.10/debian/keneric-base.links --- keneric-0.6.8/debian/keneric-base.links 2023-12-09 13:30:00.000000000 +0000 +++ keneric-0.6.10/debian/keneric-base.links 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -/usr/share/keneric /usr/bin/keneric diff -Nru keneric-0.6.8/debian/keneric-custom-icon.install keneric-0.6.10/debian/keneric-custom-icon.install --- keneric-0.6.8/debian/keneric-custom-icon.install 2023-12-09 13:30:00.000000000 +0000 +++ keneric-0.6.10/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-0.6.8/debian/keneric-delete-custom-icon.install keneric-0.6.10/debian/keneric-delete-custom-icon.install --- keneric-0.6.8/debian/keneric-delete-custom-icon.install 2023-12-09 13:30:00.000000000 +0000 +++ keneric-0.6.10/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-0.6.8/debian/keneric-folder-cover.install keneric-0.6.10/debian/keneric-folder-cover.install --- keneric-0.6.8/debian/keneric-folder-cover.install 2023-12-09 13:30:00.000000000 +0000 +++ keneric-0.6.10/debian/keneric-folder-cover.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -scripts/keneric-folder-030-cover usr/share/keneric -desktop/KenericFolderType.desktop usr/share/kservices5 diff -Nru keneric-0.6.8/debian/keneric-folder-disk.install keneric-0.6.10/debian/keneric-folder-disk.install --- keneric-0.6.8/debian/keneric-folder-disk.install 2023-12-09 13:30:00.000000000 +0000 +++ keneric-0.6.10/debian/keneric-folder-disk.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -scripts/keneric-folder-010-disk usr/share/keneric -img/baseDisk.png usr/share/keneric -desktop/KenericFolderType.desktop usr/share/kservices5 diff -Nru keneric-0.6.8/debian/keneric-folder-full.install keneric-0.6.10/debian/keneric-folder-full.install --- keneric-0.6.8/debian/keneric-folder-full.install 2023-12-09 13:30:00.000000000 +0000 +++ keneric-0.6.10/debian/keneric-folder-full.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -scripts/keneric-folder-020-full usr/share/keneric -desktop/KenericFolderType.desktop usr/share/kservices5 diff -Nru keneric-0.6.8/debian/keneric-folder-nokeneric.install keneric-0.6.10/debian/keneric-folder-nokeneric.install --- keneric-0.6.8/debian/keneric-folder-nokeneric.install 2023-12-09 13:30:00.000000000 +0000 +++ keneric-0.6.10/debian/keneric-folder-nokeneric.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -scripts/keneric-folder-001-nokeneric usr/share/keneric -desktop/KenericFolderType.desktop usr/share/kservices5 diff -Nru keneric-0.6.8/debian/keneric-video-all.install keneric-0.6.10/debian/keneric-video-all.install --- keneric-0.6.8/debian/keneric-video-all.install 2023-12-09 13:30:00.000000000 +0000 +++ keneric-0.6.10/debian/keneric-video-all.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -scripts/keneric-video-999-all usr/share/keneric -desktop/KenericVideoType.desktop usr/share/kservices5 diff -Nru keneric-0.6.8/debian/keneric-video-mkv-cover.install keneric-0.6.10/debian/keneric-video-mkv-cover.install --- keneric-0.6.8/debian/keneric-video-mkv-cover.install 2023-12-09 13:30:00.000000000 +0000 +++ keneric-0.6.10/debian/keneric-video-mkv-cover.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -scripts/keneric-video-010-mkv-cover usr/share/keneric -desktop/KenericVideoMKVType.desktop usr/share/kservices5 Binary files /tmp/tmpaa69q5k0/MuijqrUkqd/keneric-0.6.8/img/baseDisk.png and /tmp/tmpaa69q5k0/JRpEU7BVEt/keneric-0.6.10/img/baseDisk.png differ diff -Nru keneric-0.6.8/keneric.cpp keneric-0.6.10/keneric.cpp --- keneric-0.6.8/keneric.cpp 2023-12-10 21:37:52.000000000 +0000 +++ keneric-0.6.10/keneric.cpp 2023-12-11 13:38:11.000000000 +0000 @@ -33,6 +33,12 @@ // the file needs to be in foldersAuthorized but not in foldersProhibited. +// 2023/12/09 - v0.7 by Terence Belleguic +// Add path command : ~/.local/bin/ + +// 2023/12/09 - v0.6 by Terence Belleguic +// log file created in tmp folder. + // 2022/01/23 - v0.5 by Terence Belleguic // Load of the thumbnail if exists. diff -Nru keneric-0.6.8/scripts/keneric keneric-0.6.10/scripts/keneric --- keneric-0.6.8/scripts/keneric 2023-12-09 16:50:17.000000000 +0000 +++ keneric-0.6.10/scripts/keneric 1970-01-01 00:00:00.000000000 +0000 @@ -1,188 +0,0 @@ -#!/bin/bash - -############# -## Version ## -############# -# v0.7 - 2023/12/09 : - # 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. - -# v0.6 - 2023/09/07 : - # Création d'un fichier log dans le dossier tmp. - -# v0.5 - 2022/06/14 : - # Ajout des encadrés des mkv. - - -################# -## Utilisation ## -################# -# keneric FullName mime exportPicture - -# Adresse complète du fichier/dossier -FullName="${1}" - -# Mimetype du fichier/dossier -MimeType="${2}" - -# Adresse attendue de la vignette du fichier/dossier -ExportPicture="${3}" - -# Nom de la vignette attendue -Thumb="${ExportPicture##*/}" - - -################################### -## Emplacement du script keneric ## -################################### -Source="${0}" - -# Si le fichier est un lien -while [[ -h "${Source}" ]] -do - Folder="${Source%\/*}" - Source="$(readlink "${Source}")" - - # Si c'est un lien relatif, on en fait un lien complet - [[ ${Source} != /* ]] && Source="${Folder}/${Source}" -done - -# Emplacement du script -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 ## -######################### -# Fonction vérifiant la présence des dépendances -function Dependencies -{ - # ${@} : Les arguments doivent être de type : commande:paquet ou commande (si paquet = commande) - - local Command - - # Vérification des dépendances - for Command in "${@}" - do - # Si la commande n'existe pas - if [[ -z $(which ${Command%%:*}) ]] - then - LogFileMessage "Command ${Command%%:*} from package ${Command##*:} non found." - return 1 - fi - done - - return 0 -} - - -# Fonction de recherche d'un fichier dans un dossier -function SearchInFolder -{ - # $1 : Regex de recherche des fichiers - [[ ! ${1} ]] && return - - local Image - - # Explications des paramètres de find : - # -maxdepth 1 : Se limite au dossier, ne descend pas dans l'arborescence - # -type f : Ne travaille que sur les fichiers - # -iregex : Recherche les fichiers correspondants à la regex passée en argument, pas de prise en compte de la casse - # -print : Affiche le résultat - # -quit : Arrêt de la commande au 1er fichier trouvé - - Image="$(find "${FullName}" -maxdepth 1 -type f -iregex "${FullName/%\/}/${1}" -print -quit)" - - # Renvoi de l'image trouvée - [[ -f "${Image}" ]] && echo "${Image}" -} - - -# Fonction de chargement des sources -function SourceLoader -{ - # $1 : Base de nom des scripts, ex : folder, video - - # 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-*" -print0 | sort -uz) - - # Chargement de chaque script - for KenericScript in "${KenericScripts[@]}" - do - source "${KenericScript}" - done -} - - -# Fonction d'envoi de message au fichier log si actif -function LogFileMessage -{ - # $1 : Message - # ${BASH_SOURCE[0]##*/} correspond au nom du script sourcé - echo "${BASH_SOURCE[0]##*/} : ${1}" >> "${LogRedirection}" -} - - -###################################### -## Chargement des scripts adéquates ## -###################################### -case "${MimeType}" in - # Chargement des sources des scripts de type dossier - inode/directory) SourceLoader "folder" ;; - - *) - # 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 - # Ex : audio/ac3 => audio => Recherche des scripts nommés keneric-audio - SourceLoader "${MimeType%%/*}" ;; -esac - - -################################## -## 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}" - -# 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}" - -# 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. - -# 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-0.6.8/scripts/keneric-application-010-mkv-cover keneric-0.6.10/scripts/keneric-application-010-mkv-cover --- keneric-0.6.8/scripts/keneric-application-010-mkv-cover 2023-12-09 14:43:04.000000000 +0000 +++ keneric-0.6.10/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-0.6.8/scripts/keneric-custom-icon keneric-0.6.10/scripts/keneric-custom-icon --- keneric-0.6.8/scripts/keneric-custom-icon 2023-12-10 20:28:20.000000000 +0000 +++ keneric-0.6.10/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-0.6.8/scripts/keneric-delete-custom-icon keneric-0.6.10/scripts/keneric-delete-custom-icon --- keneric-0.6.8/scripts/keneric-delete-custom-icon 2023-12-10 20:30:34.000000000 +0000 +++ keneric-0.6.10/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-0.6.8/scripts/keneric-folder-001-nokeneric keneric-0.6.10/scripts/keneric-folder-001-nokeneric --- keneric-0.6.8/scripts/keneric-folder-001-nokeneric 2023-12-09 14:17:50.000000000 +0000 +++ keneric-0.6.10/scripts/keneric-folder-001-nokeneric 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -#!/bin/bash - -############################## -## Version 0.1 - 2023/12/02 ## -############################## -# Bloqueur de travail si le dossier contient un fichier (.)NoKeneric - -# Recherche des fichiers NoKeneric -Image=$(SearchInFolder ".?NoKeneric") - -# Si un fichier a été trouvé, on stoppe le script -if [[ -f "${Image}" ]] -then - LogFileMessage "NoKeneric file found : ${Image}" - exit 0 -fi diff -Nru keneric-0.6.8/scripts/keneric-folder-010-disk keneric-0.6.10/scripts/keneric-folder-010-disk --- keneric-0.6.8/scripts/keneric-folder-010-disk 2023-12-09 16:48:18.000000000 +0000 +++ keneric-0.6.10/scripts/keneric-folder-010-disk 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -#!/bin/bash - -############################## -## Version 0.1 - 2023/12/02 ## -############################## -# 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" - -# Recherche des fichiers disk avec une extension jpg|png|jpeg|webp -Image=$(SearchInFolder "\.?disk.\(jpg\|png\|jpeg\|webp\)") - -# Si une image a été trouvée, que le fichier BaseDisk existe qu'il y a la commande convert -if [[ -f "${Image}" && -f "${BaseDisk}" ]] && Dependencies convert:imagemagick -then - 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}" - - # Suppression de l'extension - mv "${ExportPicture}.png" "${ExportPicture}" 2>> "${LogRedirection}" - - # Si une vignette a été créée, on stoppe le script - exit 0 -fi diff -Nru keneric-0.6.8/scripts/keneric-folder-020-full keneric-0.6.10/scripts/keneric-folder-020-full --- keneric-0.6.8/scripts/keneric-folder-020-full 2023-12-09 16:48:06.000000000 +0000 +++ keneric-0.6.10/scripts/keneric-folder-020-full 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -#!/bin/bash - -############################## -## Version 0.1 - 2023/12/02 ## -############################## -# Création d'une jaquette pour les séries par ex, il faut un fichier de type ~ full.png - -# Recherche des fichiers full avec une extension jpg|png|jpeg|webp -Image=$(SearchInFolder "\.?full.\(jpg\|png\|jpeg\|webp\)") - -# Si une image a été trouvée et qu'il y a la commande convert -if [[ -f "${Image}" ]] && Dependencies convert:imagemagick -then - 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}" - - # Si une vignette a été créée, on stoppe le script - exit 0 -fi diff -Nru keneric-0.6.8/scripts/keneric-folder-030-cover keneric-0.6.10/scripts/keneric-folder-030-cover --- keneric-0.6.8/scripts/keneric-folder-030-cover 2023-12-10 21:03:02.000000000 +0000 +++ keneric-0.6.10/scripts/keneric-folder-030-cover 1970-01-01 00:00:00.000000000 +0000 @@ -1,122 +0,0 @@ -#!/bin/bash - -############################## -## Version 0.1 - 2023/12/02 ## -############################## -# Reprise du dossier du thème et fusion avec un fichier de type folder|front|cover|icon - -# Le résultat diffère si l'image à de la transparence : - # Une image avec transparence sera fusionnée (en conservant sa transparence) avec l'icône par défaut de dossier du thème - # Une image sans transparence aura un petit cadre noir et sera fusionnée avec l'icône par défaut de dossier du thème - - -# Variable indiquant si on stoppe -Stop=0 - -# Recherche des fichiers folder|front|cover|icon avec une extension jpg|png|jpeg|webp -Image=$(SearchInFolder "\.?\(folder\|front\|cover\|icon\).\(jpg\|png\|jpeg\|webp\)") - -# Si une image a été trouvée et qu'il y a la commande convert -if [[ -f "${Image}" ]] && Dependencies convert:imagemagick -then - LogFileMessage "Image founded : ${Image}" - - # Pour éviter de convertir l'icône du dossier par défaut du thème à chaque fois - if [[ ! -f "/tmp/folder_icon.png" ]] - then - # Thème utilisé - Theme=$(sed -n "/Name=/ s/.*=//p" "/usr/share/icons/default/index.theme") - - # Nom de l'icône utilisée pour les dossiers - IconName=$(sed -n "/icon name/ s@.*=\"\(.*\)\".*@\1@p" "${HOME}/.local/share/mime/inode/directory.xml" 2>/dev/null) - [[ -z "${IconName}" ]] && IconName=$(sed -n "/icon name/ s@.*=\"\(.*\)\".*@\1@p" "/usr/share/mime/inode/directory.xml") - - # Icône, doit fonctionner dans le cas des png et des svg - # On conserve l'image la plus lourde donc logiquement la meilleure qualité '%s %p\n - # => Le problème c'est que la taille affichée est celle du fichier et non des liens - Icon="$(find "/usr/share/icons/${Theme,,}/mimetypes/" -iname "${IconName}.*" -printf '%p\n' | sort -nr | head -n 1)" - - [[ -z "${Icon}" ]] && Icon="$(find "/usr/share/icons/${Theme,,}/" -iname "${IconName}.*" -printf '%p\n' | sort -nr | head -n 1)" - - Icon="${Icon/#* }" - - LogFileMessage "Theme : ${Theme}" - LogFileMessage "Icon : ${Icon}" - - # Si une icône a été trouvée - if [[ -f "${Icon}" ]] - then - # Extension du fichier - Ext="${Icon##*.}" - - # Si c'est un svg, il faut le convertir en png - if [[ "${Ext,,}" == "svg" ]] - then - # Meilleur résultat avec ksvgtopng5 - if Dependencies ksvgtopng5:kde-cli-tools - then - LogFileMessage "svg : ksvgtopng5 used." - ksvgtopng5 256 256 "${Icon}" "/tmp/folder_icon.png" 2>> "${LogRedirection}" - - # 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/folder_icon.png" 2>> "${LogRedirection}" - - # Imagemagick donne un mauvais résultat... - else - LogFileMessage "svg : convert used." - convert -resize "256x256" -format png "${Icon}" "/tmp/folder_icon.png" 2>> "${LogRedirection}" - fi - - # Sinon on redimensionne l'image en 256px si besoin - else - LogFileMessage "convert used." - convert -resize "256x256>" "${Icon}" "/tmp/folder_icon.png" 2>> "${LogRedirection}" - fi - - # Arrêt du travail si l'icône temporaire n'existe pas - [[ ! -f "/tmp/folder_icon.png" ]] && Stop=1 - - # Sinon, on stoppera le travail juste après - else - Stop=1 - fi - fi - - # Ne continue que Stop vaut toujours 0 - if ((! Stop)) - then - LogFileMessage "Thumbnail creation..." - - # Création de la vignette - # -resize "212x124>" : La taille max de la sous image soit être de 212 * 124 pour qu'elle rentre bien dans l'icône de breeze - # -bordercolor black -border 1 : Ajout d'un cadre noir pour le style - # -geometry +30+90 : Place l'image dans l’icône du dossier - # -colors 255 : Diminution de la qualité de l'image pour diminuer le poids - - # 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}" - - if [[ -f "/tmp/thumb_icon.png" ]] - then - # Calcul l'emplacement de la sous image - ImageSize=$(identify -format "%wx%h" "/tmp/thumb_icon.png") - FolderSize=$(identify -format "%wx%h" "/tmp/folder_icon.png") - w=$(( (${FolderSize%x*} - ${ImageSize%x*}) / 2 )) - h=$(( (${FolderSize#*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/folder_icon.png" -geometry +${w}+${h} -format png "${ExportPicture}" 2>> "${LogRedirection}" - - # Suppression de l'image - rm "/tmp/thumb_icon.png" 2>> "${LogRedirection}" - - # Si une vignette a été créée, on stoppe le script - exit 0 - fi - fi -fi diff -Nru keneric-0.6.8/scripts/keneric-video-010-mkv-cover keneric-0.6.10/scripts/keneric-video-010-mkv-cover --- keneric-0.6.8/scripts/keneric-video-010-mkv-cover 2023-12-09 16:43:46.000000000 +0000 +++ keneric-0.6.10/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 "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: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-0.6.8/scripts/keneric-video-999-all keneric-0.6.10/scripts/keneric-video-999-all --- keneric-0.6.8/scripts/keneric-video-999-all 2023-12-09 14:19:42.000000000 +0000 +++ keneric-0.6.10/scripts/keneric-video-999-all 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -#!/bin/bash - -############################## -## Version 0.1 - 2023/12/02 ## -############################## -# Utilisation de ffmpegthumbnailer pour toutes les types de vidéo - -# Si les dépendances ne sont pas bonnes ou qu'il n'y a pas d'image dans le mkv -if Dependencies ffmpegthumbnailer -then - LogFileMessage "ffmpegthumbnailer used." - - # Extraction d'une image avec ffmpegthumbnailer - ffmpegthumbnailer -f -s 256 -i "${FullName}" -o "${ExportPicture}" 2>> "${LogRedirection}" - - # Si une vignette a été créée, on stoppe le script - exit 0 -fi