About this forum

Use this forum to post specific questions you may have when trying to convert an AppleScript to Python. Answers may also include pointers to plugins that would help.
User avatar
jay (support)
Site Admin
Posts: 18420
Joined: Wed Mar 19, 2008 11:52 am
Location: Austin, Texas
Contact:

About this forum

Post by jay (support) »

We've decided to create this forum for those that are starting down the road of converting AppleScript scripts to Python. If you have an issue, post a script snippit, explain the context in which the script is running, and we'll try to help you convert it. Note that rather than converting, we may identify a plugin that may help with part of the solution and may mean no coding at all. This is why it's important to not just post AppleScript code, but also explain how it's used and the context.

Reitering some details discussed elsewhere on the forums and in the blog post

It may also help to describe what the overall solution is that the AppleScript is solving is, so if you can describe the scenario that would be helpful as well.

In order to continue to help everyone understand what's going to work and what's not, we'll summarize here as well. AppleScripts that target the Indigo Server are the ones that will need attention. So if your script has a tell application "IndigoServer" in it will no longer work. Likewise, if you have an embedded script that targets any Indigo objects (embedded scripts don't strictly need to have a tell block in them) or execute commands, it will no longer work.

Here are some examples of things that won't work (not an exhaustive list):

Code: Select all

turn on device "My Device Here"
set value of variable "My Variable" to "some value here"
make new variable with properties {name: "My New Variable", value: "the new value here"}
calculate sunrise
send email to "someaddress" with subject "My Subject" with body "My email body"
Just a few examples - anything in the Indigo Server's AppleScript dictionary will no longer work.

However, any script that talks to other applications will work. For instance:

Code: Select all

tell application "iTunes
    # Any iTunes command
    play
end tell
will work fine when run from an external AppleScript file because it only targets iTunes. Likewise, if you have scripts that send curl commands, which is an easy way to integrate control of web-based services, those will continue to work as long as they don't attempt to talk to the Indigo Server:

Code: Select all

do shell script " curl 'http://192.168.0.2/api/v1/runactivity' -d '{ \"activity_uuid\" : \"someidgoeshere\", \"toggle_state\" : \"on\" }' "
While that particular command can easily be done in Python as well, it will continue to work since it doesn't target the Indigo Server.

A Note about Embedded AppleScripts

While we have yet to make the final decision (we'll update this post when we do), we expect that you won't be able to embed AppleScripts any more, so the only way to execute them will be via an external script file. That's not likely to be a big deal to many of you since we've long warned everyone that external scripts are better because they don't have to run directly in the Indigo Server, but we just wanted to give you a heads up.
Jay (Indigo Support)
Twitter | Facebook | LinkedIn
User avatar
McJohn
Posts: 653
Joined: Tue Dec 18, 2012 5:58 am
Location: The Netherlands
Contact:

Re: About this forum

Post by McJohn »

Question Jay;

We read in the latest news letter that the support of AppleScript in Indigo 7.2 is ending.
The question is: is this also for the external AppleScript file support or only for the embedded AppleScripts?

Thanks and kind regards,

John
User avatar
Colorado4Wheeler
Posts: 2794
Joined: Mon Jul 20, 2009 10:48 am
Location: Colorado

Re: About this forum

Post by Colorado4Wheeler »

I'm not Jay, but anything that targets the Indigo server will no longer be supported. There's a handful of posts about this, but here is a link to a reply Jay made regarding this.
My Modest Contributions to Indigo:

HomeKit Bridge | Device Extensions | Security Manager | LCD Creator | Room-O-Matic | Smart Dimmer | Scene Toggle | Powermiser | Homebridge Buddy

Check Them Out Here
User avatar
jay (support)
Site Admin
Posts: 18420
Joined: Wed Mar 19, 2008 11:52 am
Location: Austin, Texas
Contact:

Re: About this forum

Post by jay (support) »

I've updated the OP to reiterate some of the details that we talk about in other places.
Jay (Indigo Support)
Twitter | Facebook | LinkedIn
User avatar
McJohn
Posts: 653
Joined: Tue Dec 18, 2012 5:58 am
Location: The Netherlands
Contact:

Re: About this forum

Post by McJohn »

Thank you both for your time and the clear explanation! :D
Jann
Posts: 120
Joined: Sun Mar 12, 2006 10:20 am
Location: Auburndale, FL
Contact:

Re: About this forum

Post by Jann »

One Q: If I understand this correctly, Indigo WILL NOT listen for AppleScript anymore (ie: another external script saying “tell IndigoServer” but it will *still* run embedded AppleScript via osascript If ALL I'm doing is communicating w/other apps on that Mac?

ie: This would work: (it simply stores current Mac volume, sets it to 80, plays a sound that indicates house alarm is deactivated, and resets the volume to what it was PRIOR to playing the sound)

Code: Select all

set original_volume to output volume of (get volume settings)

set volume output volume 80
do shell script "afplay '/Users/jgobble/Music/beeps/alarm_deactivate.aif'"

set volume output volume original_volume
Or is this not gonna work as an "embedded AppleScript" either?

I ask because I searched the XML of the indigo server database for "indigoserver" and found no locations in that file that have that string. I *only* use embedded AppleScript so this should've found it if i needed to worry about it, right?

side Q: Is there no easier way to play a sound?
User avatar
Colorado4Wheeler
Posts: 2794
Joined: Mon Jul 20, 2009 10:48 am
Location: Colorado

Re: About this forum

Post by Colorado4Wheeler »

Why not hedge your bets and just put that into an AppleScript file and then you can execute it from Indigo using my plugin or the AppleScript python library or an oascript shell call? All the indications I'm getting is "ditch AppleScript with Indigo" be that external references or embedded, I've decided to take this at its word and move all AS functions out of Indigo entirely and use the plugin I wrote to run them as needed or even embed it into python for a quick-and-easy method.

That being said, you do not target Indigo so if that script is external then it will work. If you put quotes around it and send it the python AppleScript library it will work, but having the AppleScript natively executed in Indigo likely will not.
My Modest Contributions to Indigo:

HomeKit Bridge | Device Extensions | Security Manager | LCD Creator | Room-O-Matic | Smart Dimmer | Scene Toggle | Powermiser | Homebridge Buddy

Check Them Out Here
Jann
Posts: 120
Joined: Sun Mar 12, 2006 10:20 am
Location: Auburndale, FL
Contact:

Re: About this forum

Post by Jann »

I'd love to ditch them all, but that will have to be over time (a month or so) ...

What is the name of your plugin for running the script in a separate file? I know I can use osascript but it tends to hang... a lot!
Jann
Posts: 120
Joined: Sun Mar 12, 2006 10:20 am
Location: Auburndale, FL
Contact:

Re: About this forum

Post by Jann »

also is it just "run shell" with "/usr/bin/osascript /path/to/my/applescript" if i decide to use osascript?
User avatar
jay (support)
Site Admin
Posts: 18420
Joined: Wed Mar 19, 2008 11:52 am
Location: Austin, Texas
Contact:

Re: About this forum

Post by jay (support) »

Embedded scripts won't run as they are now because those are run in the IndigoServer process. We haven't yet decided if we'll leave the edit box in there and just run the scripts via osascript or if we'll just require scripts to be external (which are already run via osascript - no reason to do it yourself).

You will run an external AppleScript the same way you always have - use the Execute Script action, point the action to an AppleScript. Nothing to change about that.
Jay (Indigo Support)
Twitter | Facebook | LinkedIn
Post Reply

Return to “Help Converting from AppleScript”