Извлечение расширений файлов из путей AppleScript

Я пишу сценарий Apple, который в конечном итоге будет помечать рекламу для всего экспорта iTunes из EyeTV. Но я столкнулся с простой проблемой с путями AppleScript, которые приложение EyeTV возвращает в качестве мест записи. Вот контекст:

set recordingID to 370404006
set myid to recordingID as integer
tell application "EyeTV"
    set eyetvr_file to get the location of recording id myid as alias
end tell
return eyetvr_file

псевдоним "Macintosh HD2:Документы:Архив EyeTV:Южный парк.eyetv:000000001613eaa6.eyetvr"

Теперь мне нужно извлечь содержащий путь и префикс файла 000000001613eaa6 (используя этот вопрос), поэтому я могу поискать соответствующие коммерческие маркировки в файле 000000001613eaa6.edl. Вот икота:

tell application "Finder"
    set eyetv_path to container of eyetvr_file
    set root_name to name of eyetvr_file
    set fext to name extension of eyetvr_file
end tell

Результаты таковы,

eyetv_path: файл документа "Южный парк.eyetv" папки "Архив EyeTV" папки "Документы" диска "Macintosh HD2" приложения "Finder"

root_name: "000000001613eaa6.eyetvr"

текст: ""

fext должен быть ".eyetvr", а не пустой строкой. Как правильно извлечь «.eyetvr» из файла eyetvr_file или root_name? Я пробовал кучу взлома, как

set fext to name extension of (eyetvr_file as document)

Но это дает ошибку, например,

ошибка «Не удается преобразовать псевдоним \"Macintosh HD2:Documents:EyeTV Archive:South Park.eyetv:000000001613eaa6.eyetvr\" в тип документа». номер -1700 из псевдонима "Macintosh HD2:Documents:EyeTV Archive:South Park.eyetv:000000001613eaa6.eyetvr" в документ


person stvs    schedule 16.10.2012    source источник


Ответы (2)


Finder не распознает все расширения имен файлов. Вы можете просто использовать разделители текстовых элементов, чтобы удалить последнюю часть.

do shell script "touch /tmp/some.file.eyetvr"
set text item delimiters to "."
tell application "Finder"
    set n to name of file (POSIX file "/tmp/some.file.eyetvr")
    if n contains "." then set n to (text items 1 thru -2 of n) as text
    n -- some.file
end tell
person Lri    schedule 16.10.2012
comment
Спасибо! Это отлично работает с приведенными ниже правками и обеспечивает лучшее решение, чем то, на которое я ссылался. Этот код выдавал ошибку, если я не указал разделители текстовых элементов AppleScript, и я также сохранил предыдущие настройки для использования в более крупном блоке кода: установить разделители на разделители текстовых элементов AppleScript ‹br› установить разделители текстовых элементов AppleScript на . ‹br› установить разделители текстовых элементов AppleScript в разделители - person stvs; 16.10.2012

Мини-комментарии, по-видимому, не позволяют публиковать код, поэтому вот мои правки к хорошему решению Лаури Ранта:

do shell script "touch /tmp/some.file.eyetvr"
set delims to AppleScript's text item delimiters
set AppleScript's text item delimiters to "."
tell application "Finder"
    set n to name of file (POSIX file "/tmp/some.file.eyetvr")
    if n contains "." then set n to (text items 1 thru -2 of n) as text
    n -- some.file
end tell
set AppleScript's text item delimiters to delims

Я опубликую ссылку на рекламный скрипт-маркировки EyeTV для iOS, когда закончу этот проект.

person stvs    schedule 16.10.2012
comment
Вот ссылка на получившийся AppleScript, ExportDone.scpt: code.google.com/p/etv-comskip/downloads/ - person stvs; 20.10.2012