Apple の脅威の通知と金銭目当てのスパイウェアへの対策について

しばらく返答が寄せられていないようです。 再度ディスカッションを開始するには、新たに質問してください。

Automatorのエラー

 こんにちは。

 初めての投稿で不慣れですが、質問をさせてください。


 Automatorを使って複数のオーディオファイルをMP3に変換し、既存のプレイリストに保存したいのですがうまくいきません。

変換したいオーディオファイルはMP2形式の2時間尺のものです。

アクション“オーディオファイルを読み込む”でエラーが起きました: “操作を完了できませんでした。(OSStatusエラー-1712)”


実行中に上記のように表示され、MP3変換まではできていますが、プレイリストに追加されません。

試しにWAV形式で一つあたり3分程度のオーディオファイルで10曲一括でやってみたところ、MP3変換もプレイリストへの追加も問題なく行われました。

読み込むファイルがMP2であることか、長尺であることが障害になっているのでしょうか?


*Automatorに指示している内容*


「指定されたFinder項目を取得」

  ↓

「オーディオファイルを読み込む」( iTunes)

方法:MP3エンコーダ

※その他チェックは無し

  ↓

「プレイリストに曲を追加」( iTunes)

既存のプレイリスト  <追加したいプレイリストの名前>

※その他チェックは無し


Mac OS:High Sierra10.13.2

iTunes:12.7.3.46

Automator:バージョン2.8 (444.4)


いつも大量にこの操作を繰り返す必要があるので、Automatorで一括操作できると非常に助かります。

どなたかお詳しい方いらっしゃいませんでしょうか?

相談させてください。

どうぞよろしくお願いいたします。

MacBook Pro with Retina display, macOS High Sierra (10.13.3), null

投稿日 2018/02/20 18:09

返信
スレッドに付いたマーク ベストな回答

投稿日 2018/02/28 11:14

度々、失礼致します。


iTunes.appの、環境設定…>一般>読み込み設定…、で『読み込み方法:』の項目がMP3エンコーダーになっていれば、MP2のファイルをiTunesライブラリに直接読み込んだ時にファイルはMP3に変換されているのではないかと想像しています。


Automator.appの『オーディオファイルを読み込む』アクションは約1分程度でタイムアウトエラーになり、また、アクションの本体(/System/Library/Automator/Import Audio Files.action)のパッケージの中にある、info.plistで、ImportTimeOutValueInSecondsのキーが3600に設定されていることを考えると、このアクションにはバグがあって、使えなさそうです。


そこで、代わりに『AppleScriptを実行』アクションを使ってみたところ、狙い通りに処理を完了することができました(下図)。 Playlistへの追加もAppleScript内で処理した方がエラーにならなかったです。


ユーザがアップロードしたファイル


アクションに入力するステートメンツは以下の通りです。 プレイリストの名前をお使いのものに変更して下さい。 タイムアウトの時間も適切なものに変更して下さい。


tell application "iTunes"

with timeout of (300 * (length of input)) seconds # 一曲につき5分のタイムアウトを設定

set aTrackList to convertinput

end timeout

repeat with thisTrack in aTrackList


duplicatethisTracktoplaylist "Temp" # プレイリストの名前を入力

end repeat

end tell


最初のアクション『指定されたFinder項目を取得』では、項目を入力したり、削除したりする手作業が必要です。 この操作は、ワークフローをサービスに変換することで省くことができ、Finder.appからファイルを選択した状態で、サービスメニューから直接ワークフローを実行できるので便利ですよ(下図)。


ユーザがアップロードしたファイル


ライブラリに読み込んだ元のファイルをゴミ箱に移す操作を自動で行う場合は、上記のステートメンツの下に、


tellapplication "Finder" tomoveinputtotrash


を追加しておきます。

返信: 18
スレッドに付いたマーク ベストな回答

2018/02/28 11:14 tomo86 への返信

度々、失礼致します。


iTunes.appの、環境設定…>一般>読み込み設定…、で『読み込み方法:』の項目がMP3エンコーダーになっていれば、MP2のファイルをiTunesライブラリに直接読み込んだ時にファイルはMP3に変換されているのではないかと想像しています。


Automator.appの『オーディオファイルを読み込む』アクションは約1分程度でタイムアウトエラーになり、また、アクションの本体(/System/Library/Automator/Import Audio Files.action)のパッケージの中にある、info.plistで、ImportTimeOutValueInSecondsのキーが3600に設定されていることを考えると、このアクションにはバグがあって、使えなさそうです。


そこで、代わりに『AppleScriptを実行』アクションを使ってみたところ、狙い通りに処理を完了することができました(下図)。 Playlistへの追加もAppleScript内で処理した方がエラーにならなかったです。


ユーザがアップロードしたファイル


アクションに入力するステートメンツは以下の通りです。 プレイリストの名前をお使いのものに変更して下さい。 タイムアウトの時間も適切なものに変更して下さい。


tell application "iTunes"

with timeout of (300 * (length of input)) seconds # 一曲につき5分のタイムアウトを設定

set aTrackList to convertinput

end timeout

repeat with thisTrack in aTrackList


duplicatethisTracktoplaylist "Temp" # プレイリストの名前を入力

end repeat

end tell


最初のアクション『指定されたFinder項目を取得』では、項目を入力したり、削除したりする手作業が必要です。 この操作は、ワークフローをサービスに変換することで省くことができ、Finder.appからファイルを選択した状態で、サービスメニューから直接ワークフローを実行できるので便利ですよ(下図)。


ユーザがアップロードしたファイル


ライブラリに読み込んだ元のファイルをゴミ箱に移す操作を自動で行う場合は、上記のステートメンツの下に、


tellapplication "Finder" tomoveinputtotrash


を追加しておきます。

2018/02/21 12:46 tomo86 への返信

OSStatusエラー-1712は、CarbonCore/MacErrors.hに定義されている、タイムアウトエラーです。従って、尺長なのが問題なのでしょうか。

ユーザがアップロードしたファイル

ところで、MP2はビデオの規格です。iTunesで「オーディオファイルを読み込む」前に、MovieのEncode MediaでAAC(拡張子は.m4a)に変換するルーチンを入れてみてはどうでしょうか?(Encode Mediaは、AACしか選べないみたいですが、MP3より高音質です。)

ユーザがアップロードしたファイル

シェルスクリプトを使えば出来るとは思いますが敷居が高いですか?

2018/02/23 15:42 tomo86 への返信

AppleEventのデフォルトのタイムアウトは2分のようです。このぐらいのタイミングでエラーが表示されていませんか?


When a command fails to complete in the allotted time (whether the default of two minutes, or a time set by a with timeout statement), AppleScript stops running the script and returns the error "event timed out".

https://developer.apple.com/library/content/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_con…


Automaterではタイムアウトを設定する箇所は見当たらないのですが、AppleScriptでは指定できるようです。

ユーザがアップロードしたファイル

> ちなみに、最初に自分が設定した状態でMP2から読み込んでもファイル1つ(2時間分)であれば

> エラーなく指示通りの結果になりました。


ということは、ファイルを一個ずつ行えば問題ないということでしょうか?


> シェルスクリプトを使えばタイムアウトエラーが改善される可能性はあるのでしょうか?


ShellScriptは、AppleEventとは関わりがないのでAppleEventのタイムアウトの制約は受けません。


私は、2時間超えのファイルを持っていないので、試しに、ShellScriptのルーチンを加え、擬似的に2分間のスリープを加えてみましたがタイムアウトは起こりませんでした。参考までに。

ユーザがアップロードしたファイル

ところで、AutomatorでRunすれば、上記のように✅マークが付くわけで、どこで失敗してるか分かる筈です。こうした情報を開示していただければあれこれ考えずに済むのですが...

2018/02/23 22:27 tomo86 への返信

度々、失礼致します。


小説を使って、9時間18分(再生時間)の音声ファイル一つ(拡張子:.aiff、サイズ:1.5 GB)を作成して、同じワークフローを実行することで現象を再現できました(下図)。 MP2のファイルでなくてワークフローは正常に実行できないです。 興味深いのは、エラーが表示されてワークフローが止まっても(実行から60秒程度で終了)、iTunes.appライブラリへの読み込みは継続していて、音声ファイルの読み込みは正常に終了する(全て読み込む)ようです。 最初のアクションを削除して、サービス形式のワークフローにしても同じ結果でした。

ユーザがアップロードしたファイル

2018/02/28 11:15 T22T への返信

T22T様のコメントで解決してますが、私もQuickTime PlayerでScreen Recordingした動画を連結し、2時間強の動画(mp4)を作ってしまったもので...(笑


先ず、"オーディオファイルを読み込む"でエラーが発生するのを確認しました。AutomatorとiTunesの間でやりとりしているAppleEventのタイムアウトは60秒で設定されているようです。タイムアウト後も、iTunesではインポート作業が継続しており、暫く待っていると完了します。当然のことながら、プレイリストには追加されません。

ユーザがアップロードしたファイル

ShellScriptでavconvertコマンドにてコンバートすれば、これを回避できます。インポートした後に、コンバートしたファイルを削除するルーチンも必要です。($TMPDIRに直接ファイルを書き込むのは良くないのですが...)

ユーザがアップロードしたファイル

ユーザがアップロードしたファイル

ユーザがアップロードしたファイル

2018/02/28 19:27 tomo86 への返信

tomo86 様、


うまく動いたようで、良かったです。 上記のAppleScriptではプレイリストの名前を直接入力していますが、Prompting for a Choice from a Listのコマンドを使うことで、実行時にリストから選択することもできます。 また、Displaying Notificationsや、Displaying Progressのコマンドを組み入れることで、処理の終了を通知したり、進行度を表示させることもできそうです。


Automator.appでは、AppleScriptの他にJavaScriptやShellScriptを実行するアクションがあります。 さらに、Objective-Cのクラスやコマンドも一部ですが利用できます。 それらを組み合わせることで、様々な処理を実行できるので便利です。

2018/02/20 21:53 tomo86 への返信

追記:

tomo86 による書き込み:


実行中に上記のように表示され、MP3変換まではできていますが、プレイリストに追加されません。

とのことなのですが、変換されたMP3のトラックは、iTunes.appのライブラリに読み込まれていますか? その場合、再生可能な状態でしょうか? また、元のファイルの全体を読み込んでいる状況でしょうか? それとも、ファイルの一部のみを読み込んでいる状況でしょうか?


お使いのワークフローを実行する際に、最初のアクション(「指定されたFinder項目を取得」)で読み込むファイルを選択する必要がありますよね。 Automator.appのサービスを使うと、Finder.appからワークフローを直接実行できますので、便利ですよ。

2018/02/22 13:32 hohokihai への返信

hohokihai 様

ご返信ありがとうございます!

なるほどタイムアウトエラーなのですね!

ムービーのエンコード試してみましたが残念ながら同じ状況です。

ちなみに、最初に自分が設定した状態でMP2から読み込んでもファイル1つ(2時間分)であればエラーなく指示通りの結果になりました。

2つ(4時間分)からエラーがでます。

やはり尺の問題でしょうか…

シェルスクリプトは私の知識では、とても使いこなせません😢

シェルスクリプトを使えばタイムアウトエラーが改善される可能性はあるのでしょうか?

ご親切な書き込みありがとうございます。

今後ともよろしくお願いいたします。

2018/02/23 21:54 tomo86 への返信

ご説明を頂きまして、有難うございます。


インターネット上を検索してみると、MP2のファイルもiTunes.appに読み込みできるとの情報がありました。 Automator.appのワークフローとは別に、iTunes.appのメニューにある、ファイル>ライブラリに追加… ⌘O のコマンドを実行してみた場合は、どうでしょうか? 読み込みが可能でしょうか? また、読み込んだトラックの情報を表示して、情報を表示して(⌘I)、ファイル情報のパネルを開いたとき、ファイルの拡張子はどの様になっていますでしょうか? .mp2のままでしょうか? それとも他の拡張子に変更されていますか?

2018/02/20 19:57 tomo86 への返信

失礼致します。 


Automator.appの『オーディオファイルを読み込む』アクションの説明をみると(下図)、入力に対応しているファイル種類に、.mp3はあるのですが、.mp2の項目がありません。 私は音楽ファイルの種類に詳しくないのですが、MP2に対応していないということはありませんか?

ユーザがアップロードしたファイル

2018/02/23 21:51 tomo86 への返信

度々、失礼致します。 読み込んだMP3のトラックの終わりの部分を再生した時に、読み込む前のMP2の終わりの同じ部分と一致しているかどうかを確認してみるとどうでしょうか? つまり、MP3のトラックがiTunesのライブラリ上では読み込みが終わっている様に見えるのですが、実際に再生してみると最後まで読み込みが終わっていない可能性があるかもしれません。

Automatorのエラー

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple ID を使ってご参加ください。