Bonjour,
Je 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).
# Re: Catalogue HTML d'un file system
Posté par Laurent Saint-Michel . Évalué à 8.
-- 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
Posté par schyzomarijks . Évalué à 4.
Je te laisse comme exercice de faire du html valide, c'est pas trop dur.
[^] # Re: Catalogue HTML d'un file system
Posté par schyzomarijks . Évalué à 1.
le script se lance avec comme 1 argument le répertoire à analyser
[^] # Re: Catalogue HTML d'un file system
Posté par TazForEver . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.