常春岛资源网 Design By www.syssdc.com
四种格式的解析:
filelist
slicelist
download.cfg
third_party_download.cfg
还是2个文件。替换之前版本即可。
初步测试正常,但时间轴不对。
代码如下:
# -*- coding: UTF-8 -*- import os import io import codecs import string import shutil import moviefmt import traceback def coroutine(func): def start(*args,**kwargs): g = func(*args,**kwargs) g.next() return g return start @coroutine def enum_movie_file(target): selectedFolder = (yield) for fileitem in os.listdir(selectedFolder): targetFO = os.path.join(selectedFolder,fileitem) if(os.path.isfile(targetFO) == True): continue; target.send(targetFO) @coroutine def read_movie_file(funcDisp,target): while(True): filmFolder = (yield) for fileitem in os.listdir(filmFolder): targetfile = os.path.join(filmFolder,fileitem) if(os.path.isfile(targetfile) == False): continue; filebasename , fext = os.path.splitext(fileitem); if(filebasename[0] == "."): continue if(funcDisp.has_key(string.lower(fext))): pfn = funcDisp[string.lower(fext)]; (targetFmt,targetObjects,filmFolderEx,filebasenameEx) = pfn(targetfile) if(targetFmt is None): continue; outputs = filmFolder,filebasename, (targetFmt,targetObjects,filmFolderEx,filebasenameEx); # outputs = filmFolder,filebasename, pfn(targetfile); target.send(outputs) break def getWindowsText(orgText): try: return orgText.encode('gbk') except Exception as exc: print("%s" % exc); return orgText @coroutine def create_report(outputfile): objTar = codecs.open(outputfile,"w+") while(1): filmFolder,filebasename,(extname,piece_list,filmFolderEx,filebasenameEx) = (yield) if(extname == None) : break; objTar.write('cd \"%s\"\r\n' % (filmFolderEx if filmFolderEx else filmFolder)) objTar.write('attrib -h *.*\r\n ') if(len(piece_list) >1): objTar.write('copy /b ') else: objTar.write('copy ') if(len(piece_list) == 1): objTar.write('\"%s \"' %(getWindowsText(piece_list[0]))) else: bFirst = True for line in piece_list: if(bFirst == False): objTar.write('+\"%s\"' %(getWindowsText(line))) else: objTar.write('\"%s\"' %(getWindowsText(line))) bFirst = False relpath = os.path.dirname(filmFolder) currentPath = os.path.join(getWindowsText(relpath),getWindowsText(filebasenameEx if filebasenameEx else filebasename)) objTar.write(' %s.%s\r\n' % (currentPath,extname)) objTar.write('cd %s\r\n' %(relpath)) objTar.close() if __name__ == '__main__': funcDisp = dict() funcDisp['.bdv_0000']= moviefmt.read_bdv_file; funcDisp['.rmvb_0000']= moviefmt.read_rmvb_file; funcDisp['.mkv_0000']= moviefmt.read_mkv_file; funcDisp['.bdv']= moviefmt.read_bdv_index; funcDisp['.mp4_0000']= moviefmt.read_mp4_file; funcDisp['']= moviefmt.read_mkv_2_file; funcDisp['.filelist'] = moviefmt.read_filelist_index; funcDisp['.slicelist'] = moviefmt.read_slicelist_index; funcDisp['.cfg'] = moviefmt.read_cfg_index; try: rmf = enum_movie_file(read_movie_file(funcDisp,create_report('film.bat'))) rmf.send(os.getcwd()) rmf.close() except StopIteration: pass except Exception as exc: print("%s" % exc); info = traceback.format_exc() print(info) print("done"); # -*- coding: UTF-8 -*- import os import io import sys import string import shutil import codecs import glob import re def read_bdv_index_V1(objFile): piece_list= list() for line in objFile: if(line[0:4] != 'file'): continue; strings = string.split(line,'/') tarfile = strings[len(strings)-1] tempText = string.strip(tarfile) piece_list.append(tempText) return "avi",piece_list,None,None def read_bdv_index_V2(objFile): piece_list= list() for line in objFile: nPos = line.count('bdv') if( nPos <=0): continue; tarfile = line[0:len(line)-2] piece_list.append(tarfile) return "mpeg",piece_list,None,None def read_bdv_index_V3(objFile): piece_list= list() oneFile= os.path.basename(objFile) piece_list.append(oneFile) return "avi",piece_list,None,None def read_bdv_index_V4(objFile): piece_list= list() #skip #EXT-X-MEDIA-SEQUENCE objFile.readline(); for line in objFile: if(line.startswith('#')==True): continue; piece_list.append(line.replace('\r\n','')) return "avi",piece_list,None,None def count_file_item(objFile,extText): cItem = 0; folderName = os.path.dirname(objFile) for fileitem in os.listdir(folderName): filebasename , fext = os.path.splitext(fileitem); if(fext == extText): cItem = cItem +1 return cItem def read_bdv_index(filename): piece_list= list() ext_type = None filmFolderEx = None filebasenameEx = None # total file count cItem = count_file_item(filename,".bdv") if(cItem == 1): ext_type,piece_list,filmFolderEx,filebasenameEx = read_bdv_index_V3(filename) else: objFile = codecs.open(filename,'r','utf-8') topline = objFile.readline(); bdv_ver = topline.replace("\r\n","") if(bdv_ver == '#EXTM3U'): v3Text = objFile.readline(); if(v3Text.startswith('#EXT-X-TARGETDURATION') == False): ext_type,piece_list = read_bdv_index_V2(objFile) else: ext_type,piece_list = read_bdv_index_V4(objFile) else: ext_type,piece_list = read_bdv_index_V1(objFile) objFile.close() return (ext_type ,piece_list,filmFolderEx,filebasenameEx) def read_bdv_file(filename): piece_list= list() piece_list.append('*.bdv_*') return ('avi',piece_list,None,None) def read_rmvb_file(filename): piece_list= list() piece_list.append('*.rmvb_*') return ('rmvb',piece_list,None,None) def read_mkv_file(filename): piece_list= list() piece_list.append('*.mkv_*') return ('mkv',piece_list,None,None) def read_mp4_file(filename): piece_list= list() piece_list.append('*.mp4_*') return ('mp4',piece_list,None,None) def read_mkv_2_file(filename): piece_list= list() piece_list.append('video_*') return ('mkv',piece_list,None,None) def read_filelist_index(filename): filmFolderEx = None filebasenameEx = None objFile = codecs.open(filename,'r','utf-8') topline = objFile.readline(); bdv_ver = topline.replace("\r\n","") if(bdv_ver == '#EXTM3U'): v3Text = objFile.readline(); if(v3Text.startswith('#EXT-X-TARGETDURATION') == False): ext_type,piece_list,filmFolderEx,filebasenameEx = read_bdv_index_V2(objFile) else: ext_type,piece_list,filmFolderEx,filebasenameEx = read_bdv_index_V4(objFile) else: ext_type,piece_list,filmFolderEx,filebasenameEx = read_bdv_index_V1(objFile) objFile.close() return ("mp4" ,piece_list,filmFolderEx,filebasenameEx) def read_slicelist_index(filename): piece_list= list() objFile = codecs.open(filename,'r','utf-8') topline = objFile.readline(); bdv_ver = topline.replace("\r\n","") if(bdv_ver == '#BD-SECTION'): while(True): currentLine = objFile.readline(); if(currentLine is None or len(currentLine) ==0): break piece_list.append(currentLine.replace("\r\n","")) objFile.close() return ('mp4',piece_list,None,None) def read_cfg_index(filename): piece_list= list() simpleFileName = os.path.basename(filename) if(simpleFileName == 'download.cfg'): simpleFolderName = os.path.dirname(filename) chkLst =glob.glob(os.path.join(simpleFolderName, '*.filelist')); if(chkLst is not None and len(chkLst) >0): return (None,None,None,None) chkLst =glob.glob(os.path.join(simpleFolderName, '*.bdv')); piece_list.append(chkLst[0]); return ('avi',piece_list) if(simpleFileName != 'third_party_download.cfg'): raise Exception('unknown format file : %s' %(filename)) reObj = re.compile('("\r\n","") ) for orgLine in codecs.open(filename,'r','utf-8')] for orgLine in codecs.open(filename,'r','utf-8'): orgLine = orgLine.replace("\r\n","") results = reObj.findall(orgLine) if(len(results) > 0): lineDict[results[0][0]] =results[0][1] resID = lineDict["resource"] vid = lineDict[ '%s_vid'%(resID)] targetName = lineDict["video_name"] simpleFolderName = os.path.dirname(filename) upLevelFolderName = os.path.dirname(simpleFolderName) targetFolder = os.path.join(upLevelFolderName,vid) targetFolder = os.path.join(targetFolder,vid) chkLst =glob.glob(os.path.join(targetFolder, '*.%s*' %(resID))); targetFile = chkLst[0] #skip #EXT-X-MEDIA-SEQUENCE for line in codecs.open(targetFile,'r','utf-8'): if(line.startswith('#')==True): continue; line = os.path.basename(line.replace('\r\n','')) line = os.path.basename(line.replace('\r','')) line = os.path.basename(line.replace('\n','')) piece_list.append(line ) return ('avi',piece_list,targetFolder,targetName)
以上就是本文的全部内容,希望大家喜欢。
常春岛资源网 Design By www.syssdc.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
常春岛资源网 Design By www.syssdc.com
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2025年03月09日
2025年03月09日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]