Druckversion des Themas

Hier klicken um das Topic im Orginalformat anzusehen

HTML-Editor phase 5 Support _ HTML _ Unbenutzte CSS Klassen finden ...

Geschrieben von: Andreas 18.02.2005 - 11:53

Hi,

wie das so ist. Man bastelt jahrelang an einer Site und die wächst und wächst und irgendwann weiß man nicht mehr, welche Klasse aus dem Stylesheet man noch benutzt und welche nicht - gleiches gilt für Bilder aus dem "zentralen" Grafiken Ordner ...

Ich benutze TopStyle 3.11 und dort gibt es einen Sitereport, der zumindest für die CSS Klassen das gewünschte erledigt. Das Programm findet unbenutzte Klassen (orphan classes). Die Sache hat nur einen Haken: benutzt man multiple Klassen (class="button rechts klein") erkennt TopStyle das (noch!) nicht :-( Also leider nicht zu gebrauchen.

Kennt jemand ein Tool, welches genau das erledigt? CSS Datei nehmen, gucken wo die innerhalb der Site überall verlinkt ist und die nicht benutzten Klassen anzeigen?

Ähnliches sollte ja auch für Bilder funktionieren: Bildordner auswählen, und Site durchsuchen, welche der im Ordner enthaltenen Bilder/Dateien nicht irgendwo in der Site benutzt wird.

Das würde mich gewaltig nach vorne bringen *g*

Viele Grüße

Andreas

Geschrieben von: Conny 18.02.2005 - 14:42

Hallo Andreas,
mir geht es genau so!
Ich 'sortiere' auch mit TopStyle und da wo ich meine überflüßiges gefunden zu haben, lösche ich es nicht sondern, wird es erst mal auskommentiert.
Wenn mir dann in den nächsten Wochen nichts auffällt, wird es erst endgültig gelöscht.... So muß man sich helfen.

Was die Bilder angeht, so fällt mir gerade ein, geht das etwas mühsam mit XENU.

Und zwar, da wo ich denke, daß es ein Bild ist was nicht mehr verwendet wird, nehme ich es raus in einem Ablageordner, lasse dann Xenu laufen und sollte es doch noch in gebrauch sein, gibt es eine Fehlermeldung. Ohne Fehlermeldung kann das Bild draußen bleiben, mit Fehlermeldung weiß ich erstens, daß das Bild noch Verwendung findet und zweitens wo.

Ich weiß, alles etwas umständlich, aber wie gesagt 'So muß man sich helfen...'

cu
Conny

Geschrieben von: i.b.g 18.02.2005 - 17:23

Hallo,

es geht sicher auch mit PHP, aber ich bin nur mit Perl vertraut:

QUELLTEXT
#!c:/perl/bin/perl
# finde nicht verwendete bilder

use strict;
use warnings;
use File::Find;

my $home;
my $picture_subdir;
my $picture_dir;
my $picture;
my @picture_files;
my @html_files;
my $html;
my $scan_result;

# hier das stammverzeichnis der homepage eintragen
$home = 'c:/home/ingo/html/interpro_neu';
# hier das unterverzeichnis der bilder eintragen
$picture_subdir = 'bilder';

$picture_dir = $home.'/'.$picture_subdir;

find(\&find_picture, $picture_dir);
@picture_files = sort @picture_files;

find(\&find_html, $home);

foreach $picture (@picture_files) {
     foreach $html (@html_files) {
           $scan_result = &scan($html, $picture);
           if ($scan_result) {
                 last;
           }
     }
     unless ($scan_result) {
           print "\nDas Bild : $picture wird zurzeit nicht verwendet!\n";
     }
}

sub find_picture {
     my $akt_file = $File::Find::name;
     push @picture_files,$akt_file if ($akt_file =~ /[jpg|gif|png]$/i);
     foreach (@picture_files) {
           s/$picture_dir\///;
     }
}

sub find_html {
     my $akt_file = $File::Find::name;
     push @html_files,$akt_file if ($akt_file =~ /\..?htm.?$/i);
}

sub scan {
      my ($html,$picture)=@_;
      my $html_content;
      my $found;
      undef $/;
      open (IN,"< $html");
      $html_content=<IN>;
      close IN;
      $found = $html_content =~ /$picture/;
      return $found;
}


Ich komme damit ziemlich gut klar. Man könnte, wenn man Zeit und Lust hätte, noch ein Formular und eine Ausgabe über CGI dazu tun. Mir reichts so.

Geschrieben von: Andreas 18.02.2005 - 19:02

Hi Ingo,

sowas schwebte mir im Kopf auch schon vor ... nur faul wie ich bin ... wink.gif

Habe das Script mal ausprobiert. Funktioniert leider nicht so ganz wie erhofft. Ich weiß allerdings noch nicht warum ... ich musste die Pfade ein wenig umbiegen und nun findet er alle Bilder als unbenutzt. Meine Bilder liegen ziemlich woanders, als der Ordner, den ich durchsuchen möchte.

d:\www\filmf1\film\kritiken wird durchsucht und d:\www\filmf1\grafic\jpeg ist der abzugleichende Bilderordner. Also benutze ich

QUELLTEXT
$home = 'd:/www/filmf1/film/kritiken';
$picture_dir = 'd:/www/filmf1/grafic/jpeg';
und das Script läuft auch (fast - bei S geht es in den Timeout wink.gif ) durch. Nur halt mit allen Bildern als unbenutzt.

Mit
QUELLTEXT
$home = 'd:/www/filmf1/film/kritiken';
$picture_subdir = '../../grafic/jpeg';
$picture_dir = $home.'/'.$picture_subdir;
übrigens das gleiche Ergebnis.

Und die Bilder erkennt er offensichtlich, denn die findet er alle :-o

Grüße

Andreas - noch bastelnd

Geschrieben von: hondocrx 18.02.2005 - 21:43

eventuell könnte das Script bei den Class-Problem helfen.

Ist nicht das sauberste und auch nur auf einem lokalen Server getestet.
Es werden folgende Dateien untersucht.

htm
html
php
php4
incl

Dabei ist es egal ob Groß oder Keinschreibung

In Zeile 2 Muss der Pfad zu der CSS-Datei rein.
Das Verzeichnes mit der Suchdatei ist als oberstes Verzeichniss anzusehen.


Die Datenstruktur der CSS sollte so aussehen:

QUELLTEXT
.Navi2                 {background-color:#CC0000;}
.Navi3                 {background-color:#FED634;}
.Navi4                             {color:#000000; background-color:#FFEA96;}
a.Navi5:link,  a.Navi5:visited  {text-decoration:none; color:#000000;}
a.Navi5:active, a.Navi5:hover {text-decoration:none; color:#006600;}



Ist eine deklaration mit "/* Navi2 {background-color:#CC0000;}" aukommentiert wird diese trotzdem mit in die Suche einbezogen.

Bekannte Fehler

Es werden auch Definitionen wie body,td,a usw angezeicht da diese nicht über class definiert werden müssen.

Eventuell ist das ganze Ding ja auch schrott.

MfG

QUELLTEXT
<?php
$css_Datei="css/style.css";


function dirlist($dir)
{
$list = array();
$dp = opendir($dir);
while($file = readdir($dp))
{
   if(!is_dir($dir."/" . $file)) $list[] = $dir. "/" . $file;
   else
   {
       if($file != ".." && $file != ".")
       {
           $clist = dirlist($dir."/".$file);
           foreach($clist as $file2)
           {
               array_push($list, $file2);
           }
       }
   }
}
return $list;
}

$list = dirlist($DOCUMENT_ROOT . substr($PHP_SELF,0,strrpos($PHP_SELF,"/")));



for ($counter_list=0;$counter_list<count($list);$counter_list++)
   {
   $endung=pathinfo($list[$counter_list]);
   if (strtolower($endung['extension'])=='htm' || strtolower($endung['extension'])=='html' || strtolower($endung['extension'])=='php' || strtolower($endung['extension'])=='php4' || strtolower($endung['extension'])=='incl')
      {
      $dateizeilen = file($list[$counter_list]);
      //echo count($dateizeilen).'<br>';
      for($count_dateizeilen=0;$count_dateizeilen < count($dateizeilen);$count_dateizeilen++)
         {
         if(strpos($dateizeilen[$count_dateizeilen],'class'))
           {
           $dateizeilen[$count_dateizeilen]=str_replace('"','\'',$dateizeilen[$count_dateizeilen]);
           $classEN=explode('class=\'',$dateizeilen[$count_dateizeilen]);
           //echo count($classEN).'<br>';
           for($count_classEN=1;$count_classEN<count($classEN);$count_classEN++)
              {
              $classEN_1=explode('\'',$classEN[$count_classEN]);
              //echo "<textarea name='' cols='60' rows='3'>".$classEN_1[0]."</textarea><br>";
              $class_array[]=$classEN_1[0];
              }
           }
         }
      }

   //echo $list[$counter_list].'<br>';
   }


$class_array_1=array_unique($class_array);



//
//#############################################################################
//

$csszeilen = file($css_Datei);
      for($count_csszeilen=0;$count_csszeilen < count($csszeilen);$count_csszeilen++)
         {
         if(strpos($csszeilen[$count_csszeilen],'{'))
           {
            $csszeilen_1=explode('{',$csszeilen[$count_csszeilen]);
            $csszeilen_1[0]=trim(str_replace('/*','',$csszeilen_1[0]));
            $csszeilen_1[0]=trim(str_replace(':link','',$csszeilen_1[0]));
            $csszeilen_1[0]=trim(str_replace(':hover','',$csszeilen_1[0]));
            $csszeilen_1[0]=trim(str_replace(':visited','',$csszeilen_1[0]));
            $csszeilen_1[0]=trim(str_replace(':active','',$csszeilen_1[0]));

            if(strpos($csszeilen_1[0],','))
              {
              $csskomma=explode(',',$csszeilen_1[0]);
              for($i=0;$i<count($csskomma);$i++)
                  $css_array[]=trim($csskomma[$i]);
                  }
            else $css_array[]=trim($csszeilen_1[0],'.');
            }
         }



//
//#############################################################################
//



//echo count($css_array).'<br>';

$css_array_1=array_unique($css_array);
//echo count($css_array_1).'<br>';

for($i=0;$i < count($css_array_1);$i++)
   {
   if(strpos($css_array_1[$i],'.'))
     {
     $css_array_1[$i]=str_replace('.','',strstr($css_array_1[$i],'.'));
     }

    if($css_array_1[$i]!='')
       {
       $css[] = $css_array_1[$i];
       }
}
$unbenutzt = array_diff($css,$class_array_1);
for($i=0;$i < count($unbenutzt);$i++)
  {
  if($unbenutzt[$i]!='')echo $unbenutzt[$i].'<br>';
  }
?>

Geschrieben von: i.b.g 19.02.2005 - 10:56

Hallo,

ZITAT(Andreas @ 18.02.2005 - 19:02)
Habe das Script mal ausprobiert. Funktioniert leider nicht so ganz wie erhofft. Ich weiß allerdings noch nicht warum ...


Nun das ist leicht zu erklären, denn ich hab es erst mal so geschrieben, dass das Grafikverzeichnis ein Unterverzeichnis der Homepage ist.

Ich hab es noch ein wenig angepasst, und nun sollte es eigentlich wie erwartet laufen. Man muss jetzt die beiden Verzeichnisse komplett eingeben, so dass sie unabhängig von einander sind. bei den HTML-dateien werden alle Dateien gefunden, die htm in der Dateiergänzung haben, htm html shtm shtml phtm phtml usw. Dateien mit php werden nicht gefunden. Kann man aber leicht im Filter anpassen.

zurzeit
QUELLTEXT
$akt_file =~ /\..?htm.?$/i

ändern in z.B.
QUELLTEXT
$akt_file =~ /\.(.?htm.?|php)$/i


Versuch einfach mal das hier:
QUELLTEXT
#!c:/perl/bin/perl
# finde nicht verwendete bilder

use strict;
use warnings;
use File::Find;


my $home;
my $picture_subdir;
my $picture_dir;
my $picture;
my @picture_files;
my @html_files;
my $html;
my $scan_result;
my $not_used=0;

# hier das stammverzeichnis der homepage eintragen
$home = 'c:/home/ingo/html/interpro_neu';
# hier das verzeichnis der bilder eintragen
$picture_dir = 'c:/home/ingo/html/interpro_neu/bilder';


find(\&find_picture, $picture_dir);
@picture_files = sort @picture_files;

print $#picture_files." Bilder in $picture_dir gefunden!\nDavon werden nicht verwendet:\n";

find(\&find_html, $home);

foreach $picture (@picture_files) {
     foreach $html (@html_files) {
           $scan_result = &scan($html, $picture);
           if ($scan_result) {
                 last;
           }
     }
     unless ($scan_result) {
           print "$picture_dir/$picture \n";
           $not_used ++
     }
}
print "Insgesamt werden $not_used Bilder nicht verwendet!\n";


sub find_picture {
     my $akt_file = $File::Find::name;
     push @picture_files,$akt_file if ($akt_file =~ /\.(jpg|gif|png)$/i);
     foreach (@picture_files) {
           s/$picture_dir\///;
     }
}

sub find_html {
     my $akt_file = $File::Find::name;
     push @html_files,$akt_file if ($akt_file =~ /\..?htm.?$/i);
}

sub scan {
     my ($html,$picture)=@_;
     my $html_content;
     my $found;
     undef $/;
     open (IN,"< $html");
     $html_content=<IN>;
     close IN;
     $found = $html_content =~ /$picture/;
     return $found;
}


Ich werd da mal sporadisch dran bleiben, mal sehen was noch so geht. Man hat ja sonst nichts zu tun wink.gif .

Geschrieben von: Conny 19.02.2005 - 12:43

Öhm, Ingo..... blush.gif

wie und wo wird denn dieses Script eingebunden? huh.gif

cu
Conny

Geschrieben von: i.b.g 19.02.2005 - 14:39

Hallo,

von Einbinden kann man nicht sprechen.

Einfach in irgend ein Verzeichnis packen, von wo aus Perl es starten kann - auf der Kommandozeile. Wenn man lange genug mit Unix gearbeitet hat (was ich zurzeit leider nicht mehr tue) kommt man von der Kommandozeile nur ganz schwer los.

c:\irgend_ein_pfad> perl find_not_used_picture.pl

wenn du es so genannt hast.

Ein Problem gibt es aber doch noch.

Wir adressieren ja mit Phase relativ, es sei denn, es hat einen triftigen Grund es nicht zu tun. Des Scanner kann damit noch nicht so richtig umgehen, wenn das Grafikverzeichnis nicht unterhalb des Homepageverzeichnisses - oder eben des Verzeichnisses das gescannt werden soll - liegt.
Darüber muss ich noch einmal grübeln, wie man das relative Adressieren berücksichtigen kann.

Ich sag ja, das ist nur ein Anfang und für mich hier passt es eben.

Geschrieben von: i.b.g 19.02.2005 - 15:55

Hallo,

nun hat mich doch ein wenig der Ehrgeiz gepackt.

Habe nun noch etwas verändert und denke, dass es so eigentlich funktionieren könnte. Also, Andreas, probier's mal mit dieser Version.

Bei mir scheint es jedenfalls erfolgreich zu sein. Ich kann es ja dann mal kommentieren, wenn es denn sinn machen sollte.

QUELLTEXT
#!c:/perl/bin/perl
# finde nicht verwendete bilder

use strict;
use warnings;
use File::Find;

my $home;
my $picture_subdir;
my $picture_dir;
my $picture;
my @picture_files;
my @html_files;
my $html;
my $scan_result;
my $not_used=0;

# hier das verzeichnis eintragen, wo die html-dateien sind
$home = 'c:/home/ingo/html/interpro_neu/schulen';
# hier das verzeichnis der bilder eintragen
$picture_dir = 'c:/home/ingo/html/interpro_neu/bilder';

find(\&find_picture, $picture_dir);
@picture_files = sort @picture_files;

print 1+$#picture_files." Bilder in $picture_dir gefunden!\nDavon werden nicht verwendet:\n";

find(\&find_html, $home);

foreach $picture (@picture_files) {
     foreach $html (@html_files) {
           $scan_result = &scan($html, $picture);
           if ($scan_result) {
                 last;
           }
     }
     unless ($scan_result) {
           print "$picture \n";
           $not_used ++;
     }
}
print "Insgesamt werden $not_used Bilder nicht verwendet!\n";

sub find_picture {
     my $akt_file = $File::Find::name;
     push @picture_files,$akt_file if ($akt_file =~ /\.(jpg|gif|png)$/i);
}

sub find_html {
     my $akt_file = $File::Find::name;
     push @html_files,$akt_file if ($akt_file =~ /\..?htm.?$/i);
}

sub del_common {
     my ($html, $picture_dir) = @_;
     my @html_dir;
     @html_dir = split('/', $html);
     foreach (@html_dir) {
           $picture_dir =~ s/$_\///i;
     }
     return $picture_dir;
}

sub scan {
     my ($html,$picture)=@_;
     my $html_content;
     my $found;
     undef $/;
     $picture = del_common($html, $picture);
     open (IN,"< $html");
     $html_content=<IN>;
     close IN;
     $found = $html_content =~ /$picture/;
     return $found;
}


ACHTUNG! ACHTUNG!
CSS-Dateien nicht vergessen! Auch dort können Bilder verlinkt sein, die in den HTML-Dateien nicht mehr erscheinen.

Geschrieben von: Conny 19.02.2005 - 16:52

Hi,
ich habe die Datei mal auf'm Server im Ordner cgi-bin gelegt, um sie dann über ein php-include aufzurufen.... (der Server *kann* Perl!)

Das Ergebnis ist http://www.trimmelterhof.de/unusedpics.php.
(Aber nicht lachen!)

Anscheinend habe ich es (noch) nicht verstanden huh.gif

cu
Conny

Geschrieben von: i.b.g 19.02.2005 - 17:19

Hallo Conny,

nun, da gibt es nichts zu lachen. Es ist einfach nur kein CGI-Script. Es kann folglich auch nicht über einen Browser oder ähnliches, was das HTTP-Protokoll verwendet, aufgerufen werde. Deswegen bekommst Du lediglich den Quelltext angezeigt.

Im vorliegenden Zustand ist es nur für den lokalen Betrieb gedacht.

Am besten Du legst ein Verzeichnis an; z.B. c:\programme\perlen
und da kopierst Du das script hinein; z.B. als pic_find.pl
dann legst Du eine kleine pic_find.bat mit dem Inhalt an:

QUELLTEXT
@echo off
c:\perl\bin\perl.exe c:\programme\perlen\pic_find.pl > c:\programme\perlen\bilder_not_used.txt
notepad c:\programme\perlen\bilder_not_used.txt


Dann verlinkst Du diese Batch auf den Desktop und kannst das Ganze mit Doppelklick starten. Das Scanergebnis geht in eine Datei und wird von Notpad angezeigt.

Geschrieben von: Conny 19.02.2005 - 17:27

Hi Ingo,
Klar ist es kein CGI-Script, aber der Server sieht vor, daß auch Perl-Scripte in den cgi-Ordner abgelegt werden müßen.
Das Perl-Script für den Counter liegt ja auch da, also habe ich mir gedacht: "schau-mir-mal".

Schade eigentlich, daß das nicht geht....

Das mit der bat-Datei werde ich wohl hinbekommen! Danke biggrin.gif

cu
Conny

Geschrieben von: Conny 19.02.2005 - 17:47

So, da bin ich wieder.
*.bat gemacht, geschrieben, gibt aber folgende Fehlermeldung:

QUELLTEXT
Can't locate strickt.pm in @INC <@INC contains:  .> at
D:Website\cgi-bin\nup.pl line 4.
BEGIN failed--compilation aborted at D:Website\cgi-bin\nup.pl line 4.


Zeile 4 in der Perl-Datei ist bei mir: use strict;

Mir scheint, irgendwas wird nicht gefunden?

cu
Conny

Geschrieben von: i.b.g 19.02.2005 - 19:13

Hallo,

nun das ist mir jetzt vollkommen unverständlich. Die Fehlermeldung sagt, dass das Modul stickt.pm nicht gefunden wird, das hab ich aber nicht benutzt, weil es das gar nicht gibt.

Also mach wir das folgende:

Du nimmst den foldenden Code und ersetzt damit den in Deiner Perldatei. Dann passt Du noch die beiden Verzeichnisse an und veruchst es noch einmal.

QUELLTEXT
#!c:/perl/bin/perl
# finde nicht verwendete bilder

use strict;
use warnings;
use File::Find;

my $home;
my $picture_dir;
my $picture;
my @picture_files;
my @html_files;
my $html;
my $scan_result;
my $not_used=0;

# hier das standardverzeichnis eintragen, aus dem die dateien gescannt werden sollen
$home = 'c:/home/ingo/html/interpro_neu';
# hier das standardverzeichnis der bilder eintragen
$picture_dir = 'c:/home/ingo/html/interpro_neu';

if ($ARGV[0]) {$home = $ARGV[0];}
$home =~ s/\\/\//g;
if ($ARGV[1]) {$picture_dir = $ARGV[1];} else {$picture_dir = $home;}
$picture_dir =~ s/\\/\//g;

# zu scannende dateien suchen
find(\&find_html, $home);
# bilder suchen
find(\&find_picture, $picture_dir);

print 1+$#html_files." HTML- und CSS-Dateien in $home gefunden.\n";
print 1+$#picture_files." Bilder in $picture_dir gefunden!\nDavon werden nicht verwendet:\n";

# zu scannende dateien sortieren
@html_files = sort {uc($a) cmp uc($b)} @html_files;
# bilder sortieren
@picture_files = sort {uc($a) cmp uc($b)} @picture_files;

foreach $picture (@picture_files) {
     foreach $html (@html_files) {
           #hier wird der scanner gerufen
           $scan_result = &scan($html, $picture);
           # wenn ein treffer gefunden, dann naechstes bild hernehmen
           if ($scan_result) {
                 last;
           }
     }
     # wenn kein treffer, ausgeben und zählen
     unless ($scan_result) {
           print "$picture \n";
           $not_used ++;
     }
}

print "Insgesamt werden $not_used Bilder nicht verwendet!\n";


# bilder finder ---------------------------------------------------------------
sub find_picture {
     my $akt_file = $File::Find::name;
     push @picture_files,$akt_file if ($akt_file =~ /\.(jpg|gif|png)$/i);
}
# zu scannende dateien finden -------------------------------------------------
sub find_html {
     my $akt_file = $File::Find::name;
     push @html_files,$akt_file if ($akt_file =~ /\.(.?htm.?|css)$/i);
}
# löschen der gemeinsamen teile in den pfadangaben ----------------------------
sub del_common {
     my ($html, $picture_dir) = @_;
     my @html_dir;
     @html_dir = split('/', $html);
     foreach (@html_dir) {
           $picture_dir =~ s/^$_\///i;
     }
     return $picture_dir;
}
# aktuelle datei scannen ------------------------------------------------------
sub scan {
     my ($html,$picture)=@_;
     my $html_content;
     my $found;
     undef $/;
     $picture = del_common($html, $picture);
     open (IN,"< $html");
     $html_content=<IN>;
     close IN;
     $found = $html_content =~ /$picture/;
     return $found;
}


Das ist bei mir ohne Fehler durchgelaufen und arbeitet jetzt richtig gut.

Es ist jetzt auch möglich, dass man der Batch zwei Parameter übergibt:

pic_find.bat c:\home\html\interpro\schulen c:\home\html\interpro\bilder

Dafür muss die Batch noch so geändert werden:
QUELLTEXT
@echo off
c:\perl\bin\perl.exe c:\programme\perlen\pic_find.pl %1 %2 > c:\programme\perlen\bilder_not_used.txt
notepad c:\programme\perlen\bilder_not_used.txt


Wenn man den zweiten Parameter weglässt geht das Script davon aus, dass er wie der erste heißen soll. Wird nichts übergeben, werden die Standardverzeichnisse genommen wie sie im Script angegeben sind. (siehe Kommentare)

Gibt es eigentlich eine Möglichlkeit, dass ich das Script hier irgendwie hochladen kann, damit ich nicht immer alles posten muss?

Ich mach aber erst mal Schluss für heute. Es gibt einen guten Südtiroler Lagrein (Rotwein) und eine lecker "Weib" die auf mich warten wink.gif.

Geschrieben von: i.b.g 20.02.2005 - 10:04

Hallo,

wenn man einen Link auf eine Batch-Datei angelegt hat, dann kann man einige Einstellungen in den Eigenschaften (Rechtsklick auf die *.lnk-Datei) vornehmen, die das Leben angenehmer machen.

Für den hier diskutierten Fall könnte das sein:

Registerkarte Programm
1. in der Befehlszeile an das Ende ein Leerzeichen+? - Wirkung: man bekommt beim Start der *.lnk ein kleines Fenster wo man die Parameter für die Batch eingeben kann.

2. Ausführen wird auf "Minimiert" gesetzt - Wirkung: es geht kein DOS-Fenster auf sondern nur das Feld in der Taskleiste.

3. Ein Häkchen bei Beenden beim Schließen - Wirkung: das DOS-Fenster wird automatisch geschlossen, wenn der letzte Befehl der Batch abgearbeitet ist.

Wer dann noch will, kann der *.lnk ein anderes Symbol zuordenen.

Sollte ich jetzt Trivialitäten genannt haben, so bitte ich um Entschuldigung. blush.gif

Geschrieben von: Conny 20.02.2005 - 10:59

Moin Ingo,

ohne Dich jetzt -am Sonntagmorgen- auf die nerven gehen zu wollen, aber, auch nach einsetzen des letzten Codes bleibt es exakt bei der gleichen Fehlermeldung von weiter oben.

Es *stolpert* über die aufforderung: 'use strickt' und meldet:
Can't locate strickt.pm in @INC <@INC contains: .> at
D:Website\cgi-bin\nup.pl line 4.


Warum auch immer....

cu
Conny

Geschrieben von: i.b.g 20.02.2005 - 11:24

Hallo,

ZITAT(Conny @ 20.02.2005 - 10:59)
ohne Dich jetzt -am Sonntagmorgen- auf die nerven gehen zu wollen ...


Ach wo, das ist schon in Ordnung, denn es muss ja funktionieren. Ich hab meine Datei mal http://www.mvnet.de/priv/belka/perlfiles/ als Zip abgelegt. Du kannst Sie dort abholen.

Sollte es dann immer noch nicht laufen, dann schreib einfach mal ein # vor die Zeile, denn eigentlich wird Sie nur benötigt, um bei der Programmierung Larry's Konventionen einzuhalten.

Das muss doch zu packen sein!

Geschrieben von: Conny 20.02.2005 - 13:26

Hi Ingo,

ZITAT(i.b.g @ 20.02.2005 - 11:24)
....Sollte es dann immer noch nicht laufen, dann schreib einfach mal ein # vor die Zeile...


Die Idee (es aus zu kommentieren) hatte ich auch schon, hat leider nichts gebracht!
Denn, die Fehlermeldung wiederholt sich dann einfach mit der nächsten Zeile: use warnings.

Inzwischen glaube ich, daß es an der perl.exe liegt!
(das ist die exe die bei xampp-light dabei war)

Könntest Du mir nicht mal Deine perl.exe zukommen lassen?
Damit wäre es unter Umständen schon aus der Welt!

cu
Conny

Geschrieben von: i.b.g 20.02.2005 - 15:54

Hallo Conny,

das ist ja wie verhext. Ob das an der perl.exe liegt, vermag ich nicht zu sagen. Ich glaub es aber nicht. Ich hatte auch gehofft Andreas meldet sich noch einmal.
Zunächst kannst Du die Zeile

use warnings;

auch auskommentieren. Nur die

use File::Find;

ist dringend notwendig, weil das Modul die Dateibäume durchsucht. Starten und "gucken wat er macht".

Geht es wieder schief, dann solltest Du mal folgendes auf der Kommandozeile eingeben:

c:\> perl -V > perlvers.txt

Den Inhalt der perlvers.txt würde ich gern mal sehen; es könnte nämlich sein, dass Perl gar nicht richtig installiert ist, dann hilft die perl. exe auch nichts. Besonders interessant ist der Abschnitt am Ende:

QUELLTEXT
Characteristics of this binary (from libperl):
 Compile-time options: MULTIPLICITY USE_ITHREADS PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS
 Locally applied patches:
     ActivePerl Build 635
 Built under MSWin32
 Compiled at Feb  4 2003 15:34:21
 %ENV:
   PERL="C:\PERL\bin"
 @INC:
   C:/Perl/lib
   C:/Perl/site/lib
   .

Geschrieben von: Conny 20.02.2005 - 17:29

Hi Ingo,
langsam kommen wir die Sache näher.
So wie es aussieht ist Perl tatsächlich nicht, oder nicht richtig installiert!

Es gibt zwar eine Perl.exe bei mir auf dem Rechner, allerdings nicht wo man ihm vermuten wurde (C:\perl\bin) sondern in ein Apache-Ordner auf D: (Dort wo Apache auch instaliert ist.)

Neben der Perl.exe gibt es nur noch die perl58.dll (ich nehme mal an, Version 5.8)
und sonst nichts!

Auf der Kommandozeile: D:\Apache\perl\bin\perl -V > perlvers.txt eingegeben gibt wieder eine Fehlermeldung: 'Kann Config.pm nicht finden'.
Die txt wird zwar erstellt, bleibt aber leer.

Fazit: Keine oder fehlerhafte installation!

Frage: Wie und wo bekomme ich Perl heruntergeleden und richtig installiert?

cu
Conny

Geschrieben von: i.b.g 20.02.2005 - 17:50

Hallo Conny,

ZITAT(Conny @ 20.02.2005 - 17:29)
Frage: Wie und wo bekomme ich Perl heruntergeleden und richtig installiert?


Der beste Weg ist, bei http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl ein Paket für Win herunterzuladen.

Wie du dem Apachen dann aber sagst, wo er nach Perl suchen soll, weiß ich nicht, denn ich habe den nicht.

Ich arbeite seit Ewigkeiten mit http://www.janaserver.de/start.php?lang=de.

Hoffe, wir kommen dem Ziel damit näher.

Geschrieben von: Conny 20.02.2005 - 18:43

Hi Ingo,

auf AktiveState war ich auch schon, ich fand es halt eine Menge Zeug, was man da runterladen soll...
Nun habe ich es aber gemacht und es scheint zu funktionieren! biggrin.gif

Die 'bilder_not_used.txt' wurde erstellt und, ich meine, es wurde alles richtig ausgelesen.

Danke!

cu
Conny

Geschrieben von: Andreas 20.02.2005 - 20:50

ZITAT(i.b.g @ 20.02.2005 - 15:54)
Ich hatte auch gehofft Andreas meldet sich noch einmal.

blush.gif
Ja, tut er ja auch! Bin aber das Wochenende nicht so zum Basteln gekommen. Die Frau war mit anderen Frauen in Köln auf Tour und ich habe das Haus gehütet und Tim gezeigt, wie er vom Stuhl auf den Tisch klettern kann, oder fast allein aus einem Glas Milch über seinen Pullover schütten muss tongue.gif

Habe die letzte Version des Scriptes ausprobiert ... im Browser (auch wenn die Perl Datei im richtigen Verzeichnis liegt) wird sie nicht ausgeführt, der Perl Interpreter startet zwar kurz, aber irgendwie tut das Script nichts.

Also die Batch:
QUELLTEXT
@echo off
d:\perl\bin\perl.exe d:\www\filmf1\cgi-local\find_files.pl > d:\www\filmf1\cgi-local\bilder_not_used.txt
notepad d:\www\filmf1\cgi-local\bilder_not_used.txt


Variablen im Script:
HTML
# hier das standardverzeichnis eintragen, aus dem die dateien gescannt werden sollen
$home = 'd:/www/filmf1/film/kritiken';
# hier das standardverzeichnis der bilder eintragen
$picture_dir = 'd:/www/filmf1/grafic/jpeg';


Ausgabe des Perlscriptes:
QUELLTEXT
357 HTML- und CSS-Dateien in d:/www/filmf1/film/kritiken gefunden.
0 Bilder in d:/www/filmf1/film/kritiken gefunden!
Davon werden nicht verwendet:
Insgesamt werden 0 Bilder nicht verwendet!


357 stimmt, aber das Verzeichnis für die Bilder passt irgendwie nicht. Und ich kann mir auch nicht vorstellen, dass die Bilder *alle* verwendet werden. Vor allen Dingen ist das Script schon nach 2 Sekunden durch unsure.gif

Ich gucke noch mal ... hab's aber noch nicht verstanden smilywand.gif

Grüße

Andreas - der sich jetzt allerdings erstmal an der Flasche Dimples vergreift, die er für's PC-Heile-Machen bekommen hat (wenigstens das kann ich devlish.gif )

Nachtrag: Habe jetzt mal
QUELLTEXT
if ($ARGV[1]) {$picture_dir = $ARGV[1];} else {$picture_dir = $home;}
auskommentiert ... und jetzt läuft das Script. Kann ein wenig dauern bei knapp 18 MB Grafiken je max. 50 KB ...

Nachtrag2: Ein Glas Dimple ist weg *g* Das Script läuft ... sehr wahrscheinlich *g* Mir fiel gerade auf, dass ich in einem anderen Ordner ebenfalls Kritiken habe, die sich aus dem gleichen Grafikordner bedienen. Also gerade mal ein wenig kopiert und das Script nochmal laufen lassen. Dauert 'n Viertelstündchen ...

Geschrieben von: Conny 20.02.2005 - 21:20

Hi,
also, bei mir läuft es nun wohl so wie es soll.
Habe eine *.lnk gebastelt, der die *.bat ansteuert.
Die txt wird geschrieben und es werden über 2000(!) Bilder gelistet!
(Das hat so lange gedauert, daß ich schon gedacht habe, es wurde schon wieder nicht klappen)

Das es soviele Bilder sind, erklärt sich dadurch, daß die Pics-Verzeichnisse auch sgn. Depots haben in der die *wissentlich* nicht verwendete Bilder aufbewahrt werden (nach dem Moto: man kann nie wissen... wink.gif ).

Daraus kommt bei mir, lieber Ingo, der Wunsch auf, in der pl-Datei noch eine Zeile zu haben in der man die Ordner angeben kann, die außenvor gelassen werden sollen (also nicht durchsucht).
Könntest Du das noch irgendwie hinein basteln?

cu
aus dem recht verschneitem Trier

Conny

Geschrieben von: Andreas 20.02.2005 - 21:41

ZITAT(Conny @ 20.02.2005 - 21:20)
Das es soviele Bilder sind, erklärt sich dadurch, daß die Pics-Verzeichnisse auch sgn. Depots haben in der die *wissentlich* nicht verwendete Bilder aufbewahrt werden

<dumm>Äh, werden auch Unterverzeichnisse berücksichtigt? Bei den HTML Dateien auch?</dumm>

Ansonsten sieht es so aus, als ob das Script auch bei mir funktioniert ...

Geschrieben von: hondocrx 20.02.2005 - 23:45

Vielleicht hat ja jemand lust die Online-Version zu testen.

Kontrolliert werden jpg,jpeg,bmp,gif,png (Gross/Kleinschreibung ist egal)

folgende Quelltextdateien werden kontrolliert: htm,html,php,php4,incl

Die Datei liegt im obersten gewünschten Verzeichniss.
Auch Verweise mit ../../ werden gefunden.



bekannte Fehler:
Es wird immer ein Bild zu Wenig angezeigt.


MfG hondocrx





QUELLTEXT
<?php

function dirlist($dir)
{
$list = array();
$dp = opendir($dir);
while($file = readdir($dp))
{
   if(!is_dir($dir."/" . $file)) $list[] = $dir. "/" . $file;
   else
   {
       if($file != ".." && $file != ".")
       {
           $clist = dirlist($dir."/".$file);
           foreach($clist as $file2)
           {
               array_push($list, $file2);
           }
       }
   }
}
return $list;
}

$list = dirlist($DOCUMENT_ROOT . substr($PHP_SELF,0,strrpos($PHP_SELF,"/")));

for ($counter_list=0;$counter_list<count($list);$counter_list++)
   {
   $endung=pathinfo($list[$counter_list]);
   if(eregi('jpg',$endung['extension']) || eregi('jpeg',$endung['extension']) || eregi('bmp',$endung['extension']) || eregi('gif',$endung['extension']) || eregi('png',$endung['extension']))
     {
     $bild_url[]=$list[$counter_list];
     }

   if (strtolower($endung['extension'])=='htm' || strtolower($endung['extension'])=='js' || strtolower($endung['extension'])=='php' || strtolower($endung['extension'])=='php4' || strtolower($endung['extension'])=='incl')
      {
      $dateizeilen = file($list[$counter_list]);
      for($count_dateizeilen=0;$count_dateizeilen < count($dateizeilen);$count_dateizeilen++)
         {
         if(eregi('.jpg',$dateizeilen[$count_dateizeilen]) || eregi('.jpeg',$dateizeilen[$count_dateizeilen]) || eregi('.bmp',$dateizeilen[$count_dateizeilen]) || eregi('.gif',$dateizeilen[$count_dateizeilen]) || eregi('.png',$dateizeilen[$count_dateizeilen]))
           {
           $dateizeilen[$count_dateizeilen]=str_replace('"','\'',$dateizeilen[$count_dateizeilen]);
           $zeile = explode('\'',$dateizeilen[$count_dateizeilen]);
           for($count_zeile=0;$count_zeile < count($zeile);$count_zeile++)
              {
              if(eregi('.jpg',$zeile[$count_zeile]) || eregi('.jpeg',$zeile[$count_zeile]) || eregi('.bmp',$zeile[$count_zeile]) || eregi('.gif',$zeile[$count_zeile]) || eregi('.png',$zeile[$count_zeile]))
                {
                if(eregi('http:',$zeile[$count_zeile]))
                  {
                  $quelltext[]=$zeile[$count_zeile];
                  }
                if(ereg('\.\.',$zeile[$count_zeile]))
                  {
                  $verzeichniswechsel=explode('..',$zeile[$count_zeile]);
                  $temp_1=strrev(dirname($list[$counter_list]));
                  for($count_verzeichniswechsel=0;$count_verzeichniswechsel < count($verzeichniswechsel)-1;$count_verzeichniswechsel++)
                     {
                     $temp_1=strchr($temp_1,'/');
                     $temp_1=substr($temp_1,1,strlen($temp_1)-1);
                     }
                  $quelltext[]=strrev($temp_1).$verzeichniswechsel[count($verzeichniswechsel)-1];
                  }
                  $quelltext[] = dirname($list[$counter_list]).'/'.$zeile[$count_zeile];
                }
              }
           }
         }
      }
   }
$unbenutzt = array_diff($bild_url,$quelltext);
for($i=0;$i < count($unbenutzt);$i++)
  {
  if($unbenutzt[$i]!='')echo $unbenutzt[$i].'<br>';
  }
?>

Geschrieben von: i.b.g 21.02.2005 - 7:29

Hallo,

ZITAT(Andreas @ 20.02.2005 - 21:41)
werden auch Unterverzeichnisse berücksichtigt? Bei den HTML Dateien auch?


Ja die werden durch Find:File automatisch durchsucht.

Die Zeilen mit dem $ARGV sind ja für die Übergabe von Parametern gedacht. Da muss einfach noch eine Bedingung rein und dann passt das.

Das mit dem Ausschließen von Verzeichnissen ist an sich nicht kompliziert. Das mach ich heute abend mal.

Ansonsten freut es mich, das es nun funktioniert.

Dass das Script etwas Zeit braucht, ist normal. Es ist sucht sich alle Dateien (Bilder, HTML) und dann geht es für jedes Bild durch jede HTML bis ein Treffen gelandet wird oder eben nicht. Bei großen Seiten und vielen Bildern - da muss der Rechner schon rackern.

Geschrieben von: Andreas 21.02.2005 - 7:53

ZITAT(i.b.g @ 21.02.2005 - 7:29)
Ja die werden durch Find:File automatisch durchsucht.
mad.gif Ewig kein Perl angeguckt ...

Hab's aber auch gemerkt, nachdem ich das dann einfach ausprobiert habe. Sieht so aus, als ob es jetzt läuft. Allerdings bin ich über die Anzahl der unbenutzen JPGs entsetzt *g*

Wie eingangs gesagt, das würde mich nach vorne bringen! Nun habe ich wieder WebSpace frei und muß nicht nach mehr betteln devlish.gif

Grüße

Andreas

Geschrieben von: Conny 21.02.2005 - 12:33

Hallo Hondocrx,

ZITAT(hondocrx @ 20.02.2005 - 23:45)
Vielleicht hat ja jemand lust die Online-Version zu testen.
*


das Script funktioniert sowohl auf'm lokalen Server als auch im Internet.
Das online Ergebnis findest Du http://www.trimmelterhof.de/unusedpics.php

Nachteil: Auch hier bräuchte man eine Möglichkeit Ordner auszuschließen.
Denn Bilder in Bildergalerien die JS gesteuert sind, werden sehr wohl benutzt, dennoch als 'Leiche' ausgewiesen. Ebenso mit Bilder die nach *draussen* verlinkt wurden (also nicht auf dem eigenen Webspace verwendung finden), sollte man ausschließen können.

Vorteil der Online-Variante: die endlos großen Depots fallen weg! wink.gif

cu
Conny

Geschrieben von: hondocrx 21.02.2005 - 13:43

An dem Ordnerproblem wird gearbeitet. Hier stellt sich die Frage eine Datei anzulegen welche die Ordner enthält oder ob man ein Auswahlfeld vorgibt. Mal sehen.

Zu dem JS-Problem: Genau das sollte eigentlich funktionieren.
Poste mal bitte einen Javacode wo dies so ist.

MfG

Geschrieben von: Conny 21.02.2005 - 14:02

Hallo,
eine Seite wo so'ne Slideshow zu finden ist, ist diese: http://www.trimmelterhof.de/galerie_brand.php

Das externe Script sieht so aus:

HTML
//*Steuert die Bildergalerie ,Lagerhallenbrand, auf bilder.htm*/
//*Slide Show Steuerung*//
var currentSlide = 0;
var currentDirection = 1;
var delay = 4500;
var lastTime = new Date().getTime() + delay;
var slides = new Array();

slides[0] = 'galerie/aaa.jpg';
slides[1] = 'galerie/brand/brand01.jpg';
slides[2] = 'galerie/brand/brand02.jpg';
<!-- und weitere Bilder... -->
slides[36] = 'galerie/brand/brand36.jpg';
slideshow(1);

function slideshow(direction)
{
if (null == direction)
{
if ((lastTime + delay) > new Date().getTime())
{
direction = 0;
}
else
{
direction = currentDirection;
}
}
else
{
currentDirection = direction;
}
if (direction != 0)
{
if (direction > 0)
{
currentSlide++;
if (currentSlide > (slides.length - 1))
{
currentSlide = 0;
}
}
else
{
currentSlide = currentSlide-1;
if (currentSlide < 0)
{
currentSlide = (slides.length - 1);
}
}
lastTime = new Date().getTime();
update(slides[currentSlide]);
setTimeout("slideshow();",delay);
}
}

var currentIndex = 0;
var currentIsSuper = false;
function update(url, index, isSuper)
{
currentIndex = index;
currentIsSuper = isSuper;

if (null != document['Bilder'])
{
if (isSuper)
{
document['Bilder'].src='../../gfbild/smily.gif';
}
else
{
document['Bilder'].src='../../gfbild/smily.gif';
}
}
return;
}


Das PHP-Script wirft aber u.a. genau diese Bilder aus.
(Auszug)
/home/www/web784/html/galerie/brand/brand04.jpg
/home/www/web784/html/galerie/brand/brand05.jpg
/home/www/web784/html/galerie/brand/brand06.jpg


Ich hoffe, das bringt Dich weiter.

cu
Conny

Geschrieben von: hondocrx 21.02.2005 - 14:55

Ich geh mal davon aus das mein Script den Code für die Slideshow nicht finden kann.

Ist dieser Code extern eingebunden und wenn ja welchen Namen hat das Script?

MfG

Geschrieben von: Conny 21.02.2005 - 14:58

Hi,

Ja, das Script ist extern eingebunden der Pfad wäre:
http://www.trimmelterhof.de/sheets/galerie_brand.js

cu
Conny

Geschrieben von: hondocrx 21.02.2005 - 15:40

Wenn Du das Script jetzt noch einal testest sollte es gehen.
Habe js mit dazugenommen.


MfG

Geschrieben von: Conny 21.02.2005 - 16:05

Hi,
nö, hat sich nicht gebessert:
http://www.trimmelterhof.de/unusedpics.php

Alles was nach *galerie* kommt ist definitiv in Gebrauch!
Alle Bilder (hinter Galerie) sind Script (JS) gesteuert.
(wie das Beispiel Brand)

Mir scheint, das die *Verbindung* zwischen den Ordner Galerie und die im Order Sheets befindliche JavaScripte nicht gemacht wird (woher auch..).
Wird der Ordner Galerie ohne diesen zusammenhang, als 'stand allone' sozusagen, untersucht, ist das Ergebnis natürlich richtig (nähmlich alles unused).

Es wäre imho leichter 'galerie' auszuschließen (also den Ordner)

cu
Conny

Geschrieben von: hondocrx 21.02.2005 - 19:37

Das Script findet alle Dateien welche im gleichen Ordner wie das Script liegen und auch alle die darunter platziert sind.
Wenn Du Dir das Array $list mal ausgeben lässt wirst Du sehen das alle Dateien gefunden werden.


Den Ordner Galerie auszuschließen wird es nicht geben. Heute oder morgen Nacht wird eine Ordnerauswahl eingebaut werden.

Warum das Script bei Dir nicht geht weiß ich nicht.
Ich hab es heute unter einem wirklich großen Auftritt probiert und es wurden alle von mir als Dummy-Daten hinterlegten Bilder gefunden.

Hier noch einmal der Code.

QUELLTEXT
<?php

function dirlist($dir)
{
$list = array();
$dp = opendir($dir);
while($file = readdir($dp))
{
  if(!is_dir($dir."/" . $file)) $list[] = $dir. "/" . $file;
  else
  {
      if($file != ".." && $file != ".")
      {
          $clist = dirlist($dir."/".$file);
          foreach($clist as $file2)
          {
              array_push($list, $file2);
          }
      }
  }
}
return $list;
}

$list = dirlist($DOCUMENT_ROOT . substr($PHP_SELF,0,strrpos($PHP_SELF,"/")));

for ($counter_list=0;$counter_list<count($list);$counter_list++)
  {
  $endung=pathinfo($list[$counter_list]);
  if(eregi('jpg',$endung['extension']) || eregi('jpeg',$endung['extension']) || eregi('bmp',$endung['extension']) || eregi('gif',$endung['extension']) || eregi('png',$endung['extension']))
    {
    $bild_url[]=$list[$counter_list];
    }

  if (strtolower($endung['extension'])=='htm' || strtolower($endung['extension'])=='js' || strtolower($endung['extension'])=='php' || strtolower($endung['extension'])=='php4' || strtolower($endung['extension'])=='incl')
     {
     $dateizeilen = file($list[$counter_list]);
     for($count_dateizeilen=0;$count_dateizeilen < count($dateizeilen);$count_dateizeilen++)
        {
        if(eregi('.jpg',$dateizeilen[$count_dateizeilen]) || eregi('.jpeg',$dateizeilen[$count_dateizeilen]) || eregi('.bmp',$dateizeilen[$count_dateizeilen]) || eregi('.gif',$dateizeilen[$count_dateizeilen]) || eregi('.png',$dateizeilen[$count_dateizeilen]))
          {
          $dateizeilen[$count_dateizeilen]=str_replace('"','\'',$dateizeilen[$count_dateizeilen]);
          $zeile = explode('\'',$dateizeilen[$count_dateizeilen]);
          for($count_zeile=0;$count_zeile < count($zeile);$count_zeile++)
             {
             if(eregi('.jpg',$zeile[$count_zeile]) || eregi('.jpeg',$zeile[$count_zeile]) || eregi('.bmp',$zeile[$count_zeile]) || eregi('.gif',$zeile[$count_zeile]) || eregi('.png',$zeile[$count_zeile]))
               {
               if(eregi('http:',$zeile[$count_zeile]))
                 {
                 $quelltext[]=$zeile[$count_zeile];
                 }
               if(ereg('\.\.',$zeile[$count_zeile]))
                 {
                 $verzeichniswechsel=explode('..',$zeile[$count_zeile]);
                 $temp_1=strrev(dirname($list[$counter_list]));
                 for($count_verzeichniswechsel=0;$count_verzeichniswechsel < count($verzeichniswechsel)-1;$count_verzeichniswechsel++)
                    {
                    $temp_1=strchr($temp_1,'/');
                    $temp_1=substr($temp_1,1,strlen($temp_1)-1);
                    }
                 $quelltext[]=strrev($temp_1).$verzeichniswechsel[count($verzeichniswechsel)-1];
                 }
                 $quelltext[] = dirname($list[$counter_list]).'/'.$zeile[$count_zeile];
               }
             }
          }
        }
     }
  }
$unbenutzt = array_diff($bild_url,$quelltext);
for($i=0;$i < count($unbenutzt);$i++)
 {
 if($unbenutzt[$i]!='')echo $unbenutzt[$i].'<br>';
 }
?>

Geschrieben von: Conny 21.02.2005 - 19:56

Hallo,

ZITAT
...Warum das Script bei Dir nicht geht weiß ich nicht.
Ich hab es heute unter einem wirklich großen Auftritt probiert und es wurden alle von mir als Dummy-Daten hinterlegten Bilder gefunden....


Schade eigentlich, denn ich bin der php-Sprache auch nicht mächtig genug Dir eine Hlfe zu sein sad.gif
Fest steht aber, das was er ausgibt ist in gebrauch und das extra eingebaute DUMMY wurde nicht gefunden!
DUMMY Bild


DUMMY Pfad:
(http://www.trimmelterhof.de/pics/jpbild/DUMMY.JPG)

Link http://www.trimmelterhof.de/unusedpics.php.

cu
Conny

PS. Script wurde auch erneuert.

Geschrieben von: Andreas 21.02.2005 - 21:15

Oh Gott, Conny!

Hast Du der Fledermaus die Flügel abgeschnitten?!










devlish.gif

Geschrieben von: Conny 21.02.2005 - 21:21

Na, hör mal!
Das ist mein persönlicher Beschützer !! w00t.gif

Geschrieben von: i.b.g 26.02.2005 - 19:04

Hallo,

ich hab da in den letzten Tagen nicht so viel Zeit gehabt, aber ich bin mit dem Unbenutzte-Bilder-Finden ein Stückchen weiter gekommen. Die neueste Version kann http://www.mvnet.de/priv/belka/perlfiles/ heruntergeladen werden.

Installation:

QUELLTEXT
1. Zip herunterladen
2. in das cgi-bin des lokalen HTTP-Servers entpacken
   ist 7Zip gepackt und enthält ein komplettes Verzeichnis mit drei Dateien

           picnotused.pl   das Perlscript
           picnotused.cfg  die Konfiguration
           picnotused.css  Stylesheet für die Ausgabe

3. Kontrolle, ob auch Perl installiert ist
4. im Browser eingeben (Achtung Beispiel!)
           
           http://localhost/cgi-bin/picnotused/picnotused.pl

   Es sollte sich des Programm öffnen und die Möglichkeiten
   
           * Start Suche
           * Optionen

   anbieten.
   Die Konfiguration ist kommentiert.


Würde mich freuen, wenn es einem nützt. Bei mir tut es seinen Dienst. Achtung, wenn große Homepages gescannt werden dauert es eine Zeit bis die Ausgabe erscheint.

Geschrieben von: Conny 27.02.2005 - 1:22

Hi Ingo,
es scheint zu funktionieren!
Mich befremdet aber, daß die Ausgabe so aussieht:

QUELLTEXT
Suche nach unbenutzten Bildern
Start Suche
Optionen
106 zu scannende Dateien in:
   D:/Website
gefunden.
nicht berücksichtigte Verzeichnisse:
   A
   b
   l
   a
   g
   e
   |
   f
   o
   r
   e
   n
   |
//* Hier zwischen weitere vertikale Verzeichnisse, die , die unten auch Horizontal stehen *//
   s
   h
   e
   e
   t
   s
   Ablage|foren|galerie|include|movie|perl|scripts|sheets

//* Dann folgt: *//

175 Bilder in:
   D:/Website/pics
gefunden.
nicht berücksichtigte Verzeichnisse:
   D
   e
   p
   o
   t
   _
   J
   P
   G
   |
//* Also wieder erst Vertikal, dann Horizontal *//

Depot_JPG|Depot_Gif

Davon werden nicht verwendet:
D:/Website/pics/gfbild/adobe.gif
D:/Website/pics/gfbild/lesen.gif
D:/Website/pics/gfbild/pc-grr.gif
D:/Website/pics/gfbild/plan-0a.gif
D:/Website/pics/gfbild/play.gif
D:/Website/pics/gfbild/rev.gif
D:/Website/pics/gfbild/stop.gif

//* Und weitere Bilder... *//

Insgesamt werden 22 Bilder nicht verwendet!

(c) ibs&p 2005, Version vom 26.02.2005 19:42


Einige Bilder sind tatsächlich *ausser Betrieb*, einige aber definitiv in Gebrauch!
So sind *play.gif* rev und stop die Gifs für die Steuerung der Bildergalerien und keine Leichen.

cu
Conny

Geschrieben von: Conny 27.02.2005 - 14:38

Hallo Ingo,
bin in der Sache ein kleinen Schritt weiter.
Einige Bilder werden deswegen als *Leiche* angezeigt, weil sie sich -bei mir- weder in eine HTML-, noch in eine PHP-Datei befinden, sondern in eine *.DAT Datei die dann mittels PHP includiert wird.

Schleierhaft ist mir immer noch die vertikale Ausgabe des Textes im Perl-Script.
*Gewollt* ist das doch wohl nicht oder?

cu
Conny

Geschrieben von: i.b.g 27.02.2005 - 18:54

Hallo Conny,

melde mich jetzt erst, weil ich mit meiner Tochter eine Hausarbeit in Biologie angefertigt habe. "Die Honigbiene" - war nicht so schlimm, weil der Großvater Imker ist.

Die Erweiterungen sind in der nächsten Version variabel vom Nutzer vorgebbar. Das mit der Vertikalen Ausgabe ist seltsam und bei mir noch nicht aufgetreten. Es ist aber so, dass das Script im Moment vollständige Pfade benötigt. D.h. Du musst das noch so machen:

QUELLTEXT
# Konfiguration für das Suchen nach unbenutzten Bildern
# ibs&p 2005
# picnotused.cfg
#
# Hier können die Verzeichnisse eingetragen werden, wo die zu scannenden oder
# sonstigen Dateien sich befinden.
# Dateien sind zurzeit: *htm*,css,php*,js
# In einer nächsten Version können hier auch die Dateiendungen hinterlegt werden,
# die gescannt werden sollen.
# Es können mehrer Verzeichnisse mit Komma getrennt eingegeben werden.

HOME=c:/home/ingo/html/interpro_neu

#
# das gleiche für die Bilder
# Bilder sind zurzeit: jpg, gif, png

BILD=c:/home/ingo/html/interpro_neu/bilder

#
# Verzeichnisse, die unter HOME liegen und nicht gescannt werden sollen

NOHTML=c:/home/ingo/html/interpro_neu/schulen,c:/home/ingo/html/interpro_neu/kultur

#
# Verzeichnisse, die unter BILD liegen und nicht ausgelesen weden sollen

NOBILD=c:/home/ingo/html/interpro_neu/bilder/mbt,c:/home/ingo/html/interpro_neu/bilder/icons


Könnte sein, dass es daran liegt. Und keine Angst vor langen Zeilen, denn solange Du einfach weiterschreibst und dem "textarea" den Zeilenumbruch überlässt und nicht Enter drückst, bleibt es eine einzige Zeile.

Ansonsten hat es wohl im Wesentlichen richtig gearbeitet.


[EDIT]
Sorry, Sorry, Code mit Testresten ins Netz gestellt!!! blush.gif
Werde nachher gleich eine bereinigte Version zum Download ablegen.
[/EDIT]

Geschrieben von: i.b.g 27.02.2005 - 19:35

Hallo,

so kleinen Bug behoben. Problem war die split-Funktion mit der man Textvariablen zu Arrays konvertieren kann.

QUELLTEXT
   my @nohtml = split ('|', $nohtml);
Ergibt ein Array, wo jeweils ein Zeichen ein Element des Arrays ist.

QUELLTEXT
   my @nohtml = split ('\|', $nohtml);
Wenn man den | mit \ maskiert, dann wird der | als Trennzeichen zwischen Zeichenketten erkannt.

Es ist zwar richtig, dass split mit einer Regexp umgehen kann, aber dass zwischen Hochkommata gesetzte Zeichen genauso wie in einer Regexp behandelt werden, war mir bisher unklar.

Da wirst'e alt wie 'ne Kuh und lernst immer noch dazu. wink.gif

Geschrieben von: Conny 27.02.2005 - 23:17

Hallo Ingo,
herzlichen Glückwunsch biggrin.gif
DasScript arbeitet -bei mir- nun fehlerfrei!!

Herzlichen Dank für die Arbeit und die Mühe die Du Dir gemacht hast. icon13.gif

cu
Conny (Der immer schon gesagt hat: "Eine Kuh macht muh, viele Kühe machen mühe" wink.gif )

Geschrieben von: i.b.g 05.03.2005 - 14:05

Hallo Andreas, Hallo Conny und alle anderen,

habe das Suchscript nun so erweitert, dass neben den fest "verdrahteten" Dateierweiterungen auch eigene in der Konfiguration angegeben werden können.

Neueste Version wie immer http://www.mvnet.de/priv/belka/perlfiles/!!

Geschrieben von: Conny 06.03.2005 - 17:21

Hallo Ingo,
hab' die neue Version gerade mal durchlaufen lassen...

PERFEKT! biggrin.gif

Das Script arbeitet fehlerfrei, auch die *.dat-Dateien werden nun korrekt ausgelesen.

cu
Conny

Unterstützt von Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)