カーオーディオでUSBにある曲順をPythonで直す方法

IT

はじめに

カーオーディオの曲順が思った通りにならないってことはないでしょうか?
ファイル名順になってほしいのに、よく分からない順番で再生されてしまいます。

実は多くのカーオーディオでは、USBメモリに書き込んだ順番になるようです。
それで今回は、Pythonを使って、ファイル名順にファイルを書き込んで、順番をそろえるプログラムを作りたいと思います。

プログラム

ファイルのパスは、ご利用の環境に合わせて調整してください。
やっていることは簡単。USBメモリの内容をいったんPCにコピー、USBメモリをクリア、ファイル名順にファイルをコピーするだけです。

import os
import shutil

# 音楽ファイルがあるディレクトリ(一時フォルダとしても使用)
tmp_dir = 'C:/tmp'

# USBメモリのパス
usb_path = 'D:/'

# 音楽ファイルの拡張子
extensions = ['.mp3', '.wav', '.flac', '.aac']

# USBメモリの内容を一時フォルダにコピー
for item in os.listdir(usb_path):
    s = os.path.join(usb_path, item)
    d = os.path.join(tmp_dir, item)
    if os.path.isdir(s):
        shutil.copytree(s, d, False, None)
    else:
        shutil.copy2(s, d)

# USBメモリをクリア
for item in os.listdir(usb_path):
    s = os.path.join(usb_path, item)
    if os.path.isdir(s):
        shutil.rmtree(s)
    else:
        os.remove(s)

# ファイルとディレクトリを走査
for root, dirs, files in os.walk(tmp_dir):
    # ファイルをアルファベット順にソート
    files.sort()
    for i, file in enumerate(files):
        if os.path.splitext(file)[1] in extensions:
            # USBメモリにコピー
            destination = os.path.join(usb_path, os.path.relpath(root, tmp_dir))
            os.makedirs(destination, exist_ok=True)
            shutil.copy(os.path.join(root, file), os.path.join(destination, file))

まとめ

いかがだったでしょうか?同じような仕組みのファイルをソートするプログラムもありますが、
このコードだけで、同じことが実現出来てしまいます。お試しあれ!!

タイトルとURLをコピーしました