缙哥哥的博客
与你分享我的点点滴滴生活

做个给车载音乐随机打乱并能全部播放的工具

2025年生日福利大放送,感兴趣的小伙伴可以领取一波

今天刷抖音的时候刷到一个车主说自己的车载音乐(本地U盘音源)使用随机播放有很多歌曲从来都没有播放过(因为他有好几百首歌),除非手动点播,但是列表播放,又会出现长时间同一个歌手的音乐,很烦恼。于是乎我就顺手做了个程序,帮他解决这个问题。

这里缙哥哥以两位歌手的歌曲为例,正常情况下顺序播放就是先听完任贤齐的,再听孙燕姿的。

于是我就弄了个增加文件名前缀的工具,暂定4位随机数,也就是说你 U 盘当中只要不多于 9999 首歌都能使用,其实多了也没关系,毕竟后面文件名还不同。

软件下载

使用说明

将你存放音乐的 U 盘插入电脑,解压MP3车载音乐随机播放工具.zip压缩包运行 mp3.exe 程序,如果你的电脑有 Python 也可以下载运行 py 文件。

界面超级简单,选择 mp3 歌曲文件所在的路径,点击确认即可。

这里会有个二次提醒,毕竟要重命名文件名,意味着打乱顺序,所以建议复制备份一个,不是自己想要的结果还可以恢复原来的状态。

运行的时候还提示这个,直接允许即可。文末放 Python 源代码,执行 py 也可以同样实现。这里做成 exe 可执行文件是怕某些小伙伴电脑上没有 Python 环境。

这个时候再插入车子里,即便按列表播放,它也是“随机播放”了,并且能确保每首歌都能播放到位,除非你自己切歌。

Python 源码

import os
import random
import string
import datetime
from pathlib import Path
import tkinter as tk
from tkinter import messagebox, filedialog

def generate_random_prefix(length=4):
    # 生成一个指定长度的随机字母和数字组合
    letters = string.ascii_letters + string.digits
    return ''.join(random.choice(letters) for _ in range(length))

def randomize_datetime(start_year=1980, end_year=datetime.datetime.now().year):
    # 生成一个在指定年份范围内的随机日期时间
    start_date = datetime.date(start_year, 1, 1)
    end_date = datetime.date(end_year, 12, 31)

    time_between_dates = end_date - start_date
    days_between_dates = time_between_dates.days
    random_number_of_days = random.randrange(days_between_dates)
    random_date = start_date + datetime.timedelta(days=random_number_of_days)

    random_time = datetime.time(
        hour=random.randint(0, 23),
        minute=random.randint(0, 59),
        second=random.randint(0, 59)
    )

    return datetime.datetime.combine(random_date, random_time)

def process_mp3_files(directory):
    # 获取目录中所有的MP3文件
    mp3_files = [f for f in directory.iterdir() if f.suffix.lower() == '.mp3']
    
    for file in mp3_files:
        # 生成一个新的文件名,前面加上随机前缀
        random_prefix = generate_random_prefix()
        new_filename = f"{random_prefix}-{file.name}"
        new_filepath = file.parent / new_filename
        
        # 重命名文件
        file.rename(new_filepath)
        
        # 随机化文件的创建时间和修改时间
        random_ctime = randomize_datetime().timestamp()
        random_mtime = randomize_datetime().timestamp()
        
        try:
            os.utime(new_filepath, (random_ctime, random_mtime))
        except OSError as e:
            messagebox.showerror("错误", f"设置时间戳时出错 {new_filepath}: {e}")

def on_select_drive():
    # 弹出文件对话框选择U盘路径
    drive_path = filedialog.askdirectory(title="选择U盘(文件)路径")
    if drive_path:
        selected_drive.set(drive_path)
        confirm_button.config(state=tk.NORMAL)

def on_confirm():
    # 获取选定的驱动器路径
    drive_path = selected_drive.get()
    if not drive_path:
        messagebox.showwarning("警告", "请选择一个U盘(文件)路径")
        return
    
    # 提示用户操作风险并询问是否继续
    response = messagebox.askokcancel("重要提醒", "该操作将会重命名文件名,建议使用前备份一下!继续吗?")
    if not response:
        return
    
    drive_directory = Path(drive_path)
    if not drive_directory.exists():
        messagebox.showerror("错误", "指定的路径不存在,请检查路径是否正确")
        return
    
    # 处理MP3文件
    process_mp3_files(drive_directory)
    messagebox.showinfo("完成", "处理完成!")

# 创建主窗口
root = tk.Tk()
root.title("车载音乐随机播放工具 - by:缙哥哥的博客 www.dujin.org")

# 变量
selected_drive = tk.StringVar()

# 控件
label = tk.Label(root, text="选择U盘(文件)路径:")
label.pack(pady=10)

entry = tk.Entry(root, textvariable=selected_drive, width=50)
entry.pack(pady=5)

select_button = tk.Button(root, text="浏览...", command=on_select_drive)
select_button.pack(pady=5)

confirm_button = tk.Button(root, text="确认", command=on_confirm, state=tk.DISABLED)
confirm_button.pack(pady=20)

# 运行应用程序
root.mainloop()

赞(1) 打赏
转载请注明来源及链接:缙哥哥 » 做个给车载音乐随机打乱并能全部播放的工具
如需 WordPress 优化加速、二次开发、托管等服务,可联系我购买付费服务:点此联系我 | 近期站内热门福利:

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册