m3u是一种文件格式,类似于下:

#EXTINF:,CCTV 1
mms://live.cctv.com/cctv_live1
#EXTINF:,CCTV 2
mms://live.cctv.com/live12

比如第一行是#EXTINF:,CCTV 1,那么用逗号隔开的第2个字符串就是文件名称;而第二行则是文件路径

对应的pls文件如下:

[playlist]
NumberOfEntries=116
File1=mms://live.cctv.com/cctv_live1
Title1=CCTV 1
File2=mms://live.cctv.com/live12
Title2=CCTV 2

它会指明总共有多少个个文件,文件名和文件路径(以key=val这种形式展示)

下面就是利用程序将m3u文件转为pls文件的代码:

package mainimport ("fmt""os""strings"
)type Node struct{File stringTitle string
}func readFile(filepath string,MAXSIZE int) string{file,err := os.Open(filepath)if err != nil{fmt.Println(err)return ""}var buffer = make([] byte,MAXSIZE)cur,err := file.Read(buffer)if err != nil{fmt.Println(err)return ""}var content string = string(buffer[0:cur])file.Close()return content
}func writeFile(filepath string,content string){file,err := os.Create(filepath)if err != nil{fmt.Println(err)return}_,err = file.WriteString(content)file.Close()if err != nil{fmt.Println(err)}
}func transM3u2Pls(filepath string,MAXSIZE int){var dstpath string = "./result.pls"var content string = readFile(filepath,MAXSIZE)l := make([]Node,1000)var cur Nodevar index int = 0for _,line := range strings.Split(content,"\n"){if index % 2 == 0{lines := strings.Split(line,",")cur.Title = lines[1]}else{cur.File = linel[index/2] = cur}index++}var newcontent = "[playlist]\n"newcontent += fmt.Sprintf("NumberOfEntries=%d\n",(index/2))for i:=0;i<index/2;i++{newcontent += fmt.Sprintf("File%d=%s\n",i+1,l[i].File)newcontent += fmt.Sprintf("Title%d=%s\n",i+1,l[i].Title)}writeFile(dstpath,newcontent)fmt.Println("done!")
}func main(){if len(os.Args) > 1{filepath := os.Args[1]const MAXSIZE int = 10240if strings.HasSuffix(filepath,"m3u"){transM3u2Pls(filepath,MAXSIZE)}else{fmt.Println("file format not suffort(Not .m3u).")}}else{fmt.Println("Usage:./test1 [filepath]")}
}

m3u文件转pls文件(go语言实现)相关推荐

  1. C语言不要重复包含.h头文件和.c文件

    1.不要重复包含头文件 --以上出自<C语言程序设计:现代方法(第2版)> f3.h //#ifndef AE_OK #define AE_OK 0 typedef int ngx_int ...

  2. c语言文件可用代码存放,C语言 文件(示例代码)

    小白一个,看到有错误,希望指出,万分感谢 /**************************************************************** C语言文件概述: 一般文件 ...

  3. 【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 头文件定义 | 头文件导入限制 | 兼容 C++ 语言 | 函数形参输入输出属性注释)

    文章目录 一.头文件定义 1.头文件导入限制 2.兼容 C++ 语言 3.函数形参输入输出属性 4.代码示例 一.头文件定义 1.头文件导入限制 头文件导入限制 : 防止头文件多次导入 , 将头文件的 ...

  4. 【C 语言】文件操作 ( 学生管理系统 | 命令行接收数据填充结构体 | 结构体写出到文件中 | 查询文件中的结构体数据 )

    文章目录 一.学生管理系统 二.代码示例 一.学生管理系统 前两篇博客 [C 语言]文件操作 ( 将结构体写出到文件中并读取结构体数据 | 将结构体数组写出到文件中并读取结构体数组数据 ) [C 语言 ...

  5. r指引到文件夹_R语言中进行文件夹及文件夹内文件操作范例

    rm(list=ls()) path = 'J:/lab/EX29 –在R语言中进行文件(夹)操作' setwd(path) cat("file A\n", file=" ...

  6. c语言 自动包含头文件,C语言不要重复包含.h头文件和.c文件

    http://blog.csdn.net/unix21/article/details/8450235 2012 1.不要重复包含头文件 --以上出自<C语言程序设计:现代方法(第2版)> ...

  7. c语言是以文件为单位编译,c语言从头开始(三:编译器工作原理) (我们还可以自己编写头文件后缀是xx.h并把它当前代码文件所在目录我们要用就可以直接通过下面代码使用)...

    c语言从头开始(三:编译器工作原理) [[枫歌枫歌]c语言从头开始(三:编译器工作原理)]https://toutiao.com/group/6568056688174170628/?iid=1590 ...

  8. C语言的头文件和库文件(函数库)

    C语言的头文件和库文件(函数库) 分类: Unix环境高级编程 2011-04-17 14:37 2576人阅读 评论(1) 收藏 举报 语言cgcclinuxunix 在C语言中,头文件提供对常量的 ...

  9. C语言头文件、库文件的查找路径

    一.讨论环境 *操作系统:Redhat5/Fedora14 *编译器:gcc 4.5.1 以下言论仅确保在以上环境中,绝对正确.别的环境,大家可以通过类比方法,得到启示. 二.C语言头文件的查找路径 ...

最新文章

  1. 说出vue中的几种指令和他的用法_说一说VUE中的/deep/用法
  2. OAF页面查找数据源
  3. (纯干货)万字长文,数据分析利器 pandas 全教程
  4. 中国液化石油气(LPG)市场销售现状与竞争发展策略分析报告2022-2028年版
  5. Spark与Flink:对比与分析
  6. 《老子》中国古代先秦诸子百家经典欣赏
  7. 东半球最全的 postman 使用教程
  8. c语言作业的分析,C语言作业分析.doc
  9. python中相对路径_Python中的绝对路劲和相对路径
  10. 安装mysql8.0.11
  11. “OpenGL.error.NullFunctionError: Attempt to call an undefined function”解决方案
  12. SpringBoot使用银联支付
  13. SAP中物料成本视图原始组的应用原理分析
  14. 如何生成EAN13流水号条形码
  15. 类名+单书名号——泛型,什么是泛型?如何使用泛型
  16. 人民币小写金额转大写
  17. 腾讯 Code Review 规范出炉!你还敢乱写代码??
  18. android 2k屏分辨率,2K、4K、8K分辨率屏幕有用吗?看看它们怎么说!
  19. Alpine系统介绍
  20. vscode的下载、安装

热门文章

  1. css通过text-shadow给文字加边框!
  2. Java SE 流程控制 Struct
  3. IDEA 连接svn https报错问题:svn: E230001: Server SSL certificate verification failed: certificate issu解决办法
  4. 园林计算机制图在计算机上的应用,浅谈计算机在园林设计中应用
  5. Android 6.0 启动语音信箱
  6. 康瑞的KR0800替代JST刺破式连接器,通流达0.5A,满足边缘汽车连接器国产化替代需求
  7. 【AHK】常用键位映射设置推荐(个人自用)
  8. C语言反三角函数的实现
  9. 输入圆的半径输出圆的面积和周长python_Java作业 输入圆的半径计算输出圆的周长和面积...
  10. 5年前的今天,一个小小的部署错误,让美股最大交易商坠入深渊