合并百度影音的离线数据 with python 2.1 bdv格式的更新

本文深入分析了百度影音离线下载文件格式的最新演变,从原始的bdv0001到bdv.config的file,直至直接包含片段并使用guid绑定索引和文件名。新版本以#EXTM3U作为标识,输出格式为mpeg2。通过moviefmt.py脚本,复用了2.0的mergefilm.py进行主程序操作。

最近百度影音的离线下载文件,格式有新变化。

经过分析,是bdv格式又有新格式,从最初的bdv0001,到bdv.config 的file。。。。,这次更新的格式是直接包含一个片段,其中还有使用guid绑定索引和文件名。

新版本以“#EXTM3U”作为标识,并且输出格式是mpeg2(通过GSpot检查的)。

以下是新的moviefmt.py脚本,主程序还是复用2.0的mergefilm.py

 

 

# -*- coding: UTF-8 -*-

import os
import io
import sys
import string
import shutil
import codecs


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


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


def read_bdv_index(filename): 
    piece_list= list()   
    ext_type = None
    objFile = codecs.open(filename,'r','utf-8')    
    topline = objFile.readline();
    bdv_ver = topline.replace("\r\n","")
    if(bdv_ver == '#EXTM3U'):
        ext_type,piece_list = read_bdv_index_V2(objFile)
    else:
        ext_type,piece_list  = read_bdv_index_V1(objFile)

    objFile.close()       
    return  (ext_type ,piece_list)        


   

def read_bdv_file(filename):
    piece_list= list()
    piece_list.append('*.bdv_*')
    return  ('avi',piece_list)

def read_rmvb_file(filename):
    piece_list= list()
    piece_list.append('*.rmvb_*')
    return  ('rmvb',piece_list)

def read_mkv_file(filename):
    piece_list= list()    
    piece_list.append('*.mkv_*')
    return  ('mkv',piece_list)

def read_mp4_file(filename):
    piece_list= list()    
    piece_list.append('*.mp4_*')
    return  ('mp4',piece_list)

def read_mkv_2_file(filename):
    piece_list= list()    
    piece_list.append('video_*')
    return  ('mkv',piece_list)

 

转载于:https://www.cnblogs.com/febwave/p/3441000.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值