想定運用フォルダ構造
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)"
EndForEachFor 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
EndForEachFor 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")
この記事にトラックバックする: |