zodream梦想开源/个人编程日记

zodream梦想开源/个人编程日记

简单的个人编程日记

马上订阅 zodream梦想开源/个人编程日记 RSS 更新: https://zodream.cn/blog/rss

dpl 文件

2020年8月2日 05:46
其他技术

解释:.dpl 主要为Potplayer直播源列表文件

文件格式

文件头

DAUMPLAYLIST
playname=
topindex=0
saveplaypos=0

playname 为当前播放的地址

topindex 为当前播放的序号,即在列表中的位置

列表项

1*file*地址
1*title*名称

序号从 1 开始

地址行为 序号 + *file* + 地址

标题行为 序号 + *title* + 地址

txt 文件转 dpl

txt 文件每一行格式为

标题,地址
  1. 获取文件编码
  2. 移动到正文开始的位置
  3. 写入文件头
  4. 循环取每一行,转换并写入
Converter(saveFile, sourcefile);

具体转换代码

        const string HEADER_TAG = "DAUMPLAYLIST";

        const string FILE_TAG = "*file*";
        const string TITLE_TAG = "*title*";

        const string NEW_LINE = "\n";

        public static readonly string[] Headers = new string[3]{
            "playname=", // 当前播放的网址
            "topindex=0", // 当前播放的序号
            "saveplaypos=0"
        };

        /// <summary>
        /// 转换文件
        /// </summary>
        /// <param name="dist"></param>
        /// <param name="source"></param>
        public static void Converter(string dist, string source)
        {
            using (var sourceStream = new FileStream(source, FileMode.Open))
            {
                using (var distStream = new FileStream(dist, FileMode.Create))
                {
                    Converter(distStream, sourceStream);
                }
            }
        }

        /// <summary>
        /// 转换文件
        /// </summary>
        /// <param name="dist"></param>
        /// <param name="source"></param>
        public static void Converter(FileStream dist, FileStream source)
        {
            Reset(source);
            var encoder = new TxtEncoder();
            var encoding = encoder.GetEncoding(source);
            source.Seek(encoder.Position, SeekOrigin.Begin);
            var line = ReadLine(source, encoding);
            if...

剩余内容已隐藏

查看完整文章以阅读更多