1. 程式人生 > >解析網頁m3u8文件地址

解析網頁m3u8文件地址

百度 tput 網頁 迅雷 m3u com user url tin

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern; class text{ static String 二級m3u8地址; static String 解析的url文件地址; public static String getIndexFile(String urlpath){ try{ URL url = new URL(urlpath); BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(),"UTF-8")); String content
= "" ; String line; while ((line = in.readLine()) != null) { content += line + "\n"; } in.close(); return content; }catch (Exception e){ e.printStackTrace(); } return null; } public static List analysisIndex(String content){ String prePath
= 二級m3u8地址.substring(0,二級m3u8地址.lastIndexOf("/")+1); Pattern pattern = Pattern.compile(".*ts"); Matcher ma = pattern.matcher(content); List<String> list = new ArrayList<String>(); FileOutputStream fs; try { fs = new FileOutputStream(new File(解析的url文件地址)); PrintStream p = new PrintStream(fs); while(ma.find()){ String latePath = ma.group(); list.add(latePath); p.println(prePath+latePath); System.out.println(prePath+latePath); } p.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } return list; } public static void openXunlei(){ final Runtime runtime = Runtime.getRuntime(); Process process = null; final String cmd = "rundll32 url.dll FileProtocolHandler "+解析的url文件地址;//要打開的文件路徑。 try { process = runtime.exec(cmd); } catch (final Exception e) { System.out.println("Error exec!"); } } } class Main{ public static void main(String[] args){ String urlPath = "https://kbzy.zxziyuan-yun.com/ppvod/3DAFCB3DCFC52A80A5BBD7C57FC28907.m3u8"; text.二級m3u8地址=urlPath; text.解析的url文件地址="C:\\Users\\xianyu\\Desktop\\temp.downlist"; //改成下載器相應的格式就能直接打開下載頁面 String indexStr = text.getIndexFile(urlPath); text.analysisIndex(indexStr); text.openXunlei(); } }

getIndexFile類用來下載網頁視頻m3u8文件
analysisIndex類用來解析m3u8文件,改寫成url的形式

openXunlei類是根據解析好的url地址打開迅雷下載

前兩個類沒什麽好說的,第三個類實現原理是把analysisIndex類生成的url存成文本,直接命名為.downlist文件。
.downlist是迅雷存下載地址的文件,存好後用runtime調cmd,直接打開這個文件,就能進下載頁面了。
所以,沒有安裝迅雷,第三不就不會執行,不過程序還是能生成一個解析好的url文件的。按需要改相應的參數。
主類中
urlPath是二級m3u8文件,註意,一級m3u8文件是不行的,因為一級裏面是一些適配碼率的代碼,沒有真正的視頻地址文件。

text.解析的url文件地址是m3u8文件解析好的url地址文件,按那個地址下就行了
另外,上面代碼也有一些問題,下載下來的視頻全部都是.ts切片文件,下載後需要把他們合成一個整視頻
我一般用cmd合成
copy /b 要合成的.ts文件路徑\*.ts 生成文件路徑\new.mp4
*是通配符,具體參見百度
還有一個問題,就是代碼會在生成url的時候還會在控制臺輸出,而一旦輸出過多,前面一部分就會丟失,所以不要用控制臺生成的地址去下載
靠譜的還是去生成文件裏面去找,因為那樣不會溢出。
現在遇到的問題是有的視頻很長切片太多,而我的迅雷一次最多添加1000個鏈接,我的想法是每生成1000個url後就重新生成一個文件,然後分開下載。
還有一個待解決的問題,就是有些網站會對他的地址進行AES加密,
表示暫時看見了沒辦法。
實現好了隨緣跟新吧。
 
 

解析網頁m3u8文件地址