zoukankan      html  css  js  c++  java
  • 合并百度影音的离线数据 with python

        最近很多网站都用百度影音技术,没想到手机版的使用感觉也不错。不过用手机在线看比较费电,当然我优先选择离线下载了。

        简单过了一遍下载的目录,每个文件夹包含一个索引文件和4M大小的若干个视频文件。

        最初接触时候,视频文件用guid作为文件名,需要分析索引文件决定先后顺序。     

        不过最近版本bdre文件替代了索引文件,记录一些下载地址等信息。

        视频文件也统一命名格式了。

        目前似乎支持bdv和rmvb的格式,一般打开文件夹里面往往是A.rmvb_0000 A.rmvb_0001...;或者是A.bdv_0000 A.bdv_0001...

      bdv文件合并之后,后缀名改成avi即可使用。

        合并比较简单:

      对于rmvb格式:

        在windows平台 copy /b  A.rmvb_* A.rmvb  

        linux平台 cat A.rmvb_* > A.rmvb  

        对于bdv格式:

        在windows平台 copy /b  A.bdv_* A.avi

        linux平台 cat A.bdv_* > A.avi 

       有时候同时下载很多视频时候,每个文件夹过一次也比较吃力。

       所以顺便写一个python脚本。

       首先,复制视频目录到本地硬盘,例如c:\movie

       然后,运行脚本,产生一个film.bat文件

       最后,你可以看见c:\movie有若干个视频文件。

       ----------------------------------------------------------------------------------------------------

       请保存为makemovie.py后,执行。这是针对windows平台。

    # -*- coding: UTF-8 -*-
    
    import os
    import io
    import string
    import shutil
    
    
    
    
    def read_video_file(brpFilmFolder): 
         for fileitem in os.listdir(brpFilmFolder):      
              targetfile = os.path.join(brpFilmFolder,fileitem) 
              if(os.path.isfile(targetfile) == False):
                   continue;
              filebasename , fext = os.path.splitext(fileitem);        
              if(string.lower(fext) != ".rmvb_0000"):
                   continue;        
              else:
                   print(filebasename)
                   return filebasename
         return None
    
    
    # list brp files 
        # read brp file
    def enum_video_file(brpFolder,batch_line):     
         for fileitem in os.listdir(brpFolder):              
              targetfile = os.path.join(brpFolder,fileitem)       
              if(os.path.isfile(targetfile) == True):
                   continue;
              
              filebasename = read_video_file(targetfile)
              if(filebasename is None):
                   continue;
              
              batch_line.append('cd \"%s\"' % targetfile)          
              batch_line.append('copy /b  \"%s\".rmvb_* ..\\\"%s\".rmvb' % (filebasename,filebasename))
              batch_line.append('cd ..')
    
    
    
    def create_report(brpFolder):
         try:
              batch_line = list()
            # list brp files     
              enum_brp_file(brpFolder,batch_line)
              
              
              # create bat file
              objTar = open('film.bat','w+')
        
              # write list to file
              for line in batch_line:
                   objTar.write(' %s\r\n' %(line))        
              
              # close file
              objTar.close()   
              
    
         except Exception as exc:     
              print("%s" % exc);       
    
    if __name__ == '__main__':      
         searchFolder = os.getcwd()
         create_report(searchFolder)
         print("done");      
    

      

  • 相关阅读:
    ArcGIS Engine要素渲染和专题图制作(转)
    网络换行符替换为word换行符
    栅格数据处理 RasterDataset RasterLayer Raster RasterBandCollection
    ISurfaceOp 接口生成等高线
    小女孩动画
    pytest 知识点学习
    pytest+python 项目初步实践及生成allure报告
    docker安装python项目
    windows 10 专业版 安装docker desktop
    selenium+python自动化测试--解决无法启动IE浏览器及报错问题
  • 原文地址:https://www.cnblogs.com/febwave/p/3122705.html
Copyright © 2011-2022 走看看