itunes automatisch starten.

Dieses Thema im Forum "Scripting und Automatisierung" wurde erstellt von der_rene, 01.10.2004.

  1. der_rene

    der_rene Thread Starter MacUser Mitglied

    Beiträge:
    333
    Zustimmungen:
    2
    MacUser seit:
    05.02.2004
    moin moin.

    ich nutze das programm romeo, um mein handy mit dem mac über bluetooth zu verbinden.

    nun hab ich es eingerichtet, das wenn mein telefon in die reichweite kommt, das einmal der ton angeht, der bildschirmschoner aus und itunes startet. ebenso, wenn ich die reichweite verlasse, nur andersrum.

    mein erster versuch in punkto itunes folgender script:
    Code:
    tell application "iTunes.app"
         play
    end tell
    funtionierte auch soweit. jedoch jedesmal wenn ich nun in reichweite komme, geht itunes an und spielt. das sollte es aber nur, wenn es vorher auch aktiv war und in pause ging beim verlassen der reichweite.

    deswegen hab ich es nun auf das hin abgewandelt:
    Code:
    tell application "System Events"
             if(exists process "iTunes.app") then
                    tell application "iTunes.app"
                             play
             end if
    end tell
    doch jetzt passiert nichts mehr bei itunes, weder wenn es aus war, noch wenn es lief.

    wo ist hier der gedankenfehler ??
     
  2. Snow

    Snow MacUser Mitglied

    Beiträge:
    262
    Zustimmungen:
    2
    MacUser seit:
    24.03.2003
    Der Name des Prozesses ist nicht "iTunes.app" sondern "iTunes".
    Wenn man mit Bedingungen arbeitet, sollte man auch unbedingt verifizieren, ob die Bedingung funktioniert.
     
  3. der_rene

    der_rene Thread Starter MacUser Mitglied

    Beiträge:
    333
    Zustimmungen:
    2
    MacUser seit:
    05.02.2004
    scheinbar muß da aber noch ein gedankenfehler drin sein. itunes fühlt sich immer noch nicht angesprochen.
    zwar startet das programm nicht, wenn es vorher auch nicht lief, jedoch geht es nicht in pause und hinterher in play, wenn die reichweite verlassen und wieder erreicht wird. es klappte bislang nur mit dem ersten applescript, aber da startete das programm immer, egal was vorher für ein zustand herschte.

    oder ist das mit dem sysem event falsch ? ich hab das woanders gesehen und dann übernommen. da sollte das adressbuch bluetooth aktivieren, wenn das adressbuch gestartet war.
     
  4. Snow

    Snow MacUser Mitglied

    Beiträge:
    262
    Zustimmungen:
    2
    MacUser seit:
    24.03.2003
    Du kannst bei iTunes den Status abfragen und die Aktionen davon abhängig machen.
    Im Befehlsverzeichnis von iTunes findest du unter "application" die Eigenschaft "player state", welche die Werte "stopped/playing/paused/fast forwarding/rewinding" annehmen kann.

    In der Richtung würde ich mal weiter experimentieren.
     
  5. der_rene

    der_rene Thread Starter MacUser Mitglied

    Beiträge:
    333
    Zustimmungen:
    2
    MacUser seit:
    05.02.2004
    ich hab den code nun mal so abgeändert, aber itunes läuft dennoch weiter. sicher ist was falsch in der 2. if-schleife, da ich nicht genau weiß, wie ich mit dem status umgehen muß.

    Code:
    tell application "System Events"
             if(exists process "iTunes") then
                    tell application "iTunes"
                             if player state is playing then
                                       iTunes is paused
                             end if
             end if
    end tell
     
  6. der_rene

    der_rene Thread Starter MacUser Mitglied

    Beiträge:
    333
    Zustimmungen:
    2
    MacUser seit:
    05.02.2004
    ich hab jetzt noch mal 2 sachen abgewandelt, will aber auch nicht:
    Code:
    tell application "System Events"
             if(exists process "iTunes") then
                    tell application "iTunes"
                             if player state is playing then
                                       paused
                             end if
                     end tell
            end if
    end tell
    auch hab ich im netz gesehen, das jemand drinnen noch eine variable gesetzt hat, kann mir aber nicht zusammenreimen, wie ich das wenn dann eingringen sollte.
    Code:
    tell application "Finder"
          if (exists of (every application process whose creator type is "hook")) is true then
             tell application "iTunes"
                if player state is playing then
                   set my_paused to true
                   pause
                else
                   set my_paused to false
                end if
             end tell
          end if
       end tell 
     
    Zuletzt bearbeitet: 02.10.2004
  7. Snow

    Snow MacUser Mitglied

    Beiträge:
    262
    Zustimmungen:
    2
    MacUser seit:
    24.03.2003
    Zum Umgang mit dem Status:

    Zunächst einmal mache es Sinn, den Status in einer Variablen abzulegen, da danach mehrere Möglichkeiten des Status getestet werden müssen.

    Das Skript könnte dann so aussehen:

    Code:
    tell application "System Events"
       if (exists of (every process whose creator type is "hook")) is true then
          tell application "iTunes" -- evtl. iTunes.app
             set tPS to player state
             if tPS = stopped then
                play
             else if tPS = paused then
                play
             else
                pause
             end if
          end tell
       end if
    end tell
    
     
  8. der_rene

    der_rene Thread Starter MacUser Mitglied

    Beiträge:
    333
    Zustimmungen:
    2
    MacUser seit:
    05.02.2004
    das klappt ja wunderbar.

    kannst du vielleicht noch kurz erklären, was das mit dem hook aufsich hat? wär nur zum verständnis für mich.

    vielen dank dennoch für deine hilfe.
     
  9. Snow

    Snow MacUser Mitglied

    Beiträge:
    262
    Zustimmungen:
    2
    MacUser seit:
    24.03.2003
    "hook" ist der creator type von iTunes. Man kann prüfen, ob ein bestimmtes Programm läuft, indem man nach dessen Namen oder eben nach dessen creator code fragt. Ich hab's nur verwendet, weil's in einem Beispiel von dir auch vorkam.
     
Die Seite wird geladen...