Automator: Ergebnis ungleich Null (255)

Maconym

Maconym

Aktives Mitglied
Thread Starter
Dabei seit
08.10.2003
Beiträge
426
Reaktionspunkte
4
AppleScript Error
Der Befehl wurde mit einem Ergebins ungleich Null beendet. (255)

AppleScript Error
Der Befehl wurde mit einem Ergebnis ungleich Null beendet. (255)





Automator soll aus Safari URLs abfragen. Bei einer URL-Anzahl > 300 erscheint die genannte Fehlermeldung und die Ausführung bricht ab.

Vermutlich übersteigt die Anzahl der gefundenen URLs Automators Kapazitäten.

Was kann getan werden?

Ich fand keine Möglichkeit, dass nur ausgewählte URLs zu den Ergebnissen aufgenommen werden, denn die Ergebnis-Filterung wäre erst als nächster Arbeitsschritt möglich.

(Fehlermeldung anbei)
 

Anhänge

  • Error.png
    Error.png
    19,4 KB · Aufrufe: 108
Eine mögliche Lösung des Problems wäre, wenn man folgendes in Automator umsetzen könnte:

-----

– Gehe zu Safari und suche die erste URL

– Gebe die URL an Automator zur Bearbeitung der weiteren Aktionen

– Dann gehe zu Safari und suche die nächste URL

– Wenn jede URL in Safari gefunden und übergeben wurde, dann Ende

-----

Ist eine solche Umsetzung möglich?
 
Oder kann man den für Automator verfügbaren Speicher erweitern...?
 
Maconym schrieb:
Automator soll aus Safari URLs abfragen. Bei einer URL-Anzahl > 300 erscheint die genannte Fehlermeldung und die Ausführung bricht ab.
Vermutlich übersteigt die Anzahl der gefundenen URLs Automators Kapazitäten.
Unwahrscheinlich... aber um Dein Problem zu verstehen muesstest Du es schon genauer beschreiben:
Woher kommen di URLs di abgefragt werden sollen? Aus der aktuell in Safari geladenen Webseite? Was soll dann mit den URLs passieren? ... ?
Ich persoenlich halte wenig bis gar nix von Automator - sicher laesst sich das einfacher mit AppleScript loesen.

Frohes schaffen
Farid
 
Es geht um die aktuelle Safari-Seite. Nachdem eine Seite mit jeder Menge URLs, die auf Bilder (.jpgs) verweisen, geladen wurde, sollen die Bilder auch auf den Rechner geladen werden. Die Bilder selbst werden auf der Seite nicht (in der verlinkten Größe) dargestellt.

Um jetzt z.B. 500 Bilder nicht manuell laden zu müssen, wollte ich dies von Automator erledigen lassen. Das funktioniert auch fehlerlos, solange auf einer Seite nicht zuviele Bilder-URLs vorhanden sind.

Eine Lösung wäre, wenn Automator z.B. nach 100 gefundenen URLs mit dem Download beginnen würde, bevor weitere URLs gelesen werden. Nur wie soll so etwas in Automator erstellt werden?

Oder hat jemand genügend Infos über AppleScript, die sowas ermöglichen können...?
 
Maconym schrieb:
Es geht um die aktuelle Safari-Seite. Nachdem eine Seite mit jeder Menge URLs, die auf Bilder (.jpgs) verweisen, geladen wurde, sollen die Bilder auch auf den Rechner geladen werden. Die Bilder selbst werden auf der Seite nicht (in der verlinkten Größe) dargestellt.
Ich würde das mit einer Kombination AppleScript/Curl versuchen, z.B.:
PHP:
with timeout of 600 seconds
	set otid to text item delimiters
	set text item delimiters to "/"
	
	tell application "Safari"
		set imageCount to (do JavaScript "document.images.length" in document 1)
		
		repeat with i from 0 to imageCount
			try
				set imageURL to (do JavaScript "document.images[" & i & "].src" in document 1)
				set imageName to last text item of imageURL
				set savePath to ("~/Pictures/" & imageName)
				set curlCommand to ("curl " & imageURL & " -o " & savePath)
				do shell script curlCommand
			end try
		end repeat
		
	end tell
	
	set text item delimiters to otid
end timeout
Wenn Du uns den URL der Seite wissen läßt, kann man Dein Problem genauer untersuchen (Mir scheint verstanden zu haben, daß Du nicht direkt mit Bildern auf der aktuellen Seite arbeiten willst, sondern mit Links die auf die runterzuladenden Bilder verweisen...)

Frohes Scripten
Farid
 
*peinlich* Hab wegen damaligen Urlaubs diese Diskussion vergessen und mich nach Weihnachten nicht mehr daran erinnert. Wegen einer anderen Sache bemühe ich mich derzeit wieder mit Automator-Versuchen und erinnerte mich...

Farid, noch da?

Zum Thema: Nach jedem Neustart soll das Desktop-Bild geändert werden. Damit es viele unterschiedliche Bilder gibt, sollen alle Hintergründe von macdesktops.com genutzt werden, aber nur in der notwendigen Größe (bei mir 1280x1024).

Auf macdesktops.com sind im unteren Bereich die Categories zu sehen.

Ich öffne eine Kategorie nach der anderen. Nach jeder Öffnung starte ich Automator mit dem angehängten Ablauf.

Aus den Kategorien, die wenig Bilder enthalten, werden alle gewünschten Bilder geladen. Das heißt, mein erstellter Ablauf funktioniert grundsätzlich. Doch sobald es zu viele Bilder sind, erscheint eine Fehlermeldung.

Kann jemand helfen?
 

Anhänge

  • Automator; verlinkte Bilder laden.jpg
    Automator; verlinkte Bilder laden.jpg
    48,6 KB · Aufrufe: 87
Farid, noch da?
(...)
Kann jemand helfen?

Ich hab' mir Dein Vorhaben und die Macdesktops mal angeschaut: es ist natürlich Irrsinn, sämtliche z.Zt. 5774 Wallpapers runterzuladen - allein das Auslesen aller Links hat mein G5 in 12 Minuten nicht fertiggekriegt.
Ich denke, es ist schlauer, via AppleScript nachzuschauen wieviele Bilder es insgesamt gibt, dann per Zufallsgenerator jeweils eins auszuwählen und das in der gewünschten Auflösung zu laden und sofort als Desktoppicture zu benutzen.
Wenn Du das folgende Script als Anwendung speicherst und zu Deinen Login-Elementen hinzufügst, läuft das ganze automatisch bei jedem einloggen ab:

PHP:
with timeout of 300 seconds
	tell application "Safari"
		set URL of document 1 to "http://macdesktops.com"
		delay 3 -- Sekunden, um die Seite zu laden
		
		set x to (do JavaScript "document.links.length" in document 1) as integer
		repeat with i from 0 to x
			try
				set jsLink to ("document.links[" & i & "].href") as string
				set aLink to do JavaScript jsLink in document 1
				if aLink contains "category=0" then
					set theText to (do JavaScript ("document.links[" & i & "].text") in document 1)
					set allImages to my getNumber(theText)
					exit repeat
				end if
			end try
		end repeat
		
		set y to (random number from 1 to allImages) as integer
		set imagePage to ("http://macdesktops.com/index.phtml?Picture=" & y & "&res=TRUE")
		set URL of document 1 to imagePage
		delay 3 -- Sekunden, um die Seite zu laden
		
		set z to (do JavaScript "document.links.length" in document 1) as integer
		repeat with i from 0 to z
			try
				set jsLink to ("document.links[" & i & "].href") as string
				set aLink to (do JavaScript jsLink in document 1)
				if aLink contains "1280x1024.jpg" then
					set curlCommand to ("curl " & aLink & " -o " & "~/Desktop/" & y & ".jpg")
					do shell script curlCommand
					exit repeat
				end if
			end try
		end repeat
	end tell
	
	set imageFile to ((path to desktop) as string) & (y & ".jpg") as alias
	tell application "Finder"
		set desktop picture to imageFile
	end tell
	
end timeout

on getNumber(theText)
	set text item delimiters to "("
	set t to text items of theText
	set text item delimiters to ""
	set n to (item 2 of t) as string
	set n to (characters 1 thru -2) of n as string
	return n
end getNumber

Wenn das Script für Deine Zwecke brauchbar ist, schicke ich gerne noch ein paar Erklärungen nach.

Viel Spaß
Farid

PS: Ich rauche gern ;)
 
Das mit dem Irrsinn ...

... ist richtig. Doch das bezieht sich nur auf die Kategorie All, denn da braucht mein G5 auch superextralang um sie zu öffnen. Doch die Kategorie All hätte bei meinem ersten Vorschlag auch ausgelassen werden können.

Doch so ein Script wäre grundsätzlich auch die Lösung. Ich habe das Script auf 3 Macs getestet, auch automatisch nach Login; doch überall endet es mit der Fehlermeldung:

"Apple Script Fehler
Die Datei „[Macname]:Users:[Username]: Desktop:[Zufallsnummer].jpg“ wurde nicht gefunden."

Hab ich übersehen, dass auf jedem Mac etwas verändert werden muss?

Kann man per Script auch feststellen, ob weitere Monitore angeschlossen sind? Ich sitz hier an einem mit 2 Monitoren. Es sollte dann nicht unbedingt auf beiden Monitoren der gleiche Hintergrund zu sehen sein (außer es ist zufallsbedingt, was extrem selten sein dürfte).

Wie auch immer, ich bin an den erwähnten Erklärungen interessiert, vielleicht bringen sie den Durchblick an dem Script, damit ich selbst auch nach der Fehlerquelle suchen kann...
 
Es stellte sich auch noch die Frage...

...ob wir evtl. unterschiedliche Einstellungen in Systemeinstellungen/Schreibtisch & Bildschirmschoner haben bzw. müssen bei den Schreibtisch-Hintergrund-Einstellungen irgendwelche Optionen aktiv oder nicht aktiv sein?
 
überall endet es mit der Fehlermeldung:

"Apple Script Fehler
Die Datei „[Macname]:Users:[Username]: Desktop:[Zufallsnummer].jpg“ wurde nicht gefunden."
Ist mir ausgesprochen schleierhaft: hab das Script just in diesem Moment noch einmal aus dem Forum in den Script Editor kopiert und es läuft...
Ist das Bild denn runtergeladen worden? Befindet es sich auf Deinem Schreibtisch?

Saluti
Farid
 
Nichts zu finden.

Ist das Bild denn runtergeladen worden? Befindet es sich auf Deinem Schreibtisch?

Nein, nicht geladen und keine Datei erscheint auf dem Schreibtisch (ausser sie ist unsichtbar und hat einen unbekannten Namen).

Auch Spotlight findet nirgends ein Bild mit dem angegebenen Namen.
 
Very strange :confused:
Um der Sache ein wenig auf den Grund zu gehen:
1. Wird die Seite mit dem Random Bild in Safari korrekt geladen?
2. Funktioniert das Kommando Curl korrekt auf Deinem Mac? (welches Betriebssystem?)
Was passiert wenn Du den folgenden Befehl im Terminal ausführst: ?
PHP:
curl http://images.macdesktops.com/images/1280x1024/RSblur1280x1024.jpg -o ~/Desktop/6128.jpg
3. Wenn die beiden Schritte vorher funktionieren, solltest Du ein paar Debug-Dialoge in das Script einfügen, um zu sehen, wo es evtl. hängt.
z.B. in den folgende Positionen:
PHP:
set y to (random number from 1 to allImages) as integer
-- DEBUG 1 --
display dialog y
-- ENDE DEBUG 1 --
set imagePage to ("http://macdesktops.com/index.phtml?Picture=" & y & "&res=TRUE")
PHP:
set curlCommand to ("curl " & aLink & " -o " & "~/Desktop/" & y & ".jpg")
-- DEBUG 2 --
display dialog curlCommand
-- ENDE DEBUG 2 --
do shell script curlCommand
PHP:
set imageFile to ((path to desktop) as string) & (y & ".jpg") as alias
-- DEBUG 3 --
display dialog (imageFile as string)
-- ENDE DEBUG 3 --
tell application "Finder"
...

Good scripting
Farid
 
Es funktioniert!

Nach langer Forschung am Nachmittag kann ich nun berichten: Es funktioniert soweit. :)

Ich kann keinen Fehler nennen, vermutlich war es irgend ein Übertragungsfehler bei mir auf dem Weg vom Forum in den Scripteditor. Denn ich habe das Script erneut erstellt und dann klappte es gleich. Beide Script-Fenster wurden gründlich verglichen, doch ich fand keinen Unterschied. :confused:

Nun gut. Jetzt kann ich mit der Feinarbeit beginnen.

1. Ich hab 1 Mac mit zwei Monitoren. Was muss ich wo ändern um 2 Bilder zufällig zu laden und auf beiden Monitoren dazustellen?

2. Kann man am Ende noch einen Befehl eingeben, der das (oder die) verwendete/n Bilder gleich in den Papierkorb entsorgt? So ließe sich eine ungewollte Bildansammlung auf dem Schreibtisch verhindern. Denn sogar nach leeren des Papierkorbs bleibt das aktuelle Desktopbild erhalten.

3. Gibt es eine Abfragemöglichkeit, um auf dem iBook zu verhindern, dass bei einem Neustart ohne Internetverbindung eine Fehlermeldung erscheint?

4. Ich bin auch einer von denen, die iBook meistens nicht ausschalten. Es gab doch mal eine Möglichkeit, nach dem Aufwachen aus Ruhezustand Programme automatisch zu starten. Das wäre auf dem iBook sinnvoll um während längeren Zeiten ohne Neustart automatisch etwas Abwechslung zu bekommen. Doch auch hier wäre zuächst eine Abfrage nach Internetverbindung sinnvoll um Fehlermeldungen zu vermeiden.

Alternativ würde es auch reichen, bei jedem neuen Verbinden mit dem Netzwerk einen neuen Desktop zu laden. Doch ich befürchte mal, dass dazu das Script die ganze Zeit aktiv sein müsste und das iBook unnötig belasten würde.

Und ganz wichtig:
5. Ist es machbar, dass Safari immer ein neues Fenster öffnet und dieses am Ende auch noch ordentlich schließt? Sonst hat man das Problem, wenn mal ein Hintergrund nicht gefallen sollte beim manuellen Starten des Scriptes der aktuelle Safari-Inhalt verschwindet und dadurch Eingaben wie dieser Beitrag von mir ungewollt vernichtet werden (kam beim Testen schon vor). Oder ist es denkbar, dass es ohne offenes Safari-Fenster funktioniert?Ähnlich dem Terminal-Test, der das Bild ohne Darstellung lädt.
 
Nach langer Forschung am Nachmittag kann ich nun berichten: Es funktioniert soweit. :)
Na, das ist doch mal was :)
Zu Deinem Feinschliff:

1. Was muss ich wo ändern um 2 Bilder zufällig zu laden und auf beiden Monitoren dazustellen?
Ich fürchte das geht nicht, laut Finder-Scriptverzeichnis ist nur das Hintergrundbild des Hauptmonitors erreichbar...
Finder Dictionary schrieb:
desktop picture (file) : the desktop picture of the main monitor

2. Kann man am Ende noch einen Befehl eingeben, der das (oder die) verwendete/n Bilder gleich in den Papierkorb entsorgt?
Hier wird es nun Zeit für einen kleinen AppleScript-Crashkurs ;)
Für das entsorgen von Files und Folders ist der Finder zuständig. Der entsprechende Befehl im Scriptverzeichnis ist move:
Finder Dictionary schrieb:
move v : Move object(s) to a new location
move reference : the object(s) to move
to location reference : the new location for the object(s)
(...)
Das Objekt, um das es geht, kennst Du schon, es ist das gleiche, das der Finder benutzt, um das Desktopbild zu ändern und die Location ist schlicht und einfach der trash:
PHP:
tell application "Finder"
move [unser Objekt] to trash
end tell

3. Gibt es eine Abfragemöglichkeit, um auf dem iBook zu verhindern, dass bei einem Neustart ohne Internetverbindung eine Fehlermeldung erscheint?
Der einfachste Weg ist wahrscheinlich ein Ping, um den Netzwerkstatus zu testen:
PHP:
try
	set sysStatus to (do shell script "ping -c 3 www.apple.com")
on error
	return -- das Script wird beendet
end try

4. Es gab doch mal eine Möglichkeit, nach dem Aufwachen aus Ruhezustand Programme automatisch zu starten
Da gibt es hier im Forum einige Beiträge zu, ich kenne mich da leider nicht aus.

5. Ist es machbar, dass Safari immer ein neues Fenster öffnet und dieses am Ende auch noch ordentlich schließt?
Auch hier hilft ein Blick ins (leider etwas kryptische) Scriptverzeichnis von Safari weiter:
PHP:
tell application "Safari"
	set newWindow to (make new document at end of documents)
	set URL of newWindow to "http://www.apple.com"
	delay 3
	close window 1
end tell
Einfach anpassen und an der gewünschten Stelle in unserem Script einfügen.

Good scripting
Farid
 
Ergebnis der Nachtschicht:

Weil ich nicht ins Bett wollte, bevor ich die Ergänzungen eingebaut habe, habe ich mir eine Nachtschicht gegönnt.

Läuft nun recht ordentlich: Fenster geht auf, Bild wird ausgewählt, Fenster schließt sich und Bilddatei wird in den Papierkorb verschoben.

:cake:

Die Torte ist erstmal für dich für die bisherige Hilfe. Wenn du willst, darfst du auch später eine rauchen, aber nicht übertreiben. :cool:

Ob Ping funktioniert, muss ich noch testen – später. Habs aber mal eingebaut.

Während mehreren Versuchen geschah es einmal, dass im Safari-Fenster kein Bild ausgewählt wurde und eine Fehlermeldung im Script erschien. Im Safari-Fenster stand anstelle einer Mini-Bildansicht der Text "No pictures match your selected criteria." Gibt es dazu eine Erklärung? Wurde etwa ein Bild ausgewählt, das es nicht in der gesuchten Auflösung gibt? Dann sollte es statt einer Fehlermeldung besser so sein, dass eine der angebotenen Bildgrößen genommen und zurechtgestaucht wird. Oder bedeutet der Hinweis was anderes?

Ansonsten gebe ich Bescheid, wenn nochmal sowas geschieht.

Nun erstmal ins Bett hauen... :sleep:
 
Weil ich nicht ins Bett wollte, bevor ich die Ergänzungen eingebaut habe, habe ich mir eine Nachtschicht gegönnt.
Und schon nach wenigen Tagen ein neuer AppleScript-Junkie... ;) :D

OT: Vielleicht kann ja einer der Mods dieser Diskussion einen sinnvolleren Titel geben? So läßt sie sich bei Interesse wiederfinden.

Cheers
Farid
 
Finder Dictionary?

Wo findet man das erwähnte Finder Dictionary? Ich dachte, das wäre innerhalb der Skripteditor-Hilfe? Aber so wie es aussieht, bin ich da falsch.

Sehr unklar, weshalb nicht einmal Spotlight Ergebnisse dazu bringt. Oder muss erst eine Erweiterung für das Programm "Dictionary" geladen werden?
 
Im Skripteditor apfel-shift-O und dann das jeweilige Programm öffnen. Da der Finder nicht in den Programmen steht (sondern irgendwo anders ganz versteckt), empfiehlt es sich ihn über die Library des Skripteditors zu öffnen: apfel-shift-L und dann einfach auf den Finder doppelklicken.
 
Sehr gut!

Funktioniert... :cool:
 
Zurück
Oben Unten