Программно добавлять конвертированное видео в iTunes с помощью SDK - PullRequest
1 голос
/ 27 февраля 2011

Я написал простой код, который взаимодействует с HandbrakeCLI для преобразования видео в формат, который может обрабатывать iTunes. После этого я хочу, чтобы он автоматически добавлялся в iTunes.

Из того, что я могу сказать из документации iTunes SDK, следующий код VBScript должен работать:

Option Explicit
Dim oiTunes
Set oiTunes = CreateObject("iTunes.Application")
oiTunes.ConvertFile2("D:\Development\VBScript\converted-video.avi")
Set oiTunes = Nothing
Msgbox "Uploaded!"

Однако, после запуска, "Загружено!" появляется сообщение, но iTunes не импортировал (или даже не начал импортировать) видеофайл.

Кто-нибудь может подсказать, как мне заставить это работать? Кроме того, если кто-то может показать мне, как я также могу определить, завершил ли он импорт (как я хотел бы переименовать метаданные после завершения импорта), я был бы очень признателен.

Ответы [ 2 ]

0 голосов
/ 01 марта 2011

Следуя полезному указателю AutomatedChaos, я предлагаю следующий пример рабочего кода:

Option Explicit
Dim oiTunes, oTracks, oAdd
Set oiTunes = CreateObject("iTunes.Application")
Set oTracks = oiTunes.LibraryPlaylist
Set oAdd = oTracks.AddFile("D:\Development\VBScript\converted-video.mp4")
Do : Loop While oAdd.InProgress = True
Set oAdd = Nothing
Set oTracks = Nothing
Set oiTunes = Nothing
Msgbox "Uploaded!"

Убедитесь, что вы можете сначала импортировать видеофайл через интерфейс iTunes, потому что если вы не можете, то этопотерпит неудачу.

Нет смысла пытаться что-то вставить в Do .. Loop, так как на моем компьютере (с достаточно низкой спецификацией) добавляется 44-минутное видео за 2 секунды.

0 голосов
/ 28 февраля 2011

Кажется, что oiTunes.ConvertFile2 - это метод, который возвращает объект 'convert'.Вероятно, это преобразование файла в асинхронном режиме, так что вы можете выполнить другой код VBScript за это время.Однако ваш код напрямую убивает объект oiTunes, а также убивает процесс конвертирования.
Похоже, есть два свойства, которые вы можете использовать для чтения статуса конвертации: .ProgressValue и .MaxProgressValue.Таким образом, вы можете создать цикл вроде:

Dim oConvert : Set oConvert = oiTunes.ConvertFile2(...)
Do : Loop while oConvert.ProgressValue < oConvert.MaxProgressValue
Set oConvert = Nothing
Set oiTunes = Nothing
MsgBox "Uploaded!"

У меня сейчас нет iTunes, поэтому я не мог проверить, решит ли это ваши проблемы, но я надеюсь, что это даст вам толчок в правильном направлениинаправление.

...