dpl播放列表生成——python编写
2025-01-31 本文已影响0人
zip11
potplay视频播放器的 播放列表文件 dpl文件
输入文件夹路径,搜索文件夹下的 mkv mp4视频文件,生成dpl播放列表文件
import os
class ImageToVideoConverter:
def __init__(self, folder_path):
"""
初始化类实例,接收文件夹路径作为参数。
:param folder_path: 包含图片文件的文件夹路径
"""
self.folder_path = folder_path
self.image_files = []
def get_image_files(self):
"""
获取指定文件夹下的所有 .mkv 和 .mp4 文件,并存储在 image_files 列表中。
"""
for file in os.listdir(self.folder_path):
if file.lower().endswith(('.mkv', '.mp4')):
self.image_files.append(file)
def generate_video_paths(self):
"""
将文件夹路径与文件名拼接,生成新的视频文件全路径。
:return: 新的视频文件全路径列表
"""
video_paths = []
for file in self.image_files:
video_path = os.path.join(self.folder_path, file) # 拼接路径和文件名
video_paths.append(video_path)
return video_paths
def create_potplayer_dpl_playlist(self, video_paths):
"""
根据给定的视频文件路径列表,创建PotPlayer的DPL播放列表文件。
:param video_paths: 视频文件全路径列表
"""
# 生成输出文件名,使用文件夹路径中的最后一个文件夹名,并替换路径分隔符为下划线
output_file = os.path.join(self.folder_path, f"{os.path.basename(self.folder_path).replace(os.sep, '_')}.dpl")
# 打开输出文件并写入DPL格式的内容
with open(output_file, 'w', encoding='utf-8') as f:
f.write('DAUMPLAYLIST\n') # 写入DPL文件头
f.write(f'playname=\n') # playname字段留空
f.write('topindex=0\n') # 当前播放项索引号为0
f.write('saveplaypos=0\n') # 不保存播放位置
# 循环写入每个视频文件的路径和标题
for i, path in enumerate(video_paths, start=1):
f.write(f'{i}*file*{path}\n') # 写入文件路径
f.write(f'{i}*title*\n') # 写入文件标题(留空)
# 打印保存的文件路径
print(f"PotPlayer播放列表已保存至:{output_file}")
def main():
"""
主函数,执行整个流程。
"""
# 提示用户输入文件夹路径
folder_path = input("请输入文件夹路径:").strip()
# 检查输入路径是否有效
if not os.path.isdir(folder_path):
print("错误:输入的路径不是一个有效的文件夹!")
return
# 创建ImageToVideoConverter实例
converter = ImageToVideoConverter(folder_path)
# 获取文件夹中的 .mkv 和 .mp4 文件
converter.get_image_files()
# 检查是否找到任何 .mkv 或 .mp4 文件
if not converter.image_files:
print("未找到任何 .mkv 或 .mp4 文件。")
return
# 生成视频文件路径列表
video_paths = converter.generate_video_paths()
# 创建PotPlayer的DPL播放列表文件
converter.create_potplayer_dpl_playlist(video_paths)
if __name__ == "__main__":
main()