Apple Script Anfängerfragen

Macverehrer

Macverehrer

Aktives Mitglied
Thread Starter
Dabei seit
02.12.2004
Beiträge
2.128
Reaktionspunkte
6
Hallo Gemeinde :D



Habe (momentan) drei einfache Fragen. Ich habe mich gestern das erste mal mit Apple Script beschäftigt.

---------------------------------------------------------------------------------------

PROBLEM EINS

Habe daraufhin auch mein erstes Programm geschrieben. Dieses Programm bewirkt beim Starten, dass sich iTunes öffnet und direkt ein von mir gewählte Playlist abspielt.

Der code ist folgender:
Code:
tell application "iTunes"
	open (play playlist "My favourite Song")
end tell
Das Problem ist daran, sobald ich es ausführe funzt es zwar einwandfrei, aber nach dem iTunes gestartet ist und ein Song läuft kommt die Meldung:
„iTunes“ hat einen Fehler erhalten: Einige Daten können nicht in den erwarteten Typ umgewandelt werden.
Das Skript läuft einwandfrei aber am Ende kommt immer diese Meldung. Wie bekomme ich die weg?

---------------------------------------------------------------------------------------

PROBLEM ZWEI

Wie kann ich einen einzelnen Song abspielen per Apple Script. Ich habe es mal mit
Code:
tell application "iTunes"
	open (play song "Jerk it out")
end tell
probiert aber es kommt immer die Fehlermeldung
Es wurde „„, ““ erwartet, aber ein „““ wurde gefunden.
Was mach ich falsch?

---------------------------------------------------------------------------------------

PROBLEM DREI

hab folgenden Code eingegeben
Code:
repeat 50 times
	display dialog "Langeweile?" buttons {"JA"}
end repeat
jetzt öffnet er 1 Fenster, bei dem ich aber 50 mal auf JA klicken muss bevor es verschwindet. Wie kann ich es machen das er mir 50 Fenster anzeigt, mit nur jeweils einem mal JA? Also ich möchte dass er jeden dialog in einem neuen Fenster zeigt.

---------------------------------------------------------------------------------------


Das wars im großen und ganzen erstmal...halt: Kennt einer eine Seite wo alle Befehle aufgeführt sind?
Ok dann vielen Dank schon mal.
Sollten weitere Fragen auftauchen (und glaubt mir das wird nicht lange dauern) werde ich sie in deiesem Fred posten.

Macv
 
Hallo Macverehrer,

ich bin leider auch blutiger Anfänger, kann aber meine Finger nicht mehr von Apple_Script lassen. Nun ja zu PROBLEM ZWEI:

ich hab das so gelöst, sicher nicht gerade die schönste lösung

tell application "iTunes"
open (play file "Deine Festplatte:Users: Dein Benutzername:Music:iTunes:iTunes Music:fff:Free For Fever:02 Des Illusions.m4a")
end tell

gruß, Max

hab gerade gesehen, dass man "open" natürlich weglassen kann"
 
Zuletzt bearbeitet:
so PROBLEM DREI hab ich folgend gelöst:

set weiter to true
repeat 10 times
if weiter is true then
set temp to display dialog "Langeweile?" buttons {"JA"}
set returnedButton to button returned of temp
else
set weiter to false
end if
end repeat

sicher nicht gerade die beste lösung, aber ich bin auch erst zwei tage am scripten
:eek:)

ups, ich seh gerade, dass ist nicht wirklih das was du wolltest sorry,...
 
Zuletzt bearbeitet:
Zu 1:

Die Fehlermeldung bekommst du weg, indem du 'open' weg lässt:

tell application "iTunes"
play playlist "Jones/Olstead"
end tell


Zu 2:

Du musst den Song in iTunes erst suchen, damit du eine eindeutige Referenz dazu hast.

Das folgende Skript liefert eine Song-Referenz in der Form

file track id 1018 of library playlist id 628 of source id 34

Hier das Skript:

set Suchtext to "Hot Wired"
tell application "iTunes"
considering case
set TrackList to every track of playlist "Bibliothek" whose name = Suchtext
set theTrack to item 1 of TrackList
end considering
play theTrack
end tell


Für den Fall, dass ein Lied nicht gefunden wird, ist in diesem Skript noch keinerlei Vorkehrung getroffen.

Hier noch eine Version, die erst Ruhe gibt, wenn ein Song auch gefunden wurde:

set Suchtext to "" -- kann hier leer bleiben
playTunes(Suchtext) -- Aufruf des Handlers

on playTunes(Suchtext)
tell application "iTunes"
try
considering case
set TrackList to every track of playlist "Bibliothek" whose name = Suchtext
set theTrack to item 1 of TrackList
end considering
play theTrack
on error -- beim ersten Durchlauf ist Suchtext "" - daher Fehler
-- auch bei Falscheingabe landet man wieder hier
set Suchtext to text returned of (display dialog "Welchen Song spielen?" default answer "")
my playTunes(Suchtext) -- der Handler ruft sich selbst erneut auf
end try
end tell
end playTunes
 
hallo snow,

für was ist die zeile "set theTrack to item 1 of TrackList" gut
 
Max02 schrieb:
hallo snow,

für was ist die zeile "set theTrack to item 1 of TrackList" gut

Mit 'every ... whose ...' bekommt man als Ergebnis immer eine Liste. Wir brauchen aber den Listeninhalt - die Referenz zum gesuchten Song.

Im Idealfall enthält die Liste nur ein Objekt - den gesuchten Song. Falls wirklich mehrere gleichnamige Titel existieren wird eben nur der erste aus der Liste genommen.
 
o.k, danke schön.

wie kann man eigentlich problem drei von macverehrer lösen. habs auch versucht, jedoch gerade bemerkt, dass er eine andere lösung sucht.

toll, wie schnell hier antwort kommt
 
Max02 schrieb:
wie kann man eigentlich problem drei von macverehrer lösen. habs auch versucht, jedoch gerade bemerkt, dass er eine andere lösung sucht.

Hierzu gibt es keine Lösung. Die AppleScript-Befehle werden immer der Reihe nach abgearbeitet. Ein Befehl ist aber nicht abgeschlossen, sobald das entsprechende Apple-Event gesendet wurde. Es gehört auch die entsprechende Antwort dazu.

Man kann also einen weiteren Dialog erst aufrufen, wenn der erste (per OK-Button) geschlossen wurde.
 
danke für deine Erklärungen!
 
Ist das Apple Script Studio auch für nicht-Entwickler erhältlich?
Wenn ich es auf der Apple Seite runterladen will kommt immer die Aufforderung mich als Entwickler einzuloggen.
Oder muss man als Privatperson alles manuell tippen?

Novatlan
 
Hast du keine CD mit den Developer Tools? Sollte eigentlich schon bei der Systemsoftware dabei sein.

Ansonsten hilft wirklich nur eine Registrierung bei ADC. Die Online-Mitgliedschaft kostet nichts und du kommst an die Developer Tools ran.
 
die developer tools sind auf der Software Restore CD drauf! ;)
 
Danke für eure Antworten. Eine Frage bliebe noch.

@snow Wie kann ich in deinem 2. Skript (vielen Dank hierfür) so einstellen, dass wenn der Titel nicht gefunden wird im Fenster steht "ist leider nicht vorhanden bitte versuchen sies erneut blaba"? oder das ganze über einen dispaly dialog befehl so gelöst wird dass ein Popup kommt "nicht da" und man muss ok klicken und darf dann erneut eingeben? Ausserdem findet er ein Lied in meiner Bib nicht woran könnte das liegen (habs richtig eingetippt)

edit: hinter dem Titel war ein leerschritt
 
Zuletzt bearbeitet:
Macverehrer schrieb:
@snow Wie kann ich in deinem 2. Skript (vielen Dank hierfür) so einstellen, dass wenn der Titel nicht gefunden wird im Fenster steht "ist leider nicht vorhanden bitte versuchen sies erneut blaba"? oder das ganze über einen dispaly dialog befehl so gelöst wird dass ein Popup kommt "nicht da" und man muss ok klicken und darf dann erneut eingeben?

Nun, beim zweiten Skript kommt ja die Meldung so oft, bis ein Titel gefunden wird.

Man kann die Sache natürlich auch noch ausbauen. Beispiel:

global FirstRun, Text1, Text2 -- global gilt in allen Skriptbereichen, also auch innerhalb
--
eines Handlers - ohne dass man den Wert extra übergeben muss.

set Text1 to "Welchen Song spielen?"
set Text2 to "Dieser Titel konnte nicht gefunden werden. Bitte versuchen Sie es erneut."
set Meldung to ""
set FirstRun to true

set Suchtext to "" -- kann hier leer bleiben
playTunes(Suchtext) -- Aufruf des Handlers


on playTunes(Suchtext)
tell application "iTunes"
try
considering case
set TrackList to every track of playlist "Bibliothek" whose name = Suchtext
set theTrack to item 1 of TrackList
end considering
set FirstRun to true
play theTrack
on error -- beim ersten Durchlauf ist Suchtext "" - daher Fehler
-- auch bei Falscheingabe landet man wieder hier

if FirstRun is false then
set Meldung to Text2
else
set Meldung to Text1
end if
set Suchtext to text returned of (display dialog Meldung default answer "")
set FirstRun to false
my playTunes(Suchtext) -- der Handler ruft sich selbst erneut auf
************
end try
end tell
end playTunes
 
Macverehrer schrieb:
Ausserdem findet er ein Lied in meiner Bib nicht woran könnte das liegen (habs richtig eingetippt)

edit: hinter dem Titel war ein leerschritt

Damit das Skript beim Suchen etwas weniger pedantisch ist, könnte man die "Suchzeile" auch so schreiben:

set TrackList to every track of playlist "Bibliothek" whose name contains Suchtext

Außerdem kann man 'considering case' und 'end considering' weglassen - dann spielt die Groß-/Kleinschreibung keine Rolle mehr.
 
Ich hab nichtmal nen Mac, geschweige denn eine CD :)
Aber bald hab ich einen und da mir Apple Script ziemlich genial vorkommt werde ich das gleich ausprobieren.
 
kennt jemand eine liste mit allen befehlen und ner kurzen beschreibung?? als pdf wär's optimal....
 
Es gibt keine Liste mit allen Befehlen.

AppleScript selbst (also die AppleScript Komponente des Systems) verfügt nur über wenige Befehle. Diese werden ergänzt durch Befehle, die von Programmen oder Scripting Additions zur Verfügung gestellt werden.

Falls du die Developer Tools installiert hast, befindet sich bereits eine Anleitung (englisch) auf deinem Rechner:

file:///Developer/Documentation/App...eScriptLangGuide/AppleScriptLanguageGuide.pdf

In deutscher Sprache gibt es auf meiner Website das PDF "AppleScript für absolute Starter". Wenn du es etwas interaktiver willst, kann ich noch "MacScripter's Magazine Panther Edition 2004" anbieten. Die anderen MacScripter's Magazines auf meiner Website laufen nur unter nativem OS 9 (nicht unter Classic).
 
Zurück
Oben Unten