Hjälp med Automator och LAME konverterings script

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Stockholm
  • 2008-11-20 19:50

Jag har hittat ett script till Automator som konverterar en ljudfil till LAME. Själva konverteringen sker i Terminal och alltså öppnas den när man kör scriptet men jag skulle villja att Terminal automatiskt avslutades när konvereringen är klar. Är det någon som kan Applescript som skulle kunna hjälpa till med det?

on run {input, parameters}
	
	if input is not {} then
		set posix_file to POSIX path of item 1 of input
		if input is not {} then
			tell application "Terminal"
				activate
				set thescript to "/usr/local/bin/lame -V 0 -q 0 \"" & posix_file & "\" "
				do script thescript
			end tell
		end if
	end if
    return input
end run

Jag har försökt att lägga till:

tell application "Terminal"
        quit
end tell

Efter 'end tell' men då avslutas Terminal innan konverteringen är klar. Finns det något sätt att kontrollera om scriptet är klart, och först då avsluta Terminal?

Du kan läsa lite på denna sida om hur man kan jobba med kommandot do script, tex hur man kan veta att något är klart mm:

Technical Note TN2065: do shell script in AppleScript

Det finns även flera trådar här som innehåller applescript-kommandot wait och try. Man kan tex kolla om filstorleken går att läsa av (try-statement) eller om den ändras och när den slutar ändras så är det klart. Man kan kolla tex var femte sekund eller så (wait-kommandot, eller så heter det delay, minns aldrig det där).

  • Medlem
  • Stockholm
  • 2008-11-20 20:17

Tack för tipset! Skall kolla in tråden.

  • Medlem
  • Stockholm
  • 2008-11-22 21:50

Jag löste problemet genom att strunta i Applescript och istället använda 'Kör kommandotolkscript' i Automator, då fungerar allt som det skall och man slipper dessutom öppna Terminal.

En sak stör mig bara med Lame programmet. Det lägger till filändelsen mp3 utan att ta hänsyn till om filen redan har en filändelse. Har försökt lösa detta enbart med Automator men har inte lyckats med filer som har två filändelser. Har även prövat att ta bort filändelsen med Automator innan jag kör kommandotolk scriptet, men Automator verkar inte acceptera att ersätta en filändelse med ingenting.

Är det någon som vet hur man kan lösa detta direkt i unix? Så här ser det ut nu:

for f in "$@"
do
	/usr/local/bin/lame -V 0 -q 0 "$f"
done

Jag tror du har missförstått hur "do script" fungerar? Man behöver alltså inte använda Terminal för att köra ett Unix-kommando med Applescript.

  • Medlem
  • Stockholm
  • 2008-11-22 22:42

Taz, när man väljer 'kör kommandotolksript' i Automator så är den koden redan inkluderad. Det enda jag gjorde var att lägga till: /usr/local/bin/lame -V 0 -q 0 "$f" , men det viktigaste av allt är att det fungerar. Sedan känndes det även mindre komplicerat än att be ett script att köra ett annat script.

Men menar du att man hadde kunnat strunta i "tell application "Terminal" activate" delen i det första exemplet?

Senast redigerat 2008-11-22 23:00
  • Medlem
  • 2008-11-22 22:56

Satt och testade mig själv lite och tar risken att genera mig inför Taz. Men applescript kan i alla fall ta bort delar av filnamn.
Hur du ska indentifienar filen får du väl lösa själv eftersom jag inte vet hur du har satt upp det, men Automator kan ju använda applescript.

-- Detta tar bort ändelsen om den finns i myExtensions.
-- Lista över filändelser du vill ta bort:
property myExtensions : {"mp3", "aac", "m4a", "ogg"}

global myName, myNewName

set text item delimiters to "."
tell application "Finder"
	set myFile to file (choose file without invisibles)
	set myName to name of myFile
	if text item -1 of myName is in myExtensions then
		my ChangeName()
	end if
	set name of myFile to myNewName
end tell
set text item delimiters to ""

on ChangeName()
	set myNewName to text items 1 thru -2 of myName as string
end ChangeName
-- Detta tar bort den sista ändelsen om filen har två
-- Lista över filändelser på du vill behålla:
property myOriginalExtensions : {"mp3", "aac", "m4a", "ogg"}
-- Lista över filändelser du vill ta bort:
property myNewExtensions : {"mp3", "aac", "m4a", "ogg"}

global myName, myNewName

set text item delimiters to "."
tell application "Finder"
	set myFile to file (choose file without invisibles)
	set myName to name of myFile
	if text item -1 of myName is in myNewExtensions then
		if text item -2 of myName is in myOriginalExtensions then
			my ChangeName()
		end if
	end if
	set name of myFile to myNewName
end tell
set text item delimiters to ""

on ChangeName()
	set myNewName to text items 1 thru -2 of myName as string
end ChangeName
1
Bevaka tråden