Suppression automatique des fichiers raw orphelins après un tris dans les fichiers jpeg lorqu'on prends des photos en raw +

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 300 fois - Téléchargée 15 fois

Contenu du snippet

Bonjour,

Lorsqu'on prends des photos en raw + jpg, les 2 fichiers sont enregistrés sur la carte mémoire de l'appareil photo.
Bien souvent, on fait un tri dans les jpg rapidement pour supprimer les photos qui ne nous intéresse pas...
Le problème est qu'il faut ensuite supprimer à la main les raw associés

le but de ce code est de l’exécuter d'une manière régulière via la crontab d'un nas.
C'est une routine de suppression automatique des fichiers raw orphelin (c'est à dire ceux qui n'ont plus de jpg associé)

les fichiers raw doivent être dans un répertoire raw
par exemple:
- fichier jpg dans /photos/2012/anniversaire/
- fichier raw dans /photos/2012/anniversaire/raw/

si le fichier raw trouvé n'est pas dans un répertoire raw, le script log un message d'erreur et ne supprime pas le fichier

le script parcours l'ensemble du répertoire photo récursivement et quand il trouve un raw, il contrôle si il y a un jpg associé dans le répertoire parent.

le script utilise un classe de gestion de logs pour écrire et gérer les fichiers de log

Source / Exemple :


<?php
# //////////////////////////////////////////////////////////////////////////////////////////////////////////////
# /*nettoyage du répertoire photo -> suppression des rows dont le jpeg a été supprimé
# ce script est executé toute les nuits par la crontab
# *////////////////////////////////////////////////////////////////////////////////////////////////////////////
#les rows doivent etre dans un sous répertoire row 
#si le rows n'a pas d'équivalent jpg dans le répertoire parent alors on le supprime

//***************************************************************************************************
//définition des variables
//***************************************************************************************************

//emplacement du repertoire photo:
$rep= "/c/Nas/Photos/";
//emplacement du script (variable globale utilisée dans la fonction)
$racineScript="/c/Nas/docmalus/scripts/RawClean";
//initialisation du compteur de suppression:
$compteurSuppression=0;

//class utilisé pour geré les logs
include("log.class.php");

//***************************************************************************************************
//fonction de vérification des fichier jpg et row
//***************************************************************************************************
function isImg ($file)
	{
	if (eregi(".jpg$",$file)){return true;}
	} 
	
function isRaw ($file)
	{
	if (eregi(".ARW$",$file)){return true;}
	} 

//***************************************************************************************************
// fonction listing des repertoires par une fonction recursive
//***************************************************************************************************

function parcours_arbo1($rep,$ssrep) {
 global $racineScript;
 global $compteurSuppression;
 $log= new log(100000,10,"$racineScript/log/");
 if( $dir = opendir($rep) ) {
   while( FALSE !== ($fich = readdir($dir)) ) {
     if ($fich != "." && $fich != "..") {
       $chemin = "$rep$fich";
       if (is_dir($chemin)) {
	     parcours_arbo1($chemin.'/', ($ssrep==''?$fich:$ssrep.'/'.$fich));
       }
	   else
		 if(isRaw($fich))
			{
				//je verifie que le raw est bien dans un repertoire raw:
				if (eregi("raw/$",$rep)==false)
				{
					$log->add("system","ATTENTION : le fichier $ssrep/$fich n'est pas dans un repertoire raw!!! \n");
				}
				else
				{
					$NomSansExtension=substr($fich, 0, -4);
					$DossierParent=substr($rep, 0, -4);
					$fileJPG=$DossierParent.$NomSansExtension.'.JPG';
					if (file_exists($fileJPG)==false)
					{
						//je loggue l'évenement
						$log->add("system","le fichier $ssrep/$fich n'as pas son équivalent jpg et a été supprimé \n");
						//suppression du fichier RAW concerné
						//unlink ($rep.$fich);
						$compteurSuppr++;
						if($compteurSuppr>0)
						{
							$compteurSuppression++;
						}
					}
				}
			}
	   }
 	 }
  }
}

//***************************************************************************************************
//main program
//***************************************************************************************************
//initialisation des logs:
$log= new log(100000,10,"$racineScript/log/");
$log->add("system","*************************************\n");
$log->add("system","Demarrage de la session de nettoyage:\n");
$log->add("system","*************************************\n");

//lancement de la fonction de lecture du répertoire photo de manière récursive
parcours_arbo1($rep,'',$racineScript);

//insertion de la log finale avec le compteur de suppression
$log->add("system","$compteurSuppression fichiers ont été supprimés \n");

?>

Conclusion :


ex de logs générés:

11/05/2012 | 10:03:50 | system | *************************************

11/05/2012 | 10:03:50 | system | Demarrage de la session de nettoyage:

11/05/2012 | 10:03:50 | system | *************************************

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/raw/DSC03289.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/raw/DSC03290.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/raw/DSC03303.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/raw/DSC03293.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/raw/DSC03300.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/raw/DSC03283.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/raw/DSC03285.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/raw/DSC03292.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/raw/DSC03291.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/raw/DSC03288.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/raw/DSC03301.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/raw/DSC03284.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/raw/DSC03287.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/raw/DSC03304.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/portrait/RAW/DSC03436.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/portrait/RAW/DSC03433.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/photo d'artistes Malus/portrait/RAW/DSC03442.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | ATTENTION : le fichier 2012/test/DSC03283.ARW n'est pas dans un repertoire raw!!!

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03407.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03369.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03380.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03368.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03415.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03370.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03372.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03378.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03394.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03377.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03391.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03371.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03366.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03375.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03376.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03373.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03411.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03367.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03379.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:50 | system | le fichier 2012/Paris/RAW/DSC03374.ARW n'as pas son équivalent jpg et a été supprimé

11/05/2012 | 10:03:51 | system | 37 fichiers ont été supprimés

A voir également

Ajouter un commentaire

Commentaires

jordane45
Messages postés
27641
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020
324
Bonjour Kéno.
Le message est assez parlant.... la class 'log' n'a pas été trouvée..
Il semble que le souci vienne du fait qu'il n'a pas fournit le fichier : log.class.php
le script utilise un classe de gestion de logs pour écrire et gérer les fichiers de log
Heureusement il est assez facile de trouver de class de log sur le net.
Il faudra juste un peu "adapter" les lignes 87 à 96 (enfin.; surtout la 87 en fonction de la class que tu auras trouvé).

Par exemple : http://www.finalclap.com/tuto/php-logger-class-78/
Kéno40
Messages postés
4
Date d'inscription
mardi 11 février 2014
Statut
Membre
Dernière intervention
12 février 2014
> jordane45
Messages postés
27641
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020

Merci beaucoup, je vais essayer de me débrouiller avec ça. Je suis une bille, mais tu avais du le noter.
J'avais crée le fichier log.class.php, mais je l'avais laissé vide pensant (comme il n'y avait rien sur le thread comme indication...) qu'il remplirait tout seul comme un grand :)
jordane45
Messages postés
27641
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020
324 > Kéno40
Messages postés
4
Date d'inscription
mardi 11 février 2014
Statut
Membre
Dernière intervention
12 février 2014

Si tu as des soucis, le plus simple se sera d'aller poster une question directement sur le forum.
N'oublie pas d'être le plus explicite possible dans ta description du souci.
et d'utiliser la coloration syntaxique pour poster du code
Kéno40
Messages postés
4
Date d'inscription
mardi 11 février 2014
Statut
Membre
Dernière intervention
12 février 2014
> jordane45
Messages postés
27641
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020

Merci encore !
Je vais essayer de me dépatouiller tout seul d'abord. Vu mon niveau , j'aurai certainement besoin de demander de l'aide... Mais bon, j'aime pas saouler les gens sans avoir fait le minimum d'effort dt de recherches avant. Même si je n'y arrive pas cela sera pédagogique.
Kéno40
Messages postés
4
Date d'inscription
mardi 11 février 2014
Statut
Membre
Dernière intervention
12 février 2014

Salut,
Cela m'intéresse beaucoup, malheureusement, je n'ai pas pu le faire marcher.
J'ai un message line 87 problème de class log
Faut créer un dossier log et dedans, il faut quelque chose?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.