2009年06月14日
前回のエントリで、プレイリストを自動的につくるMortScriptをつくりました。
ただ、上下のフォルダ内にプレイリストが点在する形になるので、プレイリストを選択するときにちょっと面倒。
そういうわけで、プレイリストをまとめて表示して、それを選択すると自動的にGSPlayerが起動するようにスクリプトを組みました(m3uの関連付けがされていることが前提。
これで、GSPlayerでやりたいことは全部できたかなー。
####################################################3
##親ディレクトリ指定(直接書換のこと)
Dir_OYA = "\メモリ カード\audio"
##親ディレクトリ内プレイリスト抽出
i=0
ForEach File_work in files(Dir_OYA & "\*.m3u")
i=i+1
m3u_list[i]=File_work
len=length(m3u_list[i])
m3u_lists[i]=replace(substr(m3u_list[i],1,len-4),Dir_OYA & "\","")
EndForEach
##子ディレクトリ内プレイリスト抽出
j=0
ForEach Dir_work in directories(Dir_OYA & "\*")
j=j+1
dir_name[j]=Dir_work
EndForEach
For k=1 to j
ForEach File_work in files(Dir_name[k] & "\*.m3u")
i=i+1
m3u_list[i]=File_work
len=length(m3u_list[i])
m3u_lists[i]=replace(substr(m3u_list[i],1,len-4),Dir_name[k] & "\","")
EndForEach
next
count=choice("プレイリスト選択","プレイリストを選択して下さい",0,0,m3u_lists)
run(m3u_list[count])
sleep(200)
##リストをソートして、一曲目から再生
SendCommand("GSPlayerK", 40035)
sleep(300)
MouseDblClick("GSPlayerK",50,75)
Posted at 2009/06/14 01:55:25 | |
トラックバック(0) |
イーモンスター | パソコン/インターネット
2009年06月12日
というわけで、MortScript用のスクリプトを少し変更。
まず、想定している運用フォルダ状況はこんな感じ。
Music
│ ALLSONGS.m3u(全曲プレイリストファイル)
│
+--ジャンル1
│ │ ジャンル1.m3u(ジャンル別ファイルリスト)
│ │
│ +--アルバム1
│ │ +--曲1.mp3
│ │ +--曲2.mp3
│ │ +--曲3.mp3
│ │
│ +--アルバム2
│ +--アルバム3
+--ジャンル2
+--ジャンル3
この前提で、「ジャンル」のフォルダをプレイリスト作成対象フォルダとして選択すると、そのジャンルの中にあるアルバムフォルダ中のMp3ファイルをプレイリスト化し、ジャンルフォルダ直下にm3uファイルとして作成(ファイル名はジャンルと同じ名前)。
さらに、Musicフォルダには各ジャンルフォルダ直下にあるm3uファイルから全曲プレイリストをが作成されます。
で、全曲リストは作成にちょっと時間がかかるので、先に作成指示したジャンル別プレイリストでGSPlayerを起動するようにしてます。
なお、起動後にはプレイリストをフルパスでソートして、一曲目から再生開始するようにしています。ただ、一曲目の指定をマウスクリックで行っているので、機種やスキンによって調整が必要になるでしょう。
というわけで、これで、自分の普段の運用にそったスクリプトができました!
……スクリプトが汚いのだろうとは思いつつ(汗
##プレイリスト作成ディレクトリ指定(直接書換のこと)
Dir_OYA = "\メモリ カード\music"
##############################################################
##個別プレイリスト作成
##ディレクトリ指定
Dir_music=SelectDirectory("Select Music Folder",MESS,Dir_OYA)
##プレイリストファイル作成
m3u_name= Dir_music \ Part(Dir_music,"\",-1) & ".m3u"
if (FileExists(m3u_name) = true)
DELETE(m3u_name)
ENDIF
##ディレクトリ読取
i=0
ForEach Dir_work in directories(Dir_music & "\*")
i=i+1
dir_name[i]=Dir_work & "\*"
EndForEach
##ファイル読取、リスト作成
ForEach File_work in files(Dir_music & "\*.mp3")
File_work=Replace(File_work,Dir_music & "\","")
WriteFile(m3u_name,File_work & "^NL^",True)"
EndForEach
For j=1 to i
ForEach File_work in files(dir_name[j] & ".mp3")
File_work=Replace(File_work,Dir_music,"")
WriteFile(m3u_name,File_work & "^NL^",True)"
EndForEach
next
##GSPlayerK起動
run(m3u_name)
sleep(200)
##リストをソートして、一曲目から再生
SendCommand("GSPlayerK", 40035)
sleep(300)
MouseDblClick("GSPlayerK",50,75)
############################
##全曲リスト作成
ALLSONGS =Dir_OYA \ "ALLSONGS"
##旧リスト削除
DELETE(ALLSONGS & ".m3u")
##親ディレクトリのひとつ下のフォルダを配列格納
i=0
ForEach Dir_work in directories(Dir_OYA & "\*")
i=i+1
dir_name[i]=Dir_work & "\*"
EndForEach
##ファイル内容読取、リスト作成
ForEach File_work in files(Dir_OYA & "\*.m3u")
Line_Work=ReadLine(File_work)
While(Not IsEmpty(Line_work))
If(SubStr(Line_Work,1,1) ne "#")
WriteFile(ALLSONGS & ".txt",Line_work & "^NL^",True)"
endif
Line_Work=ReadLine(File_work)
EndWhile
EndForEach
For j=1 to i
ForEach File_work in files(dir_name[j] & ".m3u")
Line_Work=ReadLine(File_work)
While(Not IsEmpty(Line_work))
If(SubStr(Line_Work,1,1) ne "#")
WriteFile(ALLSONGS & ".txt","\" & Part(Dir_name[j],"\",-2) \ Line_work & "^NL^",True)"
endif
Line_Work=ReadLine(File_work)
EndWhile
EndForEach
next j
##全曲リスト完成
Rename(ALLSONGS & ".txt",ALLSONGS & ".m3u")
Posted at 2009/06/12 00:05:15 | |
トラックバック(0) |
イーモンスター | パソコン/インターネット
2009年06月11日
MortScriptのSendCommandでコマンドコードを送り込むことができます。
というわけで、GSPlayerのコマンドコード一覧を調べてみましたので、メモ。
OK 1
Cancel 2
Display OFF 100
Volume up 108
Volume down 109
Add... 1005
CTRL Key 32807
Save Playlist... 40001
Add File... 40002
About... 40003
Exit 40004
Find File... 40008
Effects... 40009
Options... 40010
Open URL... 40011
Playlist... 40015
Shuffle 40017
Open File... 40018
Always on top 40020
Play/Pause 40027
Hide Window 40034
&Restore 40034
Sort by Path 40035
Stop 40036
Previous 40037
Next 40038
Save... 40044
Delete 40051
Down 40052
Up 40053
Repeat None 40054
Repeat All 40055
Repeat One 40056
Delete All 40063
Play 40069
Sort by File Name 40072
Sleep timer... 40073
Rew 40074
FF 40075
Key control... 40086
Play/Stop 40091
Posted at 2009/06/11 02:28:10 | |
トラックバック(0) |
イーモンスター | パソコン/インターネット
2009年06月10日
ついにエディックスが生産終了ということになったようです。
残念ながら短命に終わったということになりますが、これほど面白い車を、私は他に知りません。
まあ、売れてない上に、この景気ではやむをえないでしょうけど。
私としては、ここまで5年のってきた車。まだまだ乗り続けていきますよ!
……金もないし、今の車庫にぴったりだし(汗
Posted at 2009/06/10 22:59:47 | |
トラックバック(0) |
Edix | クルマ
2009年06月10日
というわけで、今日もMortScriptsをいじっていました。
まずは自分が手がかかっていると思うことをスクリプト化する方向で。
というわけで、まずはプレイリスト。
私がS11HTでMP3再生用に使っているアプリはGSPlayerKですが、このアプリでは、特定のフォルダにあるものを全部再生というような使い方ができず、まずプレイリストをつくらないといけません。
それを手動でやるのが面倒ということで、今回のスクリプトをつくってみました。
想定しているフォルダ構成は
Musicディレクトリ
│ ここにプレイリストを作成
│
ジャンル別ディレクトリ(複数)
│ このディレクトリを指定する
│
アルバム別ディレクトリ(複数)
MP3ファイルはここにある
というような感じです。
それで、ジャンルごとのプレイリストをスクリプト一発でつくる(プレイリスト自動作成)というスタイルです。
まだまだ汚いソースだとは思うのですが、やりたい事はできるようになってきました。
##############################################################
##プレイリスト作成ディレクトリ指定(直接書換のこと)
Dir_OYA = "\メモリ カード\music"
##############################################################
##ディレクトリ指定
Dir_music=SelectDirectory("Select Music Folder",MESS,Dir_OYA)
##プレイリストファイル作成
m3u_name =Input("プレイリストの名前を入力^NL^ ※同名なら上書","Input File Name")
m3u_name = Dir_OYA & "\" & m3u_name & ".m3u"
if (FileExists(m3u_name) = true)
DELETE(m3u_name)
ENDIF
##ディレクトリ読取
i=0
ForEach Dir_work in directories(Dir_music & "\*")
i=i+1
dir_name[i]=Dir_work & "\*"
EndForEach
##ファイル読取、リスト作成
ForEach File_work in files(Dir_music & "\*.mp3")
File_work=Replace(File_work,Dir_OYA,"")
WriteFile(m3u_name,File_work & "^NL^",True)"
EndForEach
For j=1 to i
ForEach File_work in files(dir_name[j] & ".mp3")
File_work=Replace(File_work,Dir_OYA,"")
WriteFile(m3u_name,File_work & "^NL^",True)"
EndForEach
next
##GSPlayerK起動
run(m3u_name)
Posted at 2009/06/10 01:36:08 | |
トラックバック(0) |
イーモンスター | パソコン/インターネット