后缀名m3u8文件转为一个ts文件---利用word vba

下载下来是一个m3u8文件。打开一看全是多个ts文件。头大。


于是用word vba简单处理一下成一个单独的ts文件。


【事前工作】:

源文件夹:在D盘先建立一个文件夹,命名为1。主要用于装m3u8文件,这样可以把所有这样的文件先放在这里面。

操作文件夹:在D盘建立一个文件夹,命名为2。主要用于下载各小ts文件。


【流程】: 

从源文件夹1中读取一个m3u8文件内的文本到word,利用word的vba功能,逐一遍历每个m3u8文件,对每个文件进行下载小TS文件并合并到一个大的ts文件中,将其复制到源文件夹1中。


【开始】:

打开任意一空白word,点开发工具,打开Microsoft Visual Basic for Application,展开左侧Project中的Microsoft Word对象,双击ThisDocument,右侧就出现空白的窗体供输入代码。


在这个空白窗体中,复制粘贴以下代码:

Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub a()
    Dim myFile As String, strPath As String, strText As String, i As Integer, j As Long
    Dim a As Range
    Dim fso As FileSystemObject, fs As TextStream
    Set a = Me.Range
    
    '查找m3u8
    myFile = Dir("D:\1\" & "*.m3u8")
    
    Do While myFile <> ""
        '打开并复制到word
        strPath = "D:\1\" & myFile
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set fs = fso.OpenTextFile(strPath)
        a.Text = fs.ReadAll
        fs.Close
        Set fso = Nothing
        
        'word中进行处理成数组
        a.Find.Execute FindText:="^13", MatchWildcards:=True, replacewith:="", Replace:=wdReplaceAll
        Dim ts() As String
        ts() = Split(a.Text, ",")
        
        '逐一下载ts
        For i = 1 To UBound(ts)
            strText = Left(ts(i), Len(ts(i)) - 1)
            '返回零0下载完成
            j = URLDownloadToFile(0, strText, "D:\2\" & Format(i - 1, "0000") & ".ts", 0, 0)
            
            'Sleep 5000 '如果网站有防作弊,请调高此数,比如5000,10000
            Do While j <> 0
                 Sleep 3000 '等待下载完成
            Loop
            'Sleep 2000
            j = 1
        Next i
        
        myFile = Left(strText, Len(strText) - 5)
        myFile = "D:\1\" & strText & ".ts"
        '合并所有ts文件,成为一个ts文件
        j = Shell("cmd /c copy /b D:\2\*.ts  """ & strText & """", vbHide)
        Sleep 6000 '电脑慢的可调高此数
        Shell "taskkill /PID " & j & " /T", vbHide
        '删除所有小ts文件
        Kill "D:\2\*.ts"
        '继续下一个文件
        myFile = Dir
    Loop
    
End Sub

【运行】:

点击上方的绿色三角形开始运行。不用管它,到时它自动处理完所有文件。



如果有提示fso问题,请引用fso




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值