Skip to content

Commit

Permalink
$CODE & DOC : use only tabs. no more need for command line. Just doub…
Browse files Browse the repository at this point in the history
…leclick on .py files.
  • Loading branch information
albion2000 committed Jan 13, 2018
1 parent 9e5fe32 commit 8e11507
Show file tree
Hide file tree
Showing 8 changed files with 167 additions and 87 deletions.
20 changes: 20 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,24 @@ One purpose is to keep the tools as simple as possible (KISS), refraining from f

In short :

## naming_conventions.py & naming_conventions_do_rename.py

Read the installation_instructions.txt and readme_naming_conventions.txt

Copy 'naming_conventions.py' & 'naming_conventions_do_rename.py' to the root directory of your file tree.

The primary purpose of this tool is to ensure a longer lifetime to a directry tree by reducing the risk of it being corrupted over transfers between file systems.

It recursively parses sub directories
It is able to rename the directories in order to follow some strict conventions.

mode for simulation, with no effect on the name of the directories, for validation purposes:
naming_conventions.py
mode for renaming effectively:
naming_conventions_do_rename.py

The use of this tool is optional, and would be typically used before using scandir2pdf.py


## check_jpegs.py

Expand All @@ -23,6 +41,8 @@ It quickly checks that the files are not corrupted.
It is, on purpose, a fast check in order to help detect rapidly bad files.
Only the headers are checked, the images are not decompressed.

This is a quick way to detect bad jpeg files, before using scandir2pdf.py

Each '.' shows that one more directory was parsed

When a file is reported corrupted, it does not mean that it is lost. Try to open it in your favorite image sw and save it back (using the best quality, in order to reduce compression losses). It is often enough.
Expand Down
17 changes: 14 additions & 3 deletions installation_instructions.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ under windows, in the search bar, type "cmd"
in that new window, type

pip install img2pdf
pip install unidecode
pip install pillow

=========================================================================
Expand Down Expand Up @@ -61,11 +62,15 @@ Non recommand
IMPORTANT : � la premi�re �tape de l'installation, il vous faut absolument cocher la case "Add Python 3.6 to PATH"
IMPORTANT : � la derni�re �tape de l'installation, cliquer sur "Disable path length limit for python"

Ensuite, il faut effectuer deux commandes.
Ensuite, il faut effectuer deux commandes, en utilisant l'invite de commande windows :

Sous windows : dans la barre de recherche, tapez 'cmd' enter
Sous windows 10 : clicker sur l'icone 'fen�tre windows' tout en bas � gauche, puis tapez 'cmd' puis appuyez sur enter (tapez m�me si ce que vous tapez n'apparait nulle part)

cela ouvre une fen�tre de commande noire.
cela ouvre une fen�tre "invite de commande" noire.

autre fa�on de faire : ouvrir un explorateur de fichiers, dans la barre de chemin, tapez 'cmd' puis appuyez sur enter

Dans la fen�tre noire :

Tapez

Expand All @@ -75,6 +80,12 @@ attendez la fin du processus de t

tapez

pip install unidecode

attendez la fin du processus de t�l�chargement et installation (compl�tement automatique)

tapez

pip install pillow

attendez la fin du processus de t�l�chargement et installation (compl�tement automatique)
Expand Down
3 changes: 2 additions & 1 deletion tools/check_jpegs.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,10 @@

print('\r\n')
if (badFilesCount>0) :
print('found %i bad files' % badFilesCount);
print('found %i bad file(s)' % badFilesCount);
else :
print('All %i jpeg files in %i directories (containing jpeg images) passed the sanity check. No problem.' % (allJPGFilesCount,allDirCount));

# BELL
print('\a')
os.system("pause")
17 changes: 14 additions & 3 deletions tools/naming_conventions.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
# rules

def accentsTidy(s) :
# tries to convert as best as it can anything in ascii characters (° becomes deg !)
# tries to convert as best as it can anything in ascii characters ('°' becomes 'deg' !)
r = unidecode.unidecode(s)
# go lower case
r = r.lower();
Expand All @@ -36,7 +36,8 @@ def accentsTidy(s) :
r = re.sub('_$','',r);
return r;

logFile = open('logRename.txt','a')
logFileName = 'logRename.txt'
logFile = open(logFileName,'a')

def printandlog(str):
print(str)
Expand Down Expand Up @@ -72,6 +73,8 @@ def process(do_rename) :
nbDir = 0
for dirName, subdirList, fileList in os.walk(rootDir):
for subdir in subdirList :
if subdir == '__pycache__' :
continue
stripped = accentsTidy(subdir)
nbDir = nbDir + 1
if (same_string(stripped,subdir)) :
Expand All @@ -91,6 +94,8 @@ def process(do_rename) :
continue
if dirName == '..' :
continue
if dirName == '.\\__pycache__' :
continue
stripped = accentsTidy(dirName)
nbDir = nbDir + 1
if (same_string(stripped,dirName)) :
Expand Down Expand Up @@ -122,7 +127,9 @@ def process(do_rename) :
printandlog("%i change(s) done in a total of %i directories" % (nbChanges,nbDir))
else:
printandlog("%i change(s) needed in a total of %i directories" % (nbChanges,nbDir))
printandlog("this was a simulation, if you are happy with this renaming proposal, do 'naming_conventions -w'");
printandlog("this was a simulation, if you are happy with this renaming proposal, do 'naming_conventions.py -w'");
print("\nAll this was logged at the end of the file "+logFileName);


def test() :
s = 'æÁÀÂÄÃÅÇÉÈÊËÍÏÎÌÑÓÒÔÖÕÚÙÛÜÝœ- áàâäãåçéèêëíìîïñóòôöõúùûüý ÿ'
Expand All @@ -139,11 +146,13 @@ def print_syntax() :
print('naming_conventions.py')
print('syntax for renaming effectively:')
print('naming_conventions.py -w')
os.system("pause")


def main(argv) :
if (len(sys.argv)==1):
process(0)
os.system("pause")
else :
try:
opts, args = getopt.getopt(argv,"hw")
Expand All @@ -156,9 +165,11 @@ def main(argv) :
sys.exit()
elif opt == '-w':
process(1)
os.system("pause")
sys.exit()
else :
print("ignored");
os.system("pause")
sys.exit()
print_syntax()

Expand Down
7 changes: 7 additions & 0 deletions tools/naming_conventions_do_rename.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# coding: utf-8

import os
import naming_conventions

naming_conventions.process(1)
os.system("pause")
10 changes: 2 additions & 8 deletions tools/readme_check_jpegs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ ACTION

USE
* Copy 'check_jpegs.py' to the root directory of your file three.
* Double click on the file 'check_jpegs.py'

NOTES
* It is, on purpose, a fast check in order to help detect rapidly bad files.
Expand All @@ -37,14 +38,7 @@ ACTION

USAGE
* Copier 'check_jpegs.py' dans le r�pertoire racine de votre arborescence de fichiers.
* Executer ce script (deux fa�ons entre autres)
1. Lancer une console windows dans votre r�pertoire, et taper 'check_jpegs.py'. Pour cela :
1. Lancez l'explorateur windows et allez sur votre r�pertoire.
1. Cliquez sur le chemin complet dans l'explorateur, pour le faire appara�tre en surbrillance (s�lectionn�)
1. Tapez 'cmd' � la place du chemin complet. appuyez sur 'enter'
1. Cela doit ouvrir une console de ligne de commande dans votre r�pertoire. Tapez check_jpegs.py puis 'enter'
1. ou bien (non recommand�) Double cliquer sur le fichier 'check_jpegs.py' dans l'explorateur windows. Cette m�thode a le d�faut que la fen�tre se ferme d�s la fin, ce qui ne laisse pas le temps de lire le rapport final.
* Si vous obtenez imm�diatement une erreur du type "n'est pas reconnu en tant que commande interne", cela peut signifier que python n'a pas �t� ajout� � votre path syst�me.
* Double cliquez sur 'check_jpegs.py'

NOTES
* Seuls les ent�tes de fichiers sont v�rifi�es, elles ne sont pas d�compress�es.
Expand Down
58 changes: 43 additions & 15 deletions tools/readme_naming_conventions.txt
Original file line number Diff line number Diff line change
@@ -1,24 +1,34 @@
=======================================================
FRENCH HERE, ENGLISH BELOW

Typiquement cet outil est utilis� avant scandir2pdf
PRELIMINAIRE
* Lisez et suivez les instructions du fichier installation_instructions.txt pour pouvoir lancer l'outil sur votre machine.

L'objectif principal de cet outil est d'assurer une conservation � plus long terme de la structure de r�pertoires, qui risque d'�tre corrompue/modifi�e, � l'occasion de transferts entre "file systems/os" syst�mes de fichiers et OS.
ACTION
* L'objectif principal de cet outil optionnel est d'assurer une conservation � plus long terme de la structure de r�pertoires, qui risque d'�tre corrompue/modifi�e, � l'occasion de transferts entre "file systems/os" syst�mes de fichiers et OS.
* Mode Simulation : d�tection des r�pertoires � probl�me, affichage du r�sultat simul�.
* Mode effectif : Renommage effectif, a effectuer si la simulation vous convient.

Reste � faire :
Parce que l'outil peut renommer les r�pertoires, il v�rifie aussi si il ne tombe pas dans la situation o� apr�s renommage, deux sous r�pertoires auraient le m�me nom.
Dans ce cas, aucun r�pertoire n'est touch�. Les r�pertoires � probl�me sont indiqu�s. Il est laiss� � l'utilisateur le soin de renommer un de ces r�pertoires.
Actuellement, cette situation fera �chouer le renommage du second fichier et stoppera les op�rations.
USAGE
* Copier 'naming_conventions.py' et 'naming_conventions_do_rename.py' dans le r�pertoire racine de votre arborescence de fichiers.

2 syntaxes

Rien n'est fait sans validation de l'utilisateur. Pour cela les traitements sont fait en deux �tapes.
* Executer ce script (deux fa�ons)
* Pour lancer la simulation (pas de modification r�alis�e, pas de risque), double cliquez sur le fichier 'naming_conventions.py' dans l'explorateur windows.
* Pour lancer le renommage, double cliquez sur le fichier 'naming_conventions_do_rename.py' dans l'explorateur windows.
* Si vous obtenez imm�diatement une erreur du type "n'est pas reconnu en tant que commande interne", cela peut signifier que python n'a pas �t� ajout� � votre path syst�me. Veuillez suivre les instructions d'installation.

Scrutation, d�tection des r�pertoires � probl�me, affichage du r�sultat simul�.
Si le r�sultat simul� affich� est accept�, il faut relancer l'outil avec l'option : -w
L� le renommage sera effectif.
Les r�sultats sont dans la console et recopi�s � la fin du fichier logRename.txt

typiquement cet outil est utilis� avant scandir2pdf

NOTES

Reste � faire :
Parce que l'outil peut renommer les r�pertoires, il v�rifie aussi si il ne tombe pas dans la situation o� apr�s renommage, deux sous r�pertoires auraient le m�me nom.
Dans ce cas, aucun r�pertoire n'est touch�. Les r�pertoires � probl�me sont indiqu�s. Il est laiss� � l'utilisateur le soin de renommer un de ces r�pertoires.
Actuellement, cette situation fera �chouer le renommage du second fichier et stoppera les op�rations.

Copie de : http://www.ufowaves.org/ltdsp/ltsdp/nommage

Expand Down Expand Up @@ -58,10 +68,6 @@ lettres de 'A'
'_' tiret bas (fait office d'espaces)
Oui en effet, il est interdit d'utiliser les caract�res accentu�s.

Je pourrais �tre plus restrictif, pour donner un aspect plus l�ch� au fond, mais ce n'est pas n�cessaire. Au del�, trop de personnes ne font pas l'effort de respecter les r�gles, juste par flemme ou �tourderie.

Pour commencer, il est possible de faire un renommage automatique de tout ce qui existe d�j� pour respecter ces r�gles. (par un programme informatique)

Les noms de r�pertoire doivent-�tre aussi bref que possible. Les syst�mes de fichiers Windows ont encore des limitations sur la longueur de chemin complet des fichiers. Il est facile de d�passer le maximum autoris�.

Modifier
Expand All @@ -81,6 +87,12 @@ Les noms de fichiers doivent-

ENGLISH

PRELIMINARY
* Read the installation_instructions.txt for being able to run the tool on your machine.


ACTION

The primary purpose of this tool is to ensure a longer lifetime to a directry tree by reducing the risk of it being corrupted over transfers between file systems.

This is done by enforcing some naming conventions. On directories
Expand All @@ -89,9 +101,25 @@ justification and general principles : http://www.ufowaves.org/ltdsp/ltsdp/nomma

typically, this would be called before scandir2pdf

USE
* Copy 'naming_conventions.py' & 'naming_conventions_do_rename.py' into the root directory of your files.
* Simulation, with no effect on the name of the directories, for validation purposes: double click on naming_conventions.py
* Renaming effectively : double click on naming_conventions_do_rename.py


To be done :
Because the tool can rename the directories, it also checks that it does not fall in the situation where after renaming, two directories would have the same name.

If that is the case, the problematic directories are pointed out, and the user must himself rename one of the faulty directories.

log into file logRename.txt

rules followed

# tries to convert as best as it can anything in ascii characters
# go lower case
# anything that is neither a letter nor a number is replaced by _
# � becomes ae
# � becomes oe
# 'N�' decomes 'n_'
# remove too many '_'
# remove '_' at start or end of dir name
Loading

0 comments on commit 8e11507

Please sign in to comment.