高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

MortScript

いろいろいじりたいのにいちいちソフトを作っていては時間が足りないので、アドエスにMortScriptを入れてみました。
うーん、なんかVBPerlを混ぜ合わせたような言語ですね、If文のあとに括弧があったり、文字列演算子Perlと同じだったりしますが、ブロックの終わりはEnd〜だったり、行末のセミコロンがいらなかったり、何より配列の添え字が1ベースだったり(好きにできるようですが、とりあえずChoice関数がそういう実装だったので)、なんだかちょっと違和感。うーん、アドエスをいじれる命令セットがあるのは買いですが、個人的にはあまり好きになれそうにないな・・・。


とりあえず、MicroSD内のasxファイル(Windows Media PlayerとのMTPで作成されたもの)のファイル名だけを抜き出してm3uファイルに変換するスクリプトを作ってみました。できたm3uはGSPlayerなどで使えます。

ForEach file in files("\microSD\Playlists\*.asx")
  text = ""
  ForEach line in Split(ReadFile(file), "^NL^", TRUE)
    name = Part(line, """", 2)
    If(name ne "")
      text = text & name & "^NL^"
    EndIf
  EndForEach
  WriteFile(FilePath(file) & "\" & FileBase(file) & ".m3u", text)
EndForEach

うちではPocketの手を使ってMicroSDのドライブ名を変えているので、適宜編集を。
まあ、汎用性を考えるなら最初に既存のm3uを全て削除するなり、気を利かせてもよかったかも。


で、下のスクリプトで再生するファイルを選択。どこかに似たのがあったような気がしますが、忘れたので。

i = 1
ForEach file in files("\microSD\Playlists\*.m3u")
  files[i] = file
  filenames[i] = FileBase(file)
  i = i + 1
EndForEach
fileindx = Choice( "選択", "再生するm3uを選択してください", 0, 0, filenames)
If(files[fileindx] ne "")
  Run("\Program Files\GreenSoftware\GSPlayer2.exe", files[fileindx])
EndIf

Choice関数のデフォルト値はどうも動いていない(何を指定してもキャンセル時0が返ってくる?)らしいので注意。
Choiceのデフォルト値はキャンセル時の返却値ではなく、デフォルトインデックスなので注意