Eine String teilen mit AppleScript oder ShellScript

T

Technofrikus

Aktives Mitglied
Thread Starter
Dabei seit
15.01.2006
Beiträge
820
Reaktionspunkte
34
Tach,

ich bastle gerade an einem AutomatorWorkflow der mit Bilder aus Aperture in 2 Auflösungen exportiert, auf meinen FTP hochlädt und mir die Pfade zu den hochgeladenen Fotos mit HTML img-tag drumrum in die Zwischenablage kopiert.

Ich habe es schon soweit hinbekomme, daß das ganze mit EINER Datei funktioniert. Dabei gibt das FTPUpoad-Modul den Dateinamen der hochgeladenen Datei als Text aus. Diesen verarbeite ich mit folgendem ShellScript und kopiere den Output in die Zwischenablage:

Code:
Pfad="http://www.homepage.de/uploads/"
Datei="${@}"
HTML1='<a href="'
HTML2='"><img src="'
HTML3='"/></a>'
Dateisuffix="_small"
Dateiohne="${@//\.jpg}"
Endung=".jpg"
newString="${HTML1}${Pfad}${Datei}${HTML2}${Pfad}${Dateiohne}${Dateisuffix}${Endung}${HTML3}"
echo $newString

Nun bekomme ich bei mehreren Dateien die ich hochladen möchte leider alle Dateinamen mit einem Leerzeichen getrennt als Eingang. Damit funktioniert das Script natürlich nicht mehr.

FRAGE:
Wie kann ich diesen String:
"DSC0001.jpg DSC0002.jpg DSC0003.jpg"
drei Variablen zuweisen:
Foto1 = DSC0001.jpg
Foto2 = DSC0002.jpg
Foto3 = DSC0003.jpg
?
Das sollte natürlich auch mit 2 oder 5 oder 10 Dateien in gleicher Form funktionieren.

Ideen?
 
Hallo,

Code:
set meinString to "DSC0001.jpg DSC0002.jpg DSC0003.jpg"

set AppleScript's text item delimiters to " "
set bilderListe to every text item of meinString

(*

Ein Ergebnis vom Typ Liste

{"DSC0001.jpg", "DSC0002.jpg", "DSC0003.jpg"}

*)

Viele Grüße
 
  • Gefällt mir
Reaktionen: Technofrikus
Ja vielen Dank schonmal! Das macht zwar genau das, nach was ich gefragt habe, aber wie ich jetzt merke ist mir damit nur ein Stück weit geholfen. Ich habe nun die schöne Liste mit den Dateinamen. Die kann ich mit meinem ShellScript aber nicht weiter verarbeiten (bzw ich wüßte nicht wie). Also wäre es wohl am sinnvollsten das ganze als AppleScript weiter zu machen. Doch wie mach ich das nun in AppleScript?

Frage:
set HTML1 to "<a href=""
Das geht nicht. Wie packe ich " in einen String? Mit ' drumherum wie im ShellScript geht es leider nicht.

Ablauf:
1. Variablen setzen (Pfad, HTML-Bausteine, Dateiendung)
2. Variablen mit den Dateinamen aus der Liste setzen
3. Weitere Variablen mit den Dateinamen mit dem Suffix _small angehängt aus der Liste setzen (DSC0001_small.jpg)
4. Die Strings addieren (wie addiert man diese?). Jedes Bild sollte wieder ein Eintrag in einer Liste sein. Das wäre wohl am sinnvollsten.

Das Prinzip der einzelnen Schritte würde mir voll und ganz reichen. Die Tipparbeit mach ich gerne alleine :) Ist ja sowieso schon ein super Service hier von dir. Dankeschön!
 
Hallo,

Code:
set meinString to "DSC0001.jpg DSC0002.jpg DSC0003.jpg"

set AppleScript's text item delimiters to " "
set bilderListe to every text item of meinString

set html_1 to "<a href=\""
set html_2 to "\">"


set html_3 to "<img src=\""
set html_4 to "\"/></a>"

repeat with naechstesBild in bilderListe
	set finalString to html_1 & "Das ist mein Link" & html_2 & html_3 & naechstesBild & html_4
	display dialog finalString
end repeat

Das Beispiel sollte alle Deine Fragen abdecken!
Lass es mal laufen, dann wird Dir der Zusammenhang klarer. Keine Sorge ist nichts schlimmes.
(Das HTML Markup ist nicht korrekt ;-)

Viele Grüße
 
  • Gefällt mir
Reaktionen: Technofrikus
Oh jea! Fast perfekt.

Ich habe jetzt versucht die Dateiendung mit trim_line (siehe hier - ich habe die Subroutine ins Script eingefügt) abzuschneiden um danach "_smal.jpg" wiede anzuhängen. Die Dateiendung wird auch abgeschnitten, aber es wird zwischen jedem Zeichen ein Leerzeichen gesetzt:
Script:
set datei_small to "DSC0001.jpg"
trim_line(datei_small, ".jpg", 1)
Ergebnis:
"D S C 0 0 0 1"

Wenn ich ans Ende noch "return datei_small" anhänge kommt der unveränderte String zurück. Ich versteh das nicht.

--------


Leider funktioniert das mit den " trotzdem nicht. Er meckert zwar nicht mehr, aber der vorgestellte / bleibt auch erhalten.
http://applescriptsourcebook.com/viewtopic.php?pid=47023 Da wird es auch so erklärt, aber bei mir kommt das nicht raus.

Bsp:
Script:
set theString to "\"This is a sentence wraped in quotes.\""
Ergebnis:
"\"This is a sentence wraped in quotes.\""


--------

Den Rest meiner Wünsche habe ich schon selbst hinbekommen :)
 
Backslash (\), nicht Slash (/)! Den bekommst du mit alt-shift-7.
 
Ja sorry, hab in der Beschreibung den falschen genommen, aber im Code war es der richtige (siehe Beispiel)
 
Hallo,

ich "schenke" Dir einer meiner Methoden, um einen String zu beschneiden.

Code:
-- Anzahl Zeichen am Ende entfernen
on AnahlAmEndeEntfernen(alterString, abPosition)
	set alleZeichen to every character of alterString
	set anzahlZeichen to (count of alleZeichen) - abPosition
	set aktuellesZeichen to 0
	set fertigerString to ""
	
	repeat while aktuellesZeichen is not anzahlZeichen
		set aktuellesZeichen to aktuellesZeichen + 1
		set fertigerString to fertigerString & (item aktuellesZeichen of alleZeichen)
	end repeat
	
	return fertigerString
end AnahlAmEndeEntfernen

Viele Grüße
 
  • Gefällt mir
Reaktionen: Technofrikus
Hab ne ganze Weile rumprobiert, aber irgendwas hat immer nicht geklappt. Sehr strange. Irgendwie funktioniert AppleScript bei mir nicht so wie es soll.

Ich habe es jetzt nochmal mit Shell Script probiert und habs nun hinbekommen. Einfach das genommen, was ich hatte und in einer for-Schleife gepackt. Jetzt gehts :) Danke an alle!

Code:
bla="${@}"
Pfad="http://www.example.com/uploads/"
HTML1='<a href="'
HTML2='"><img src="'
HTML3='"/></a>'
Dateisuffix="_small"
Endung=".jpg"
br="<br>"

for var in $bla
do
Datei=$var
Dateiohne="${var//.jpg}"
newString="${HTML1}${Pfad}${Datei}${HTML2}${Pfad}${Dateiohne}${Dateisuffix}${Endung}${HTML3}${br}${br}"
echo $newString
done
 
Zurück
Oben Unten