imgindex.pl
--help
| --version
imgindex.pl
[ --verbose
... | --no_verbose
]
[ --in
IN
] [ --out
OUT
] [ --xslt
XSLT
]
imgindex.pl
[ --verbose
... | --no_verbose
]
[ --xslt
XSLT
] [ --ptn_in
PTN_IN
] [ --ptn_out
PTN_OUT
]
[ --overwrite
| --no_overwrite
] STORYID
...
--help
Gibt eine kurze Hilfe aus.
--version
Gibt kurze Hinweise zum Programm und die Version aus.
--verbose
Die Namen verarbeiteter Dateien und Ausnahmen werden nach STDERR ausgegeben. In der Voreinstellung ist diese Option nicht gesetzt.
--no_verbose
Diese Option hebt die Wirkung der Option --verbose
auf.
--in
IN
Diese Option wirkt nur, wenn die Befehlszeile keine Kennung einer Bildergeschichte (STORYID
) enthält. IN
ist der Pfad der Bildergeschichte (Eingabedatei) oder eines Verzeichnisses. Wenn IN
ein Verzeichnispfad ist, wird
als Pfad der Bildergeschichte angenommen.IN
/story.xml
Voreingestellt ist story.xml
.
--out
OUT
OUT
ist der Pfad der Bildrang-Datei (Ausgabedatei), wenn die Befehlszeile keine Kennung einer Bildergeschichte (STORYID
) enthält. Andernfalls wirkt diese Option nicht. Wenn OUT
nicht angegeben ist, werden vom Pfad der Bildergeschichte (IN
) das Suffix .xml
und Punkte am Ende entfernt und .imgix.xml
angehängt. Eine existierende Datei wird überschrieben.
--xslt
XSLT
"none
" oder die URL eines XSLT-Dokuments relativ zu den Bildrang-Dateien.
Wenn XSLT
nicht "none"
ist, wird in die Bildrang-Dateien eine xml-stylesheet
-Verarbeitungsanweisung geschrieben, die auf XSLT
verweist. Ein absoluter Pfad wird in einen relativen Pfad umgeformt.
imgindex.pl --help zeigt den voreingestellten Wert.
--ptn_in
PTN_IN
Diese Option wirkt, wenn die Befehlszeile eine odere mehrere Kennungen von Bildergeschichten (STORYID
) enthält. Der Wert ist eine Zeichenkette, die den Platzhalter ${storyid}
enthält. Der Platzhalter wird durch die Kennung einer Bildergeschichte ersetzt. Das Ergebnis der Ersetzung ist der Pfad der Bildergeschichte (Eingabedatei).
imgindex.pl --help zeigt den voreingestellten Wert.
--ptn_out
PTN_OUT
Diese Option wirkt, wenn die Befehlszeile eine odere mehrere Kennungen von Bildergeschichten (STORYID
) enthält. Der Wert ist eine Zeichenkette, die den Platzhalter ${storyid}
enthält. Der Platzhalter wird durch die Kennung einer Bildergeschichte ersetzt. Das Ergebnis der Ersetzung ist der Dateipfad der Bildbewertung (Ausgabedatei).
imgindex.pl --help zeigt den voreingestellten Wert.
--overwrite
Diese Option wirkt, wenn die Befehlszeile eine odere mehrere Kennungen von Bildergeschichten (STORYID
) enthält. Die Kennung einer Bildergeschichte wird in das Muster PTN_OUT
engesetzt. Wenn sich so der Pfad einer existierenden Datei ergibt, bleibt diese Datei normalerweise erhalten. Die Option --overwrite
bewirkt, dass die existierende Datei gelöscht wird und eine neue Ausgabedatei erstellt wird.
--no_overwrite
Diese Option hebt die Wirkung der Option --overwrite
auf.
STORYID
Die Kennung einer Bildergeschichte.
Wenn die Befehlszeile wenigstens eine Kennung einer Bildergeschichte enthält, werden die Pfade der Bildergeschichten (Eingabedateien) und der Bildrang-Dateien (Ausgabedateien) aus den Mustern PTN_IN
und PTN_OUT
gebildet. Existierende Bildrang-Dateien werden nach Maßgabe der Option --overwrite
ersetzt.
Bilder der Website http://kleider.herbaer.de
sollen von Web-Suchmaschinen gefunden werden. Dazu will ich sie in einer Sitemap-Datei auflisten. Die Website umfasst zu viele Bilder, um sie alle aufzulisten. Deshalb sollen von jeder Bildergeschichte nur einige "repräsentative" Bilder ausgewählt werden. Dieses Programm liest eine Bildergeschichte, ordnet jedem Bild einen "Rang" zu und schreibt die Bilddaten mit den zugeordneten "Rängen" in eine "Bildrang"-Datei, eine XML-Datei des Namensraums http://herbaer.de/xmlns/20110902/imgindex
(s. imgindex.rng
)
Aus den Bildern mit dem kleinsten Rang (beste Bewertung) werden in einem weiteren Schritt Bilder ausgewählt, die als Vorschaubild oder Teil des Vorschaubildes für die Bildergeschichte geeignet sind. In einem ersten Durchlauf werden Bilder von Kleidern, deren Titel nicht auf Schuhe hinweist, gewählt. Wenn kein geeignetes Bild gefunden wird, werden im zweiten Durchlauf Bilder gewählt, deren Titel nicht auf Schuhe hinweist. Wenn im zweiten Durchlauf kein geeignetes Bild gefunden wird, werden Bilder gewählt, deren Titel auf ein Kleid hinweist.
In der Befehlszeile können die Kennungen (STORYID
) einer oder mehrere Bildergeschichten angegeben werden. Die Dateipfade der Bildergeschichten werden gebildet, indem in der Vorlage PTN_IN
der Platzhalter ${storyid}
durch die Kennung der Bildergeschichte ersetzt wird.
Zu jeder Bildergeschichte erstellt dieses Programm eine Bildrang-Datei. Die Dateipfade der Bildrang-Dateien werden aus der Vorlage PTN_OUT
gebildet. Existierende Bildrang-Dateien bleiben erhalten, wenn nicht die Option --overwrite
festlegt, dass sie ersetzt werden.
Wenn keine Kennung einer Bildgeschichte angegeben ist, dann ist IN
der Pfad der Bildergeschichte, deren Bilder bewertet werden, und OUT
der Pfad der erstellten Bildrang-Datei.
Der Rang eines Bildes ist eine natürliche Zahl. Eine kleine Zahl bezeichnet ein bevorzugtes Bild, große Zahlen bezeichnen weniger wichtige Bilder.
Aus dem Bildtitel (Attribut jpg/@alt
) bestimmt das Programm einen vorläufigen Rang gemäß den folgenden Regeln:
Auswahlkriterium | vorl. Rang |
---|---|
Der Bildtitel enthält eines der Wörter Profil , Hüfte , Gesäß oder Schulterblätter . | 7 |
Der Bildtitel enthält das Wort Brust , aber unmittelbar davor nicht die Zeichenfolge der und unmittelbar danach nicht das Zeichen - . | 6 |
Der Bildtitel enthält das Wort Rücken , aber unmittelbar davor nicht die Zeichenfolge dem und unmittelbar danach nicht das Zeichen - . | 6 |
Der Bildtitel enthält das Wort Schultern , aber unmittelbar davor nicht die Zeichenfolge den und unmittelbar danach nicht das Zeichen - . | 6 |
Der Bildtitel enthält eines der Wörter Oberkörper oder Beine , dem nicht das Zeichen - folgt. | 6 |
Der Bildtitel enthält die Wörte Rock , von und das Wortende Kleid oder kleid in dieser Reihenfolge. | 5 |
Der Bildtitel enthält das Wort total | 3 |
Der Bildtitel enthält eines der Wörter Porträt , Hüften , Passbild oder wttl (das Bild zeigt eine Puppe in einer weiteren Umgebung) | 5 |
Der Bildtitel enthält das Wort im , gefolgt von einem der Wörter Body , Badeanzug , Gymnastikanzug oder Bikini | 2 |
Der Bildtitel enthält eines der Wörter Body , Badeanzug , Gymnastikanzug oder Bikini | 3 |
Die Auswahlkriterien werden der Reihe nach geprüft. Das erste zutreffende Auswahlkriterium bestimmt den vorläufigen Rang eines Bildes.
Der vorläufige Rang wird um 10 erhöht, wenn
von
, gefolgt von einem der Wörter links
, rechts
oder hinten
enthältRücken
und der Titel des vorhergehenden Bildes den Text Oberkörper von
enthält.Wenn der Bildtitel nicht "Kleid" enthält, wird der vorläufige Rang um 20 erhöht.
In jedem Abschnitt (section
- Element) einer Bildergeschichte wird der kleinste vorkommende vorläufige Rang ermittelt. Von mehreren Bildern mit dem gleichen vorläufigen Rang werden Bilder im Hochformat bevorzugt. Von den verbleibenden Bilder bekommt das erste vorkommende Bild den Rang 1. Die anderen Bilder behalten den vorläufigen Rang.
HB_ImageRank
Das Package HB_ImageRank kapselt die Verarbeitung einer Bildgeschichte. Es implementiert einen SAX-Handler. Eine typische Anwendung ist:
my $imgrank =new
HB_ImageRank ({"[cnt]verbose" => 1}) ; $imgrank ->add_story
("bildgeschichte.xml") ; $imgrank ->write_xml
("bildrang.xml", {}) ; $imgrank ->clear
(); $imgrank -> add_story ("bildgeschichte_2.xml") ; $imgrank -> write_xml ("bildrang_2.xml", {}) ;
HB_ImageRank
::new
($args
)$args
ist vom Typ HASHREF. Ein logisch wahrer Wert des Eintrags
bedeutet, dass die Methoden $args
-> {"[cnt]verbose
"}add_story
und write_xml
die Pfade der geöffneten Dateien und Fehlermeldungen nach STDERR ausgeben.
$imgrank
-> clear
()Ein HB_ImageRank
-Objekt kann die Bilder mehrere Bildergeschichte sammeln und bewerten und sie zusammen in einer Bildbewertungs-Datei ausgeben. Die Methode clear
löscht alle gespeicherten Daten zu Bildern.
$imgrank
-> add_story
($fnstory
)$fnstory
ist der Dateipfad einer Bildergeschichte. Die Methode add_story
speichert die Kennungen (Attribut jpg/@src
) und die Titel (Attribut jpg/@alt
) aller Bilder der Bildergeschichte und bestimmt den Rang.
$imgrank
-> write_xml
($fn
, $args
, $meta
)Gibt die gespeicherten Daten zu Bildern in einer Bildrang-Datei aus.
$fn
Der Dateipfad der Bildrang-Datei, in die die gespeicherten Daten geschrieben werden.
$args
$args
ist vom Typ HASHREF. Der Eintrag
bestimmt das Verweisziel der XSLT-Dateien in den Bildrang-Dateien.$args
-> {"xslt
"}
$meta
$meta
ist vom Typ HASHREF. Sie enthält Daten, die zusätzlich im meta
-Element der Bildrang-Datei ausgegeben werden. Die Schlüssel sind die Namen der Kindelemente des meta
-Elements.
loop_storyids
($imgrank
, $args
, $sids
)Erstellt zu jeder Bildergeschichte, deren Kennung in der Liste $sids
enthalten ist, eine Bildrang-Datei.
$imgrank
Das verwendete HB_ImageRank
-Objekt.
$args
Die HASHREF der Befehlszeilen-Argumente.
$sids
Die ARRAYREF enthält die Kennungen der zu verarbeitenden Bildergeschichten.
Das Programm ist mit 5.10 entwickelt. Es benutzt die Standard-Module encoding
, Fcntl
, File::Spec::Functions
und POSIX
, das CPAN-Modul XML::SAX::ParserFactory
und das Modul Herbaer::Readargs
. Es muss auch ein SAX-Parser eingerichtet sein, den XML::SAX::ParserFactory
findet.