Derniers journaux de saorge :
- [30/11@10:36] Structure d'un TODO
- [13/11@20:07] Vérifier la validité d'un fichier mp3
- [05/11@15:27] ID3v1
- [14/10@08:45] Conversion en PDF
- [06/10@08:13] bchunk en inverse
- [03/10@07:35] check disk d'un stick usb ???
- [01/10@11:18] Le PC rentre dans le salon
- [23/09@11:59] Foutue longueur de nom de fichiers !
- [25/08@14:11] Situation de crise et informatique
- [25/08@08:33] Compil' du kernel 2.6.0-test4
- [16/08@13:06] Zoli phpPgAdmin pour sa version 3.0
- [08/08@12:12] blog
- [24/07@18:14] Rajouter un fond sur des fichiers PDF
- [23/07@10:21] M[es|on] browser, ou l'application
- [21/07@16:17] 3Com Hurricane 3c556
- [10/07@11:38] Paranoïa ...
- [02/07@07:54] Drôle de comportement d'un stick USB
- [11/06@17:44] Problème de réseau
- [10/06@10:12] Sylpheed et autres MUA
- [04/06@12:25] LMF 51 et les fourmis
Journal : Catalogue HTML d'un file system
Posté par saorge () le 30 novembre 2003Je cherche un petit programme me permettant d'établir un catalogue (simple fichier html) d'un ensemble de répertoire.
Un exemple :
- soit le répertoire music ayant le structure suivante :
- music
--- dir_1
------ file_1
------ file_2
--- dir_2
------ file_1
------ file_2
etc
J'aimerais donc trouver un programme qui créera un fichier html représentant cette structure sous la même forme. Chaque élément étant bien entendu un hyperlien !
L'objectif final est de générer un fichier catalogue que je placerai à la racine d'un répertoire que je graverai. Ce répertoire contient d'autres répertoires, et les fichiers sont de différents types (essentiellement des images et des vidéos).
> Lire le journal (4 commentaires, moyenne: 3,5).
Re: Catalogue HTML d'un file system
Tu peux esayer le logiciel tree avec l'option -H il permet d'évoir un fichier html. Tiens voici mon petit montage pour faire ce que tu veux faire : avec en oplus un gestions des mouvements (suppressions, ajouts, ...). Si tu veux les originaux mail moi.
-- Fichier listing
#!/bin/bash
# Description : ce script utilise les commande de shell pour faire
# un listing des fichiers présents, la sorite est en HTML
# Il faut modifier la sortie après par un script Perl
# On créé :
# - 1 fichier listing-12-12-02 qui contient la liste des répertoires + des
# fichiers de /mnt/divers/mp3 de toute l'arborescence sans le répertoire
# .gestion qui ne contient rien d'interessant
# - 1 fichier repertoires-12-12-02 qui contient la liste des répertoires
# de /mnt/divers/mp3 de toute l'arborescence sans le répertoire
# .gestion qui ne contient rien d'interessant
# - 1 fichier "old" pour l'ancien fichier
# - 1 fichier de différence pour listing
# - 1 fichier de différence pour repertoires
# C'est parti mon quiqui
#on va dans le répertoire de stockage
cd /mnt/divers/mp3/.gestion/
# On copie les "anciens fichiers" standards
cp -f listing listing.old
cp -f repertoires repertoires.old
cp -f diff diff-`date +'%d-%m-%y'`
# On fait les "nouveaux fichiers" standard (pas d'extension HTLM)
# Sans la date
tree /mnt/divers/mp3/ -H 'ftp://xxxx.dyndns.org'(...) > listing
tree /mnt/divers/mp3/ -d -H 'ftp://xxxx.dyndns.org'(...) > repertoires
# Avec la date
tree /mnt/divers/mp3/ -H 'ftp://xxxx.dyndns.org'(...) > listing-`date +'%d-%m-%y'`
tree /mnt/divers/mp3/ -d -H 'ftp://xxxx.dyndns.org'(...) > repertoires-`date +'%d-%m-%y'`
# On fait la différence
echo "Fichier de différence" > diff
echo "Date de l'enregistrement : `date +'%d-%m-%y'`" >> diff
echo "" >> diff
diff listing.old listing | grep '^>' >> diff
echo "" >> diff
echo "#----------#" >> diff
echo "" >> diff
diff listing.old listing | grep '^<' >> diff
echo "</suppression>" >> diff
#On veut tout garder les infos (ajouts, suppressions)
--
et le fichier listing.pl
--
#!/usr/bin/perl -w
# Description : ce script met enforme les résultats obtenus
# par le script pour faire un listing html
# On commence par ouvrir les fichiers listing, diff et répertoires
open (LISTING, "/mnt/divers/mp3/.gestion/listing")or die "Impossible d'ouvrir le fichier: $!";
open (REPERTOIRES, "/mnt/divers/mp3/.gestion/repertoires") or die "Impossible d'ouvrir le fichier: $!";
open (DIFF, "/mnt/divers/mp3/.gestion/diff") or die "Impossible d'ouvrir le fichier: $!";
# Ensuite on ouvre les fichiers HTML résultats
open (LISTING_HTML, ">/mnt/divers/mp3/.gestion/listing.html")or die "Impossible d'ouvrir le fichier: $!";
open (REPERTOIRES_HTML, ">/mnt/divers/mp3/.gestion/repertoires.html") or die "Impossible d'ouvrir le fichier: $!";
open (DIFF_HTML, ">/mnt/divers/mp3/.gestion/diff.html") or die "Impossible d'ouvrir le fichier: $!";
# ------------------------------------------------------
# On attaque les définitions pour les fichiers HTML
# ------------------------------------------------------
# Listing complet des fichiers
print LISTING_HTML <<"FIN";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd(...)">
Liste des fichiers musicaux
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<!--
BODY { font-family : courier, arial, sans-serif; }
.VERSION { font-family : arial, sans-serif; }
-->
FIN
#Listing des répertoires
print REPERTOIRES_HTML <<"FIN";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd(...)">
Liste des répertoires
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<!--
BODY { font-family : courier, arial, sans-serif; }
.VERSION { font-family : arial, sans-serif; }
-->
FIN
#Listing des differences
print DIFF_HTML <<"FIN";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd(...)">
Liste des différences
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<!--
BODY { font-family : courier, arial, sans-serif; }
.VERSION { font-family : arial, sans-serif; }
-->
FIN
#-------------------------------------------------------
# Traitement des données
#-------------------------------------------------------
#On commence par un tri : on sélectionne entre les bornes
# et
#Première itération sur listing
while () { last if m//; }
#while() { last if m/<\/BODY>/; print; }
while () { last if m//; print LISTING_HTML; }
#Seconde itération sur répertoires
while () { last if m//; }
while () { last if m//; print REPERTOIRES_HTML; }
#On traite les diff maitenant
print DIFF_HTML "";
while () { last if m//; }
while () { last if m/<\/ajout>/; print DIFF_HTML; }
while () { last if m//; }
while () { last if m/<\/suppression>/; print DIFF_HTML; }
#Cloture des fichiers HTML
print LISTING_HTML <<"FIN";
Listing generated par tree v1.4b1 © 1996 - 2002 by Steve Baker and Thomas Moore
HTML output hacked and copyleft © 1998 by Francesc Rocher, modified by Laurent Saint-Michel (2002)
This software is experimental. Send commends and/or suggestions to Laurent saint-Michel
FIN
print REPERTOIRES_HTML <<"FIN";
Listing generated par tree v1.4b1 © 1996 - 2002 by Steve Baker and Thomas Moore
HTML output hacked and copyleft © 1998 by Francesc Rocher, modified by Laurent Saint-Michel (2002)
This software is experimental. Send commends and/or suggestions to Laurent saint-Michel
FIN
print DIFF_HTML <<"FIN";
Listing generated par tree v1.4b1 © 1996 - 2002 by Steve Baker and Thomas Moore
HTML output hacked and copyleft © 1998 by Francesc Rocher, modified by Laurent Saint-Michel (2002)
This software is experimental. Send commends and/or suggestions to Laurent saint-Michel
FIN
# On ferme les handler sur les fichiers
close(LISTING_HTML);
close(REPERTOIRES_HTML);
close(DIFF_HTML);
Re: Catalogue HTML d'un file system
J'ai un petit script python qui fait ca, accompagner d'une feuille css, tu en fait ce que tu veut:
Je te laisse comme exercice de faire du html valide, c'est pas trop dur.
import os, sys
from stat import *
def walktree(top, callback, num_step):
'''recursively descend the directory tree rooted at top,
calling the callback function for each regular file'''
for f in os.listdir(top):
pathname = os.path.join(top, f)
mode = os.stat(pathname)[ST_MODE]
if S_ISDIR(mode):
# It's a directory, recurse into it
callback(pathname, num_step)
walktree(pathname, callback,num_step+1)
elif S_ISREG(mode):
# It's a file, call the callback function
callback(pathname, num_step)
else:
# Unknown file type, print a message
print 'Skipping %s' % pathname
def visitfile(file, num):
file = file[file.rfind("/")+1:]
print "<h"+str(num)+">"+ file +"</h"+str(num)+">"
if __name__ == '__main__':
i=1
print ""
walktree(sys.argv[1], visitfile,i)
print ""
-
[^]Re: Catalogue HTML d'un file system
Posté par schyzomarijks () le 30/11/2003 à 19:47. (lien). Évalué à 1.Arg, templeet a manger les balises html comprise de la fonction main, en gros, il y avait l'entête
le script se lance avec comme 1 argument le répertoire à analyser
-
[^]Re: Catalogue HTML d'un file system
Posté par TazForEver () le 30/11/2003 à 21:35. (lien). Évalué à 1.bien mais faut pas te sentir obligé de réécrire os.path.walk voire le nouveau os.walk
Les journaux sont destinés à des informations qui ne sont pas suffisamment intéressantes
pour être validées en dépêche (sinon n'hésitez pas à proposer votre information en
dépêche), qui sont sans rapport avec Linux ou le libre, ou simplement pour donner votre
avis. Si vous désirez poser une question, merci d'utiliser 

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.