Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Applescript - Quellcode für html Bildergalerie erzeugen
ich hoffe ich bin hier richtig und ihr könnt mir weiterhelfen.
Ich würde gerne mit Hilfe eines Applescripts den Quellcode für eine html Bildergalerie erzeugen, sprich:
1. Einen Ordner mit Bildern auswählen
2. Für jedes Bild in dem Ordner eine html Zeile in eine Datei schreiben, die wie folgt aussieht:
Irgendwie muss das doch zu schaffen sein, oder?
Also einen Ordner bekomme ich ja schon mal geöffnet und auch die Namen aller Dateien darin ausgelesen, aber dann ...
kann mir denn wirklich keiner bei meinem Problem behilflich sein?
Hier mal mein Script soweit ich es hinbekommen habe. Wie gesagt, es scheitert an der Ausgabe des Textes:
Code:
tell application "Finder"
set meinOrdner to choose folder with prompt "Ordner auswählen"
set speicherplatz to choose folder with prompt "Bildpfad auswählen"
set galeriename to display dialog "Name für die Galerie (rel=lightbox[ * ]" default answer "Galerie Name"
set alttext to display dialog "Alternativtext für die Bilder" default answer "Alternativtext"
set filelist to name of every file of folder meinOrdner
end tell
Gruß
Der Igel
PS.: Kann man Beiträge gar nicht editieren oder bin ich dazu auch nur zu dusselig?
Habe mal ein Grundgerüst gebaut.
Wenn ich das richtig sehe, brauchst du außer »meinOrdner“ imd »speicherplatz« noch ein »server_root«, um den eigentlichen Pfad zu berechnen.
Ich habe im Finder die URL Property der Dateien benutzt, weil die schon mal eine Umwandlung wie Leerzeichen zu %20 machen.
Den Teil zum Galerienamen und deine weiteren Variablen habe ich ignoriert. Das soll hier nur ein Grundgerüst für den Anfang sein.
Code:
set meinOrdner to choose folder with prompt "Ordner auswählen"
set speicherplatz to choose folder with prompt "Bildpfad auswählen"
set server_root to choose folder with prompt "Server-Root auswählen"
--set galeriename to display dialog "Name für die Galerie (rel=lightbox[ * ]" default answer "Galerie Name"
--set alttext to display dialog "Alternativtext für die Bilder" default answer "Alternativtext"
tell application "Finder"
set root_URL to URL of server_root
set l to length of root_URL
set speicherplatz_url to URL of speicherplatz
set speicherplatz_url to text (l + 1) through -1 of speicherplatz_url
set filelist to URL of every document file of folder meinOrdner
end tell
-- get URL compatible names
set URL_list to {}
set old_delims to AppleScript's text item delimiters
set AppleScript's text item delimiters to "/"
repeat with J from 1 to count filelist
set curr to item J of filelist
set image_URL to speicherplatz_url & (text item -1 of curr)
copy image_URL to end of URL_list
end repeat
set AppleScript's text item delimiters to old_delims
set result_strings to {}
repeat with curr in URL_list
set s to "<div class=\"single\">
<a href=\"" & ¬
curr & ¬
"\" rel=\"lightbox[ Variable ]\" title=\" 2. Variable \"><img src=\"" & ¬
curr & ¬
"\" alt=\" 2. Variable\"></a>
</div>"
copy s to end of result_strings
end repeat
set old_delims to AppleScript's text item delimiters
set AppleScript's text item delimiters to return
set html_code to result_strings as text
set AppleScript's text item delimiters to old_delims
html_code
vielen Dank für deine Bemühungen : )
Ich habe dein Script natürlich direkt getestet und dabei sind mir zwei Dinge aufgefallen:
1. Ich bekomme relativ häufig folgenden Error angezeigt:
Code:
error "„text 34 thru -1 of \"file:///.file/id=6571367.4135230/\"“ kann nicht gelesen werden." number -1728 from text 34 thru -1 of "file:///.file/id=6571367.4135230/"
Hin und wieder kommt auch kein Error - je nachdem, welche Ordner ich auswähle. Allerdings bin ich noch nicht dahinter gekommen, wann er kommt und wann nicht.
Zur Ergänzung: Ich speichere die Bilder in Dropbox - wenn ich die Bilder schon alle in den Dropbox Ordner verschiebe ist der Pfad wo die Bilder herkommen und der Speicherort ja derselbe. Vereinfacht das die Sache?
Ich könnte auch den Pfad für den Link im html-Code per Prompt Eingabe selbst eintragen ( Ist eigentlich nur Foto/ *entsprechender Ordnername* / )
2.Wo erhältst du das Ergebnis? Bei mir im Script Editor enthält das Ergebnis (wenn es klappt) immer noch die Backslashes vor den Anführungszeichen.
In der Beschreibung war ich vielleicht etwas knapp. »server_root» muss natürlich ein Ordner oberhalb von »speicherplatz« sein. Es geht nur darum, den Anfang vom kompletten Festplattenpfad, der nachher für den URL nicht interessiert, zu beseitigen. Wenn der Festplatten-URL zum Beispiel »file://localhost/Users/js/Documents/pix/train.png« lautet, willst du für den URL wahrscheinlich nur den Teil »/pix/train.png« haben. Wenn als »server_root« der eigene Dokumente-Ordner ausgewählt wird, wirft das Script den Teil »file://localhost/Users/js/Documents« weg. That’s all about this part. Wenn ein übergeordneter Ordner ausgewählt wurde, sollte der String nie zu kurz sein (was er bei deiner Fehlermeldung der Fall ist).
Dass man da eine Prüfung einbauen sollte, ist mir erst nach dem Posting eingefallen (»if offset of server_root in speicherplatz ≠ 1 then display dialog "Such Dir einen besseren Ordner aus ;-)"«.
Der Script Editor zeigt Strings in AppleScript-Syntax an, d.h. mit Backslashes. Das ist aber natürlich nur Anzeige. Ich hatte ein leeres TextWrangler-Fenster offen und hab noch die Zeilen
Code:
tell application "TextWrangler"
set document 1 to html_code
end
benutzt. Andere Programme gehen natürlich auch. (All die Backslashes in der Variable s habe ich auch nicht getippt, sondern umgekehrt mit »text of window 1« erzeugt.) Wenn du »html_code« in eine Datei schreibst, sind die Backslashes auch weg.
Ok, vielen Dank für die Aufklärung - das klingt einleuchtend.
Ich habe das ganze mal mit einigen Ordnern getestet und es funktioniert tatsächlich immer, außer wenn ich Bilder aus dem Dropbox Ordner wähle.
(Als »speicherplatz« wäre das »/Users/User/Documents/Dropbox/Public/Webseite/Fotos/Ordner_mit_Bildern« und als »server_root« eben »/Users/User/Documents/Dropbox/Public/Webseite«) Sollte der Logik nach ja eigentlich funktionieren wie bei anderen Ordnern auch.
Wäre jetzt auch kein riesiges Problem dann muss ich eben die Ordner noch im normalen Foto Ordner bei mir anlegen - da klappt es ja.
In der Textausgabe von TextWrangler sind die Backslashes wie gewollt weg
Aber irgendwas habe ich immer noch nicht richtig gemacht, denn in der Ausgabe stehen nicht die Datei Pfade sondern immer so etwas:
Verstehe ich auf Anhieb auch nicht. Erkennt man in den »Antworten« unten im Script Editor, was falsch ist? Schreib auch mal an einigen Stellen ein »log« in das Script. z.B. »log "Wert von l: " & l« nach der Zeile, in der die Variable l definiert wird. Damit kann man sich an das Problem meistens heran tasten.
Spontan eine andere Idee: Ist irgend ein »Ordner« bei dir in Wirklichkeit ein Alias oder Link? (Müsste man in »Antworten« auch erkennen.)
Hallo,
ich habe gerade noch einmal intensiv ausprobiert und getestet.
Ich habe auch den Hinweis mit dem »log "Wert von l: " & l« befolgt und dabei ist mir aufgefallen:
Wenn ich normale Ordner im Finder auswähle (z.B. welche aus dem Bilder Ordner) dann ist der Wert eigentlich immer 32 - wähle ich aber aus dem Dropbox Ordner ist der Wert immer 33.
Also habe ich mir gedacht, ändere mal die Code Zeile
Code:
set speicherplatz_url to text (l + 1) through -1 of speicherplatz_url
um und addiere nicht auf l noch 1 drauf -> es hat funktioniert und es gab keinen Error
Jetzt weiß ich nur leider nicht wofür das + 1 eigentlich gedacht war? Die Endausgabe bleibt nämlich leider unverändert in der Form mit id=/...
So, da ich in der letzten Zeit keine Bildergalerien mehr online stellen musste habe ich auch eine Weile nicht mehr an dem Script gearbeitet. Gestern bin ich dann endlich mal dazu gekommen bin mir etwas mehr Zeit für das Script zu nehmen und jetzt funktioniert es auch so, wie es soll.
Die nächste Bildergalerie kann kommen
Hier das fertige Ergebnis, vielleicht sucht ja mal wer anderes so etwas und kann was damit anfangen:
Code:
set Bilder to choose folder with prompt "Ordner mit Bildern auswählen" default location "/Users"
set Thumbs to choose folder with prompt "Ordner mit Vorschaubildern auswählen" default location "/Users"
set speicherplatz to choose folder with prompt "Server-Bildpfad auswählen" default location "/Users"
set server_root to choose folder with prompt "Server-Root auswählen" default location "/Users"
set tempvar to display dialog "lightbox Name für die Galerie (rel=lightbox[ * ]" default answer "Galerie_Name"
set galeriename to text returned of tempvar
set tempvar to display dialog "Alternativtext für die Bilder" default answer "Alternativtext"
set alttext to text returned of tempvar
tell application "Finder"
set root_URL to POSIX path of server_root
set l to length of root_URL
set speicherplatz_url to POSIX path of speicherplatz
-- Bestimmen des relativen Speicherortes zum root
set speicherplatz_url to text (l + 1) through -1 of speicherplatz_url
set Bildliste to the name of every file of Bilder
set Thumbliste to the name of every file of Thumbs
end tell
-- get URL compatible names
set result_strings to {}
set old_delims to AppleScript's text item delimiters
set AppleScript's text item delimiters to "/"
repeat with J from 1 to count Thumbliste
set currBild to item J of Bildliste
set currThumb to item J of Thumbliste
set Bild_URL to speicherplatz_url & (text item -1 of currBild)
set Thumb_URL to speicherplatz_url & "thumbs/" & (text item -1 of currThumb)
set s to "<div class=\"single\">
<a href=\"" & ¬
Bild_URL & ¬
"\" rel=\"lightbox[ " & galeriename & " ]\" title=\" " & alttext & " \"><img src=\"" & ¬
Thumb_URL & ¬
"\" alt=\" " & alttext & " \"></a>
</div>"
copy s to end of result_strings
end repeat
set old_delims to AppleScript's text item delimiters
set AppleScript's text item delimiters to return
set html_code to result_strings as text
set AppleScript's text item delimiters to old_delims
html_code
-- Ausgabe in TextWrangler
tell application "TextWrangler"
set document 1 to html_code
end tell
Die Ausgabe in TextWrangler habe ich noch etwas meinen Bedürfnissen angepasst, also noch den html Code hinzugefügt, der vor und nach der Galerie benötigt wird, so dass ich am Ende nur noch das Dokument speichern muss.
Verbesserungsvorschläge nehme ich natürlich gerne weiter entgegen.
Ganz doofe Frage, aber wo soll das zum Einsatz kommen? HTML zeigt man ja in der Regel auf Servern und auf solch einem wäre wohl PHP »die« Wahl um HTML zu erzeugen.
Also eigentlich ganz einfach: Ich habe eine Homepage und damit ich den html Code für die Bildergalerie nicht von Hand schreiben muss gibt es dieses Script.
Ich wähle also die entsprechenden Ordner aus, gebe die benötigten Sachen ein und habe am Ende die fertige html Seite, die ich nur noch hochladen muss.
Da die ganze Homepage nur mit html, css und etwas javaScrip geschrieben ist finde ich das so die einfachste und bequemste Möglichkeit meine Bildergalerien zu erstellen - an denen sich auch nichts mehr ändern soll, wenn sie einmal erstellt sind.