Я практически ничего не знаю об AppleScript и могу помочь.
Во время работы моя система воспроизведения вещания (MegaSeg) записывает сведения о воспроизводимой в данный момент дорожке в текстовый файл с именем «NowPlaying», который содержит только следующее содержимое, каждое в отдельной строке и без квадратных скобок:
Title: [title]
Artist: [artist]
Album: [album]
Time: [time in some format or other]
Я хочу передать это своему стримеру LadioCast, к которому можно обратиться через AppleScript, чтобы он отправлял информацию о том, что воспроизводится, на сервер потоковой передачи. MegaSeg не поддерживает вызовы Applescript, такие как «сообщить приложению «MegaSeg»… установить trackName на имя текущей дорожки», поэтому я не могу сделать это таким образом. Я понятия не имею, как это сделать.
Если представить, что я смог получить эту информацию, то вот что я сделал бы с ней:
set lastName to ""
set lastArtist to ""
set lastAlbum to ""
repeat
** insert missing file reading section here
** in the following, "title", "artist" and "album" are from the text file **
set trackName to title
set trackArtist to artist
set trackAlbum to album
** end of missing section
if trackName is not lastName and trackArtist is not lastArtist and trackAlbum is not lastAlbum then
set lastName to trackName
set lastArtist to trackArtist
set lastAlbum to trackAlbum
tell application "LadioCast"
set metadata song to trackName & " – " & trackArtist & " – " & trackAlbum
end tell
end if
delay 15
end repeat
Заранее спасибо. -- Ричард Э.
===
Я пробовал предложения от @DigiMonk, и они были очень полезными, но не все из них работали. Во-первых, файл находится в определенном месте, а не на рабочем столе; во-вторых, я вообще не мог заставить работать 'trim_line' - я получил "скрипт не понимает сообщение trim_line". Однако текст в файле кажется уже обрезанным.
Сценарий ниже почти работает; при запуске из редактора Applescript он, кажется, получает название, исполнителя и альбом в переменные. Однако, когда я пытаюсь запустить его из LadioCast, я получаю ошибку EOF -39. Что еще более важно, как только я запускаю это, MegaSeg навсегда перестает обновлять файл. Предположительно, я блокирую файл для чтения из него и останавливаю запись в него MegaSeg. Как этого избежать?
set lastName to ""
set lastArtist to ""
set lastAlbum to ""
set lastTime to ""
set trackName to ""
set trackArtist to ""
set trackAlbum to ""
set sourcePath to ""
repeat
set sourcePath to open for access file "Library:MegaSeg User Data:Logs:Logs for MegaSeg System (4):NowPlaying"
set thisText to read sourcePath as text
close access file "Library:MegaSeg User Data:Logs:Logs for MegaSeg System (4):NowPlaying"
set the paragraphList to every paragraph of thisText
repeat with i from 1 to number of items in paragraphList
set thisItem to item i of paragraphList
if thisItem starts with "Title:" then
set x to the offset of "Title:" in thisItem
set trackName to (text (x + 6) thru -1 of thisItem)
else if thisItem starts with "Artist:" then
set x to the offset of "Artist:" in thisItem
set trackArtist to (text (x + 7) thru -1 of thisItem)
else if thisItem starts with "Album:" then
set x to the offset of "Album:" in thisItem
set trackAlbum to (text (x + 6) thru -1 of thisItem)
end if
end repeat
if trackName is not lastName and trackArtist is not lastArtist and trackAlbum is not lastAlbum then
set lastName to trackName
set lastArtist to trackArtist
set lastAlbum to trackAlbum
tell application "LadioCast"
set metadata song to trackName & " – " & trackArtist & " – " & trackAlbum
end tell
end if
delay 15
end repeat
tell application "LadioCast" set metadata song to trackName & " – " & trackArtist & " – " & trackAlbum end tell
- person user2967064   schedule 13.11.2013