勉強や作業の傍らに音楽を流しているという方は多いのではないでしょうか。そんなとき、オーディオプレイヤーがいつも同じ順番に再生するので、いつも最初の方しか聞けないということはないでしょうか。まさに筆者がその状況に陥っており、困っていたので、ファイル名をランダムに変更するプログラムを作ってみました。
オーディオプレイヤーのシャッフルボタン機能について
多くのオーディオプレイヤーには、シャッフル機能がついており、その機能を有効にすることで、曲の再生順番をランダムに変更できます。とは言え、シャッフル機能がついていないプレイヤーもあります。その場合、常に同じ順番で曲がながれたり、同じアーティストの曲が連続で流れたりして、面白くないことになります。
そうしたオーディオプレイヤーは大抵、ファイル名順に音楽を再生します。そこで、今回はSDカード内の音楽ファイルの名前の前にランダムな数字を付与して、強制的に曲順をシャッフルしてみましょう。
なでしこ3PC版(Windwos)のインストールについて
今回は、なでしこ3のPC版(Windows)を利用してみましょう。以前、紹介したことがありますが、あれからずいぶんバージョンアップしており、手順が変わっているので、改めて使い方を紹介します。
まず、なでしこ3のWindows版の配布ファイルを、こちらからダウンロードできます。
なお、macOSやLinuxでも動かすことができます。Windows以外のインストールについては、こちらに書かれています。
ちなみに、ダウンロードは、なでしこの開発が行われている、GitHubのサイトから直接行うのでちょっと迷うかもしれません。次の図にあるAssetsの下にある「Source Code(.zip)と」いうリンクをクリックします。
ダウンロードしたファイルは、ZIP形式で圧縮されているので解凍して利用します。すると「start.exe」というファイルがあるので、このファイルをダブルクリックします。なお初回のみ、WindowsのDefenderによる警告が出ます。そこで、[詳細情報]をクリックし、[実行]ボタンを押すと実行されます。
初回実行時には、さらに圧縮されているファイルを解凍します。少し待っていると自動で設定が完了します。すると簡易実行メニューがでます。そこで「なでしこ3のPC(Node.jsランタイム)を実行」というボタンを押しましょう。すると、Node版のなでしこ3エディタが起動します。そこで、「新規作成」ボタンを押しましょう。
それでは、適当にプログラムを実行してみましょう。『「こんにちは」と表示』と書き込み、エディタの下にある「実行(cnako3)」というボタンを押してみましょう。すると、画面下に実行結果が表示されます。
音楽ファイルにランダムな数字を追加するプログラムを作ろう
それでは、今回のプログラムを作ってみましょう。なお、ここでは音楽ファイルがSDカードのあるフォルダに入っており、そのフォルダにあるMP3ファイルの先頭にランダムな数字を追加するというプログラムです。
実行するたびに、ファイルの先頭にある数字が削除された上で改めて割り振られるという仕組みにしているので、この順番に飽きたら改めてファイルの並び順をシャッフルできるように工夫しています。
以下のプログラムを、Node版なでしこ3エディタに書き込んで実行してみましょう。ただし、二行目(※1)にある音楽フォルダのパスは、ご自身の環境に合わせて変更してください。パスを調べる方法をプログラムの後で紹介します。
# 以下にフォルダを指定 --- (※1)
音楽フォルダ=「E:\songs」
# ファイル一覧を取得して順番をシャッフルする --- (※2)
「{音楽フォルダ}\*.mp3」をファイル列挙して配列シャッフルして曲一覧に代入。
NO=1
曲一覧を反復
元ファイル=対象
もし、((元ファイルの1文字左部分)=「.」)ならば、続ける。 #設定ファイルを除外
# ファイル名にランダムな番号を付与する --- (※3)
新ファイル=元ファイルの「^[0-9_]+」を「」へ正規表現置換
新ファイル=「{NOを3でゼロ埋}_{新ファイル}」
NO=NO+1
# 実際にファイル名を変更する --- (※4)
エラー監視
「{音楽フォルダ}\{元ファイル}」から「{音楽フォルダ}\{新ファイル}」へファイル移動。
「[OK] {元ファイル} → {新ファイル} 」を表示。
エラーならば
「[エラー] {元ファイル} → {新ファイル}」を表示。
ここまで。
ここまで。
プログラムを確認しましょう。(※1)の部分では、作業対象となる音楽フォルダのパスを指定します。
そして、(※2)の部分でMP3ファイルの一覧を列挙します。そして、列挙したファイルをランダムにシャッフルして、変数「曲一覧」に代入します。それから「反復」構文を使って、ファイルを一つずつ処理します。
(※3)の部分でファイルの先頭に数字を追加します。ここで指定する数字は、変数NOであり1つずつ加算される値なのですが、先ほど(※2)の部分でランダムな順番に変更しているため、連番を振っているものの、結果としてランダムに数字が割り振られます。
そして、(※4)で実際にファイルを変更します。ファイル名の変更には「ファイル移動」命令を使います。
ファイルのパスを調べる方法
なお、SDカードのフォルダパスを調べる方法を簡単に紹介します。パスを調べるには、Windowsのエクスプローラーを使います。エクスプローラーで任意のフォルダを開いて、エクスプローラーのアドレスバーをクリックすると、フォルダのパスが表示されます。このパスの値をコピーしてプログラムに貼り付けましょう。
まとめ
以上、今回はWindows版のなでしこ3を使って、ファイル名の先頭にランダムな数字を追加するプログラムを作ってみました。基本的になでしこ3はブラウザで動くプログラミング言語なのですが、Windows版を使うことにより、PC内の定型作業を自動化することができます。今回紹介したように、ファイル名の変更やコピーなどに使えるので、ぜひ使ってみてください。
自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2004年度未踏ユース スーパークリエータ認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。直近では、「シゴトがはかどる Python自動処理の教科書(マイナビ出版)」「すぐに使える!業務で実践できる! PythonによるAI・機械学習・深層学習アプリのつくり方 TensorFlow2対応(ソシム)」「マンガでざっくり学ぶPython(マイナビ出版)」など。