最近打算入手atv,想用infuse配合本地电脑上的plex刮削,发现plex不识别蓝光盘,辗转找了很多没有很好的解决方案。
最好的解决方案是把蓝光文件里的mt2s提出来单独放一个文件夹做硬连接让plex去访问。
昨晚大概写了一个小脚本分享给需要的人。
前提:
1.windows系统
2.你的蓝光文件跟我的一样是散碎文件,不是iso格式的光盘镜像(必须包含BDMV文件夹)。
程序分享到阿里云盘了:https://www.alipan.com/s/8RdCqAteiJT
文件已打包成exe,python源码也在里面。
欢迎各路大佬指导共同探讨研究
附源码:
import os, re,msvcrt
import time
def getFileName(dir):
if os.path.exists(dir + '\\STREAM'):
stream = dir + '\\STREAM'
file = {'FileName': '', 'FileSize': 0}
for root, dirs, files in os.walk(stream):
for i in files:
fileSize = os.path.getsize(root + '\\' + i)
if fileSize > file['FileSize']:
file['FileName'] = stream + '\\' + i
file['FileSize'] = fileSize
return file
def getDirName(dir):
fileList = []
for root, dirs, files in os.walk(dir):
if 'BDMV' in dirs:
# print(root,dirs,files)
print(root + '\\' + 'BDMV')
fileList.append(root + '\\' + 'BDMV')
print(fileList)
return fileList
def createLink(path,linkPath):
for i in getDirName(path):
file = getFileName(i)['FileName']
print(file)
fileDir = file.split('\\')
fileName = fileDir[-4]
extension = file.split('.')[-1]
print(extension)
hLinkName = input('以下文件名是否正确\n{}\n如正确请按回车创建硬链接,不正确请输入正确文件名后(需写后缀)按下回车:'.format(fileName+'.'+extension))
if hLinkName =='':
linkFileNmae =fileName+'.'+extension
else:
linkFileNmae =hLinkName
print('确认从\n{}\n创建硬链接到\n{}\n如确认,请按回车执行,如否,请按任意键取消:'.format(file,linkPath+'\\'+linkFileNmae))
pause = msvcrt.getch()
if pause ==b'\r':
try:
os.link(file,linkPath+'\\'+linkFileNmae)
print('硬链接创建完成')
except Exception as e:
print('创建硬链接出错:',e)
time.sleep(0.5)
continue
else:
print('用户取消')
time.sleep(0.5)
continue
print('--------------------')
print('所有硬链接创建完毕')
if __name__=="__main__":
while True:
path = input('请输入文件路径,如d:\\movie,注意文件名和符号:')
path=re.sub('\s+','',path)
linkPath = input('请输入要创建硬链接的路径,硬链接文件夹必须存在(已创建)。如d:\\movieLink,注意文件名和符号:')
linkPath=re.sub('\s+','',linkPath)
pause = msvcrt.getch()
if pause ==b'\r':
print('原文件目录:',path,'\n硬链接目录:',linkPath,'\n按回车开始执行,按任意键退出')
if msvcrt.getch()!=b'\r':
print('用户返回')
continue
else:
createLink(path,linkPath)
continue
最好的解决方案是把蓝光文件里的mt2s提出来单独放一个文件夹做硬连接让plex去访问。
昨晚大概写了一个小脚本分享给需要的人。
前提:
1.windows系统
2.你的蓝光文件跟我的一样是散碎文件,不是iso格式的光盘镜像(必须包含BDMV文件夹)。
程序分享到阿里云盘了:https://www.alipan.com/s/8RdCqAteiJT
文件已打包成exe,python源码也在里面。
欢迎各路大佬指导共同探讨研究
附源码:
import os, re,msvcrt
import time
def getFileName(dir):
if os.path.exists(dir + '\\STREAM'):
stream = dir + '\\STREAM'
file = {'FileName': '', 'FileSize': 0}
for root, dirs, files in os.walk(stream):
for i in files:
fileSize = os.path.getsize(root + '\\' + i)
if fileSize > file['FileSize']:
file['FileName'] = stream + '\\' + i
file['FileSize'] = fileSize
return file
def getDirName(dir):
fileList = []
for root, dirs, files in os.walk(dir):
if 'BDMV' in dirs:
# print(root,dirs,files)
print(root + '\\' + 'BDMV')
fileList.append(root + '\\' + 'BDMV')
print(fileList)
return fileList
def createLink(path,linkPath):
for i in getDirName(path):
file = getFileName(i)['FileName']
print(file)
fileDir = file.split('\\')
fileName = fileDir[-4]
extension = file.split('.')[-1]
print(extension)
hLinkName = input('以下文件名是否正确\n{}\n如正确请按回车创建硬链接,不正确请输入正确文件名后(需写后缀)按下回车:'.format(fileName+'.'+extension))
if hLinkName =='':
linkFileNmae =fileName+'.'+extension
else:
linkFileNmae =hLinkName
print('确认从\n{}\n创建硬链接到\n{}\n如确认,请按回车执行,如否,请按任意键取消:'.format(file,linkPath+'\\'+linkFileNmae))
pause = msvcrt.getch()
if pause ==b'\r':
try:
os.link(file,linkPath+'\\'+linkFileNmae)
print('硬链接创建完成')
except Exception as e:
print('创建硬链接出错:',e)
time.sleep(0.5)
continue
else:
print('用户取消')
time.sleep(0.5)
continue
print('--------------------')
print('所有硬链接创建完毕')
if __name__=="__main__":
while True:
path = input('请输入文件路径,如d:\\movie,注意文件名和符号:')
path=re.sub('\s+','',path)
linkPath = input('请输入要创建硬链接的路径,硬链接文件夹必须存在(已创建)。如d:\\movieLink,注意文件名和符号:')
linkPath=re.sub('\s+','',linkPath)
pause = msvcrt.getch()
if pause ==b'\r':
print('原文件目录:',path,'\n硬链接目录:',linkPath,'\n按回车开始执行,按任意键退出')
if msvcrt.getch()!=b'\r':
print('用户返回')
continue
else:
createLink(path,linkPath)
continue