2010-05-11 3 views
7

Я хочу использовать Scripting Bridge для добавления фильма в iTunes. И желательно разрешить мне выбирать между «музыкальным видео» и «фильмом». Я знаю как Objective-C, так и AppleScript, поэтому я думал, что это будет не так сложно, но я не могу понять это. Я знаю, как использовать NSAppleScript для него, но я нацелен на 10.5 или новее и читаю, что Scripting Bridge устаревает NSAppleScript. Это правильно?Добавить фильм в iTunes с помощью скриптового моста

Все, что я получил это

iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier: @"com.apple.iTunes"]; 

Который, как вы можете видеть, не так много на всех.

ответ

1

Вы должны использовать «процессор определения сценариев» программу (sdp), чтобы создать файл заголовок из определения сценариев Itunes' (.sdef) файла (который можно получить с помощью программы sdef):

sdef /Applications/iTunes.app | sdp -fh --basename "iTunes" 

Этого Я дам вам файл под названием iTunes.h. Затем вы включаете этот заголовок в свой проект и просматриваете его, чтобы узнать, что предлагает интерфейс интерфейса сценариев iTunes.

Если вам кажется, что вы не сможете сделать это с помощью скриптового моста (возможно - не все, что можно сделать через интерфейс AppleScript для приложения, также можно выполнить с помощью скриптового моста), просто вперед и вместо этого напишите AppleScript, а затем выполните это в своей программе с помощью NSAppleScript.

+0

Я уже сделал вещь sdp. И я думаю, что мне нужен метод add: to:. Но об этом нет никакой документации. – Jeroen

+0

Если это невозможно сделать с помощью скриптового моста, вы можете попробовать [appscript] (http://appscript.sourceforge.net/) или просто простой старый AppleScript. – hasseg

+0

Это возможно с помощью скриптового моста: я много раз делал подобные вещи с Python. – wbg

10

Шаг 1. Сформировать iTunes.h заголовочный файл:

sdef /Applications/iTunes.app | sdp -fh --basename "iTunes" 

Шаг 2. Код для добавления медиа-файл выглядит следующим образом:

NSString* sourceMediaFile = ...; 
iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"]; 
iTunesTrack * track = [iTunes add:[NSArray arrayWithObject:[NSURL fileURLWithPath:sourceMediaFile]] to:nil]; 
NSLog(@"Added %@ to track: %@",sourceMediaFile,track); 
0

Для второго параметра, он принимает плейлист объект (или nil, как упоминалось ранее). После того как вы извлекли экземпляр объекта iTunesPlaylist * с помощью некоторых средств (в зависимости от ваших потребностей несколько), вы можете передать его в качестве второго параметра.