Re: Modify Time Of Day script
Re: Modify Time Of Day script
- Subject: Re: Modify Time Of Day script
- From: "dan d." <email@hidden>
- Date: Tue, 31 Oct 2017 10:14:07 -0400 (EDT)
On Tue, 31 Oct 2017, Nigel Garvey wrote:
> "dan d." wrote on Mon, 30 Oct 2017 21:55:24 -0400
>
> >One of the scripts that comes with osx is Time Of Day.applescript.
>
> >The script speaks date and time.
> >
> >I have been trying to seperate these and assign them to seperat
> keys,ie. "t"
> >for time and "d" for date.
> >
> >Looking at the script I have come to realize it is beyond my beginner/'s
> >skills
> >to divide the original into these two functions because much of it is
> not
> >understood.
>
> I'm not surprised! It contains quite a lot of waffle and flits around in
> its handling of the hour and the minutes. Adapting it to speak just the
> date, you might do something like this:
>
> (*
> Speaks the date.
> Adapted from Apple's "Time Of Day.applescript" script, whose copyright
> notice follows.
> *)
> (*
> Speaks the date and time of day
>
> Copyright 2008 Apple Inc. All rights reserved.
>
> You may incorporate this Apple sample code into your program(s) without
> restriction. This Apple sample code has been provided "AS IS" and the
> responsibility for its operation is yours. You are not permitted to
> redistribute this Apple sample code as "Apple sample code" after having
> made changes. If you're going to redistribute the code, we require
> that you make it clear that the code was descended from Apple sample
> code, but that you've made changes.
> *)
>
> on isVoiceOverRunning()
> tell application "System Events" to return (name of processes contains
> "VoiceOver")
> end isVoiceOverRunning
>
> on isVoiceOverRunningWithAppleScript()
> if (isVoiceOverRunning()) then
> -- is AppleScript enabled on VoiceOver --
> tell application "VoiceOver"
> try
> set x to bounds of vo cursor -- This will presumably error if not.
> return true
> on error
> return false
> end try
> end tell
> else
> return false
> end if
> end isVoiceOverRunningWithAppleScript
>
> set currentDate to (current date)
> set currentDate to ((currentDate's month) as text) & " " & (currentDate's
> day)
>
> if (isVoiceOverRunningWithAppleScript()) then
> tell application "VoiceOver"
> output currentDate
> end tell
> else
> say currentDate
> delay 2
> end if
>
> '((currentDate's month) as text)' works for English, but I'm not sure
> how it's translated on machines set up for other languages.
> Interestingly, although the string which finally gets spoken is
> something like "October 31", what's actually _said_ on my machine here
> in the UK is "The thirty-first of October"!
>
> A time-only version of the script might look like this:
>
> (*
> Speaks the time.
> Adapted from Apple's "Time Of Day.applescript" script, whose copyright
> notice follows.
> *)
> (*
> Speaks the date and time of day
>
> Copyright 2008 Apple Inc. All rights reserved.
>
> You may incorporate this Apple sample code into your program(s) without
> restriction. This Apple sample code has been provided "AS IS" and the
> responsibility for its operation is yours. You are not permitted to
> redistribute this Apple sample code as "Apple sample code" after having
> made changes. If you're going to redistribute the code, we require
> that you make it clear that the code was descended from Apple sample
> code, but that you've made changes.
> *)
>
> on isVoiceOverRunning()
> tell application "System Events" to return (name of processes contains
> "VoiceOver")
> end isVoiceOverRunning
>
> on isVoiceOverRunningWithAppleScript()
> if (isVoiceOverRunning()) then
> -- is AppleScript enabled on VoiceOver --
> tell application "VoiceOver"
> try
> set x to bounds of vo cursor -- This will presumably error if not.
> return true
> on error
> return false
> end try
> end tell
> else
> return false
> end if
> end isVoiceOverRunningWithAppleScript
>
> set currentDate to (current date)
> set currentHour to currentDate's hours
>
> -- readjust the hour for 12 hour time
> if (currentHour ??? 12) then
> set amPM to "PM"
> else
> set amPM to "AM"
> end if
> set currentHour to (currentHour + 23) mod 12 + 1
>
> -- make minutes below 10 sound nice (with a leading 0)
> set currentMinutes to currentDate's minutes
> set currentMinutes to text 2 thru -1 of (100 + currentMinutes as text)
>
> set currentTime to (currentHour as text) & ":" & currentMinutes & " " & amPM
>
> if (isVoiceOverRunningWithAppleScript()) then
> tell application "VoiceOver"
> output currentTime
> end tell
> else
> say currentTime
> delay 2
> end if
>
>
> NG
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> AppleScript-Users mailing list (email@hidden)
> Help/Unsubscribe/Update your Subscription:
> Archives: http://lists.apple.com/archives/applescript-users
>
> This email sent to email@hidden
>
--
XB
XB
XB
Thanks to Andrew and Nigel, I will give both suggestions a try.
Nigel noted:
'((currentDate's month) as text)' works for English, but I'm not sure
how it's translated on machines set up for other languages.
Interestingly, although the string which finally gets spoken is
something like "October 31", what's actually _said_ on my machine here
in the UK is "The thirty-first of October"!
I once did a shell script to pipe the date to the "say" command using an
american - Ava or british - Daniel voice.
The order of month/day were reversed according to which national voice was used.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
AppleScript-Users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
Archives: http://lists.apple.com/archives/applescript-users
This email sent to email@hidden