让gpt帮我写代码-jellyfin媒体库连续剧命名格式重命名python脚本

680次阅读
没有评论

共计 4029 个字符,预计需要花费 11 分钟才能阅读完成。

一直用 jellyfin,但是连续剧老乱七八糟的,查了一下 jellyfin 的命名规则,然后就像写个重命名程序自动更名所有剧集格式,但是代码是写不来的,但是咋有 gpt 啊,安排。

jellyfin 媒体库怎么给文件命名才会让连续剧自动分在一组中

让 gpt 帮我写代码 -jellyfin 媒体库连续剧命名格式重命名 python 脚本

Jellyfin 媒体库需要使用特定的文件命名规则来自动识别并分组连续剧。具体来说,文件名应该采用以下格式:

plaintextCopy codeShowName.SXXEXX.EpisodeTitle.ext

其中,ShowName 是连续剧的名称,SXXEYY 代表季数和集数,EpisodeTitle 是该集的名称,ext 是文件扩展名。例如,如果你有一部名为“The Big Bang Theory”的连续剧,第一季第一集的文件名应该是:

plaintextCopy codeThe Big Bang Theory.S01E01.Pilot.mp4

如果你的文件命名符合这个规则,Jellyfin 媒体库就能够自动将它们分组,并以连续剧的形式呈现出来。

让 gpt 帮我写代码 -jellyfin 媒体库连续剧命名格式重命名 python 脚本

请帮我以 jellyfin 媒体库命名格式利用 python 写一个更名代码程序,我的默认文件名为“剧集名”+“第几集”+“文件格式”的样式,例如:“在下李佑第 16 集.mp4”,现在请用 python 将它们自动更名为 jellfin 能识别的文件名格式。

让 gpt 帮我写代码 -jellyfin 媒体库连续剧命名格式重命名 python 脚本

好的,以下是一个 Python 程序示例,可以将你的默认文件名转换为 Jellyfin 媒体库识别的命名格式:

pythonCopy codeimport os
# 定义文件路径和新的文件名格式
folder_path = "/path/to/folder"# 文件夹路径
new_name_format = "{show_name}.S{season_num:02d}E{episode_num:02d}.{episode_title}.{ext}"# 新的文件名格式# 遍历文件夹内的所有文件并重命名 for file_name in os.listdir(folder_path):
    # 判断文件是否为视频文件 if file_name.endswith(".mp4") or file_name.endswith(".mkv"):
        # 解析默认文件名,提取剧集名、季数和集数
        file_name_parts = file_name.split("第")
        show_name = file_name_parts[0].strip()  # 剧集名
        episode_num = int(file_name_parts[1].split("集")[0])  # 集数# 构造新的文件名
        new_name = new_name_format.format(show_name=show_name, season_num=1, episode_num=episode_num, episode_title="", ext="mp4")
        # 重命名文件
        os.rename(os.path.join(folder_path, file_name), os.path.join(folder_path, new_name))

请将代码中的 folder_path 变量替换为你要重命名文件所在的文件夹路径,然后运行程序即可。该程序会遍历文件夹内的所有视频文件,并将它们重命名为 Jellyfin 媒体库能够识别的命名格式,其中季数默认为 1,集数从文件名中解析得到,剧集名称和集数之间没有空格,文件扩展名默认为mp4。如果你的文件名格式有所不同,可以根据需要修改代码中的变量和格式字符串。

让 gpt 帮我写代码 -jellyfin 媒体库连续剧命名格式重命名 python 脚本

我不想填写“folder_path”变量,能否直接为我设置该变量为 python 所处的文件夹路径

让 gpt 帮我写代码 -jellyfin 媒体库连续剧命名格式重命名 python 脚本

当你运行 Python 脚本时,可以使用 os.path.dirname(__file__) 取得该 Python 文件所在的文件夹路径,因此你可以将 folder_path 变量初始化为该路径。以下是修改后的 Python 代码:

pythonCopy codeimport os
# 定义文件路径和新的文件名格式
folder_path = os.path.dirname(__file__)  # 使用该 Python 文件所在的文件夹路径作为文件路径
new_name_format = "{show_name}.S{season_num:02d}E{episode_num:02d}.{episode_title}.{ext}"# 新的文件名格式# 遍历文件夹内的所有文件并重命名 for file_name in os.listdir(folder_path):
    # 判断文件是否为视频文件 if file_name.endswith(".mp4") or file_name.endswith(".mkv"):
        # 解析默认文件名,提取剧集名、季数和集数
        file_name_parts = file_name.split("第")
        show_name = file_name_parts[0].strip()  # 剧集名
        episode_num = int(file_name_parts[1].split("集")[0])  # 集数# 构造新的文件名
        new_name = new_name_format.format(show_name=show_name, season_num=1, episode_num=episode_num, episode_title="", ext="mp4")
        # 重命名文件
        os.rename(os.path.join(folder_path, file_name), os.path.join(folder_path, new_name))

这段代码会将 folder_path 设置为该 Python 文件所在的文件夹路径,以便遍历该文件夹内的所有视频文件并重命名它们。

让 gpt 帮我写代码 -jellyfin 媒体库连续剧命名格式重命名 python 脚本

现在增加一些过滤条件,第一,如果不存在:“在下李佑第 16 集.mp4”这种格式的文件直接跳过,结束程序。第二,增加切片关键字“篇”

让 gpt 帮我写代码 -jellyfin 媒体库连续剧命名格式重命名 python 脚本

好的,以下是修改后的 Python 代码,它会增加两个过滤条件:如果不存在类似“在下李佑第 16 集.mp4”这种格式的文件,程序直接跳过并结束;增加切片关键字“篇”来区分其他类型的视频文件,例如电影等,只处理连续剧。请注意,为了实现新的过滤条件,我们需要对文件名进行更复杂的解析和过滤,代码会相应地变得更加复杂。以下是修改后的 Python 代码:

pythonCopy codeimport os
# 定义文件路径和新的文件名格式
folder_path = os.path.dirname(__file__)  # 使用该 Python 文件所在的文件夹路径作为文件路径
new_name_format = "{show_name}.S{season_num:02d}E{episode_num:02d}.{episode_title}.{ext}"# 新的文件名格式# 遍历文件夹内的所有文件并重命名
files_to_rename = []
for file_name in os.listdir(folder_path):
    # 判断文件是否为视频文件,并且是否符合命名规则 if (file_name.endswith(".mp4") or file_name.endswith(".mkv")) and"第"in file_name and ("篇"in file_name or"集"in file_name):
        # 解析默认文件名,提取剧集名、季数和集数
        file_name_parts = file_name.split("第")
        show_name = file_name_parts[0].strip()  # 剧集名 if"篇"in file_name_parts[1]:
            # 如果是“篇”,提取季数和集数
            season_num = 1
            episode_num = int(file_name_parts[1].split("篇")[0])
            episode_title = file_name_parts[1].split("篇")[1].split(".")[0].strip()
        else:
            # 如果是“集”,提取季数和集数
            season_num = 1
            episode_num = int(file_name_parts[1].split("集")[0])
            episode_title = file_name_parts[1].split("集")[1].split(".")[0].strip()
        # 构造新的文件名
        new_name = new_name_format.format(show_name=show_name, season_num=season_num, episode_num=episode_num, episode_title=episode_title, ext="mp4")
        # 添加到待重命名文件列表中
        files_to_rename.append((file_name, new_name))
# 判断是否有符合命名规则的视频文件 iflen(files_to_rename) == 0:
    print("No files to rename.")
else:
    # 遍历待重命名文件列表并重命名 for file_name, new_name in files_to_rename:
        print(f"Renaming {file_name} to {new_name}...")
        os.rename(os.path.join(folder_path, file_name), os.path.join(folder_path, new_name))
    print("All files renamed successfully.")

这段代码会遍历指定文件夹内的所有视频文件,并按照指定的命名格式重命名它们。如果不存在符合命名规则的视频文件,程序会直接跳过并结束。如果存在符合命名规则的视频文件,程序会将它们重命名为 Jellyfin 媒体库能够识别的文件名格式,并输出重命名的过程和结果。请注意,为了实现新的过滤条件,我们需要对文件名进行更复杂的解析和过滤,代码会相应地变得更加复杂。

正文完
 
whatangel
版权声明:本站原创文章,由 whatangel 2023-06-03发表,共计4029字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码