ネットワーク上にあるテキストファイルを読み込ませる

今まではローカルディスク上にあるデータを扱っていました。が、今はコンピューターはネットワークでつながっているのが当たり前になっています。MacでもWindowsでも相手先のドライブをマウントしてデータを利用することができますが、ここではサーバー上にあるデータを持ってきて処理します。
ここでは一般的なWebサーバーと通信をして必要なファイル内容を表示させてみます。相手先のサーバーがダウンしていると困るので、安全と思われるYahoo JAPANのトップページの内容を表示させます。以下のスクリプトが実際のスクリプトです。(エラー処理は省略されているので万が一ハングアップしたらAfterEffectsを強制終了させる、OSを再起動させてください)

sURL = "www.yahoo.co.jp:80";
webPort = new Socket();
if (webPort.open(sURL))
{
webPort.writeln("GET");
txt = webPort.read();
webPort.close();
}
alert(txt);

実行すると、ダイアログにHTMLファイルの内容が表示されます。タグがずらずらと表示されますが、ブラウザと違って整形などは行われないのでファイルの内容そのままになります。
実際のところHTMLファイルをデータとして受け取っても処理が面倒ですので、簡単なテキストファイルでやりとりするのがベストです。ファイルに日本語が含まれる場合には文字コードはUTF-8にしておいてください。
以下のスクリプトは

http://www.openspc2.org/~openspc/ae.txt

にあるae.txtファイルを読み込んで表示するものです。

sURL = "www.openspc2.org:80";
webPort = new Socket();
if (webPort.open(sURL,"UTF-8"))
{
webPort.writeln("GET /~openspc/ae.txt");
txt = webPort.readln();
webPort.close();
}
alert(txt);

一番最初の行がサーバー名です。:で区切って80と書きます。この80はポート番号です。もし、ポート番号が異なる場合には、そのポート番号に書き換えてください。例えば8080ポートなら

sURL = "www.myCorp.com:8080";

のように指定します。読み込むファイル名は

webPort.writeln("GET /~openspc/ae.txt");

の/~openspc/ae.txtになります。これはファイルへのパスになりますので、あらかじめブラウザで調べておいてから指定するのが安全です。

次に読み込んだサーバー上のファイル内容をテキストレイヤーとして配置します。これはこれまでも利用した命令である

app.project.activeItem.layers.addText(txt);

を使います。実際のスクリプトは以下のようになります。

sURL = "www.openspc2.org:80";
webPort = new Socket();
if (webPort.open(sURL,"UTF-8"))
{
webPort.writeln("GET /~openspc/ae.txt");
txt = webPort.read();
webPort.close();
}
app.project.activeItem.layers.addText(txt);

テキストファイルのみを読み込むだけですが、ファイル内容を読み込んで処理できるので、いろいろ応用できるでしょう。幸いなことにAdobeのAfterEffectsのリファレンス223ページ以降にはチャットや簡易サーバーなどのサンプルが用意されています。興味のある人は見て勉強してみるといいでしょう。




[サンプルをダウンロード]