使用者貼上主流影音網站網址,系統自動辨識平台並解析出:播放連結(Flash/嵌入碼)、縮圖網址、影片長度。核心依賴 Jsoup 解析 HTML、提取關鍵元素屬性與 Script 變數。
org.jsoup
jsoup
1.17.2
getVideoInfo(url):總入口,依域名分派至各平台解析方法getYouKuVideo、getTudouVideo、getKu6Video、get6Video、get56VideogetURLContent(Jsoup 連線)、getElementAttrById、getScriptVarByName(從 JS 變數提取值)| 平台 | 縮圖提取 | 播放連結提取 | 時長提取 |
|---|---|---|---|
| 優酷 | #s_sina@href 解析 pic= 參數 | #link2@value | #download@href 分割 | 取第 5 段 |
| 土豆 | Script 變數 thumbnail | Script 變數 iid_code 組裝 https://www.tudou.com/v/{iid}/v.swf | Script 變數 time |
| 酷6 | #plVideosList img@src 或 .s_pic | #outSideSwfCode@value | span.review > cite 文字 |
| 6間房 | .summary img@src | #video-share-code@value 再解析 embed@src | 列表頁 #watchUserVideo / #watchRelVideo 比對網址取 em |
| 56網 | HTML 片段 "img":"..." 正則提取 | 組裝 https://player.56.com{url_path}.swf | (原碼未實作) |
public class Video {
private String flash; // 播放連結
private String pic; // 縮圖網址
private String time; // 時長
// getter/setter 略
}
public static void main(String[] args) {
String url = "https://www.56.com/u64/v_NTkzMDEzMTc.html";
Video video = VideoUtil.getVideoInfo(url);
System.out.println("縮圖: " + video.getPic());
System.out.println("播放: " + video.getFlash());
System.out.println("時長: " + video.getTime());
}