3 votes

Comment organiser les photos du dossier Appareil photo dans des dossiers triés par noms de mois ?

Pour diverses raisons, je finis souvent par extraire des photos de mes téléphones en connectant la connexion USB à un ordinateur et en extrayant ce dont j'ai besoin.

Le problème auquel je suis confronté est que mon dossier DCIM/100ANDRO est maintenant énorme, et simplement charger la liste complète des fichiers prend un temps considérable. Y a-t-il un moyen (idéalement dans Android 7.1.1 de base, mais des applications supplémentaires sont acceptables) de les trier dans des dossiers séparés, éventuellement par mois de prise de vue ou similaire. Des points bonus si cela se fait de manière dynamique au fur et à mesure que les photos sont prises.

Je serais également intéressé par des alternatives aux options de parcourir le périphérique via USB, mais je voudrais quelque chose qui offre une résolution maximale, qui n'upload pas d'abord vers un emplacement internet et qui ne nécessite pas bluetooth.

0 votes

La galerie de photos de stock d'Android 7 a quelques vues de base par défaut, vous pouvez regrouper par heure ou par lieu. Est-ce suffisant pour vos besoins ou devez-vous obligatoirement classer dans des dossiers?

0 votes

@le dossier d'@alecxs je crains - le problème n'est pas la navigation sur l'appareil lui-même, c'est lorsque je parcours la carte SD d'un appareil connecté. S'il y a un moyen rapide d'envoyer des photos en pleine résolution vers un PC à proximité, idéalement via l'USB car la situation du réseau est compliquée, cela fonctionnerait aussi.

0 votes

Vous voulez dire que lorsque vous êtes connecté via USB MTP, il met trop de temps à s'afficher, de sorte que vous ne pourrez jamais commencer à copier le dossier DCIM, car vous ne pouvez pas le voir/sélectionner pour le copier?

2voto

Irfan Latif Points 16863

Il doit y avoir des applications pour faciliter ce que vous souhaitez accomplir, mais l'une des méthodes les plus simples (du moins pour moi) est d'utiliser un script shell comme suggéré par @alecxs dans le commentaire. Nous pouvons lire la date de la prise de la photo en utilisant l'outil en ligne de commande exiv2. Vous pouvez le compiler à partir de la source ou essayer celui-ci. Ou obtenir l'heure de modification de la photo en utilisant la commande stat, mais la première est généralement plus précise car certains programmes comme les explorateurs de fichiers modifient mal la date de modification par exemple lors des opérations de copie/déplacement.

Une fois le mois de la photo connu, créez le dossier correspondant et déplacez la photo là-bas :

#!/system/bin/sh
set -e

DIR='/sdcard/DCIM/100ANDRO'

find $DIR -maxdepth 1 -type f -iname '*.jp*g' -o -iname '*.png' |
while read -r photo
do
    month=$(exiv2 -q pr "$photo" | busybox awk -v c=1 -F '[: ]' '/timestamp.*[0-9]{4}:[0-9]{2}:[0-9]{2}/{print $5"_"$6; c=0} END{exit c}') ||
    month=$(busybox stat -c %y "$photo" | busybox awk -v c=1 -F '[- ]' '/[0-9]{4}-[0-9]{2}-[0-9]{2}/{print $1"_"$2; c=0} END{exit c}') ||
    { echo "Impossible de trouver le mois pour $photo" >&2; continue; }

    mkdir -p "$DIR/$month"
    mv -n "$photo" "$DIR/$month/"
done

echo Terminé.

Les commandes awk et stat d'Android sont boguées ou montrent un comportement non standard. Mieux vaut utiliser busybox.

Appelons ce script sort.sh. Voici comment ça fonctionne :

~$ find /sdcard/DCIM/100ANDRO/ -type f
/sdcard/DCIM/100ANDRO/00100sPORTRAIT_00100_BURST20190222182032908_COVER.jpg
/sdcard/DCIM/100ANDRO/IMG_20170312_013609.jpg
/sdcard/DCIM/100ANDRO/IMG_20180818_180827_HDR.jpg
/sdcard/DCIM/100ANDRO/IMG_20190222_164812.jpg
/sdcard/DCIM/100ANDRO/PANO_20190421_132245.jpg

~$ sort.sh
Terminé.

~$ find /sdcard/DCIM/100ANDRO/ -type f
/sdcard/DCIM/100ANDRO/2017_03/IMG_20170312_013609.jpg
/sdcard/DCIM/100ANDRO/2018_08/IMG_20180818_180827_HDR.jpg
/sdcard/DCIM/100ANDRO/2019_04/PANO_20190421_132245.jpg
/sdcard/DCIM/100ANDRO/2019_02/00100sPORTRAIT_00100_BURST20190222182032908_COVER.jpg
/sdcard/DCIM/100ANDRO/2019_02/IMG_20190222_164812.jpg

Vous pouvez également utiliser la commande file (au lieu de vous fier aux extensions de fichier) pour ne déplacer que les photos et pas les vidéos ou autres fichiers. Mais encore une fois, la commande /system/bin/file d'Android est très limitée. Utilisez-en une de Termux, compilez-la à partir de la source, ou essayez celle-ci.

Vous pouvez exécuter ce script manuellement ou de manière régulière en utilisant une application d'automatisation. crond est également une option si vous avez un accès root.

Je serais également intéressé par des alternatives aux options de connexion USB -> parcourir l'appareil

Cette partie est en elle-même une question distincte. Si vous souhaitez parcourir les fichiers depuis un PC, vous pouvez opter pour adbfs, SSHFS/SFTP, FTP, WebDAV, SMB, etc. Ou pour simplement transférer des fichiers, adb pull suffira et est raisonnablement plus rapide. Si vous avez le root et que le volume de données à transférer est élevé, envisagez d'utiliser le Stockage de masse USB (UMS) depuis une récupération personnalisée. C'est une méthode très rapide et fiable.

0 votes

Peut-il être exécuté sans racine? (Je devrai chercher comment ouvrir un shell, etc., mais je suis sûr de pouvoir le comprendre)

1 votes

Pas de racine requise. Vous pouvez exécuter le script à partir de adb shell ou d'une application d'émulateur de terminal comme Termux.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X