You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

希腊语MP3文件名转拉丁字符并精简信息的实现方案

解决MP3文件名精简问题:保留艺术家与标题核心信息

问题背景

已有一批含希腊字母的MP3文件,通过Python脚本完成了希腊字符到拉丁字符的转换,但需进一步精简文件名,仅保留艺术家 - 标题的核心格式。例如将Basilis Mpatis - Zimia _ Vasilis Mpatis - Zimia _ Official Video Clip HQ 2017.mp3处理为Basilis Mpatis - Zimia.mp3。

解决方案

核心思路

  1. 先完成希腊字符到拉丁字符的转换
  2. 从转换后的文件名中提取包含艺术家-标题的有效片段
  3. 清理冗余字符,生成标准格式的文件名

修改后的完整Python脚本

import os

# MP3文件所在目录
path = '/home/sakis/mp3'

# 希腊字符到拉丁字符的映射表,替代原脚本的多次replace操作
greek_to_latin = {
    'Ά': 'A', 'Έ': 'E', 'Ή': 'H', 'Ί': 'I', 'Ό': 'O', 'Ύ': 'Y', 'Ώ': 'W', 'ΐ': 'I',
    'Α': 'A', 'Β': 'B', 'Γ': 'G', 'Δ': 'D', 'Ε': 'E', 'Ζ': 'Z', 'Η': 'H', 'Θ': 'TH',
    'Ι': 'I', 'Κ': 'K', 'Λ': 'L', 'Μ': 'M', 'Ν': 'N', 'Ξ': 'X', 'Ο': 'O', 'Π': 'P',
    'Ρ': 'R', 'Σ': 'S', 'Τ': 'T', 'Υ': 'Y', 'Φ': 'F', 'Χ': 'X', 'Ψ': 'PS', 'Ω': 'O',
    'ά': 'a', 'έ': 'e', 'ή': 'i', 'ί': 'i', 'ό': 'o', 'ύ': 'y', 'ώ': 'w', 'ϊ': 'i',
    'ϋ': 'u', 'α': 'a', 'β': 'b', 'γ': 'g', 'δ': 'd', 'ε': 'e', 'ζ': 'z', 'η': 'i',
    'θ': 'th', 'ι': 'i', 'κ': 'k', 'λ': 'l', 'μ': 'm', 'ν': 'n', 'ξ': 'x', 'ο': 'o',
    'π': 'p', 'ρ': 'r', 'ς': 's', 'σ': 's', 'τ': 't', 'υ': 'y', 'φ': 'f', 'χ': 'x',
    'ψ': 'ps', 'ω': 'o'
}

for file in os.listdir(path):
    if file.endswith('.mp3'):
        old_name = file.encode('utf-8').decode('utf-8')
        name_part, ext = old_name.rsplit('.', 1)
        
        # 1. 希腊字符转拉丁字符
        latin_name = ''.join([greek_to_latin.get(c, c) for c in name_part])
        
        # 2. 提取艺术家-标题核心片段:按下划线分割后,筛选包含" - "的有效段
        segments = [seg.strip() for seg in latin_name.split('_') if seg.strip()]
        target_segment = None
        for seg in segments:
            if ' - ' in seg:
                target_segment = seg
                break
        # 若未找到符合格式的片段,默认取第一段
        if not target_segment:
            target_segment = segments[0] if segments else name_part
        
        # 3. 清理冗余字符,仅保留字母、数字、空格和连接符"-"
        cleaned_name = ''.join([c for c in target_segment if c.isalnum() or c in [' ', '-']]).strip()
        # 规范格式,去除多余空格和首尾连接符
        cleaned_name = cleaned_name.replace('  ', ' ').rstrip('-').lstrip('-')
        
        # 生成最终文件名
        new_name = f"{cleaned_name}.{ext}"
        
        # 重命名(避免覆盖已存在文件)
        old_file_path = os.path.join(path, old_name)
        new_file_path = os.path.join(path, new_name)
        if not os.path.exists(new_file_path):
            os.rename(old_file_path, new_file_path)
        else:
            print(f"跳过:{new_name} 已存在")

print('处理完成!')

关键优化点

  • 使用字典映射替代原脚本的多次replace,代码更简洁易维护
  • 自动识别带-的艺术家-标题格式片段,适配目标文件名结构
  • 增加重复文件名判断,防止文件被意外覆盖
  • 清理冗余符号与空格,保证文件名格式统一规范

注意事项

  • 若文件名结构与示例不一致,可调整分割规则(比如按-分割、提取特定关键词前的内容)
  • 运行脚本前建议备份文件,避免数据丢失

内容的提问来源于stack exchange,提问作者user20883432

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 19:25:16