开始折腾VLC播放器+直播源的时候,找不到一款合适的转换工具,只能自己动手了..代码很远古,存在诸多缺陷,除了保证语法的正确性请忽略各种规范..##-------------------------------------------------------------#
# 普通格式转XSPF by 黑鸟博客
##-------------------------------------------------------------#
def xspf():
filepathname = tkinter.filedialog.askopenfilename(filetypes=[("TXT通用列表","*.txt"),("列表","*.dpl *.m3u"),("All Files","*")])
filepath = os.path.dirname(filepathname)
filenametmp = os.path.splitext(filepathname)[0]
filename = os.path.split(filenametmp)[1]
fileexttmp = os.path.splitext(filepathname)[1]
filetmpbf = '-1'
if fileexttmp == '.txt':
fileone = open(filepathname, "r" ,encoding="UTF-8")
filetmpbf = fileone.read()
elif fileexttmp == '':
print("用户取消打开文件")
return
else:
mBox.showinfo(title='异常',message='文件格式不支持!目前支持txt,xspf,m3u,dpl!')
return
#本文由 黑鸟博客 guihet.com 制作,转载请注明出处
timenow = datetime.datetime.now().strftime("%m%d%H%M")
pathxspf = filepath + '/' + filename + '-' + timenow +".xspf"
filevlc = open(pathxspf, 'w', encoding = 'UTF-8')
filevlc.write('<?xml version="1.0" encoding="UTF-8"?>\n')
filevlc.write('\n')
filevlc.write('\t
Playlist\n')filevlc.write('\t\n')
filetmp = filetmpbf
try:
pa = re.compile(r'.*?,.*?$', re.M)
fileonelist = pa.findall(filetmp)
count = 0
for item in fileonelist:
#本文由 黑鸟博客 guihet.com 制作,转载请注明出处
zby = re.match(r'^(.*?),(.*?)$', item)
title = zby.group(1)
url = zby.group(2)
url = url.replace('&', r'&')
filevlc.write('\t\t\n')
filevlc.write('\t\t\t
%s\n' % title)filevlc.write('\t\t\t%s\n' % url)
filevlc.write('\t\t\t\n')
filevlc.write('\t\t\t\t%d\n' % count)
filevlc.write('\t\t\t\n\t\t\n')
count += 1
filevlc.write('\t\n')
filevlc.write('\t\n')
for i in range(0, count):
filevlc.write('\t\t\t\n' % i)
filevlc.write('\t\n')
filevlc.write('\n')
mBox.showinfo(title='完成',message='成功写入 XSPF 文件!')
except Exception as e:
mBox.showinfo(title='异常',message='写入失败!请检查源文件格式!')
if fileexttmp == '.txt':
fileone.close()
else:
pass
print('本列表由 黑鸟博客 guihet.com 制作')
filevlc.close()
以下是逆向转##-------------------------------------------------------------#
# XSPF转普通格式的字符串 by 黑鸟博客
##-------------------------------------------------------------#
def xspftotxt(livepath = '-1'):
livestr = ''
fileone = open(livepath, "r" ,encoding="UTF-8")
filetmp = fileone.read()
try:
pa = re.compile(r'.*?', re.S)
fileonelist = pa.findall(filetmp)
count = 0
for item in fileonelist:
title = 'title'
url = 'url'
#本文由 黑鸟博客 guihet.com 制作,转载请注明出处
pb = re.compile(r'
.*?')fileonelistb = pb.findall(item)
for itemb in fileonelistb:
zby = re.match(r'
(.*?)', itemb)title = zby.group(1)
#本文由 黑鸟博客 guihet.com 制作,转载请注明出处
pc = re.compile(r'.*?')
fileonelistc = pc.findall(item)
for itemc in fileonelistc:
zby = re.match(r'(.*?)', itemc)
url = zby.group(1)
livestr = livestr + title + ',' + url + '\n'
except Exception as e:
print('提取XSPF文件到字符串,错误!!')
eturn '-1'
print('本列表由 黑鸟博客 guihet.com 制作')
return livestr