優酷視頻頁面 URL 格式為 https://v.youku.com/v_show/id_X{VIDEO_ID}.html。透過解析出 VIDEO_ID,請求優酷播放列表 API https://v.youku.com/player/getPlayList/VideoIDS/{VIDEO_ID}/...,解析返回 JSON 中的 logo 欄位即可獲得縮略圖 URL。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import net.sf.json.JSONObject;
import net.sf.json.JSONArray;
public class YoukuThumbnailJson {
public static void main(String[] args) throws IOException {
String url = "https://v.youku.com/v_show/id_XMjU0MjI2NzY0.html";
// 1. 提取 VIDEO_ID
int idx = url.indexOf("id_");
String videoId = url.substring(idx + 3, url.indexOf(".html"));
// 2. 請求 API
URL apiUrl = new URL("https://v.youku.com/player/getPlayList/VideoIDS/" + videoId + "/timezone/+08/version/5/source/out?password=&ran=2513&n=3");
BufferedReader br = new BufferedReader(new InputStreamReader(apiUrl.openStream()));
String jsonStr = br.readLine();
br.close();
// 3. 解析 JSON
JSONObject json = JSONObject.fromObject(jsonStr);
JSONArray data = json.getJSONArray("data");
String logo = JSONObject.fromObject(data.get(0)).getString("logo");
System.out.println("縮略圖 URL: " + logo);
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
public class YoukuThumbnailSimple {
public static void main(String[] args) throws IOException {
String url = "https://v.youku.com/v_show/id_XMjU0MjI2NzY0.html";
int idx = url.indexOf("id_");
String videoId = url.substring(idx + 3, url.indexOf(".html"));
URL apiUrl = new URL("https://v.youku.com/player/getPlayList/VideoIDS/" + videoId + "/timezone/+08/version/5/source/out?password=&ran=2513&n=3");
BufferedReader br = new BufferedReader(new InputStreamReader(apiUrl.openStream()));
// 回傳格式固定,以 \/ 分割
String[] parts = br.readLine().split("\\\\/");
br.close();
// 第 4 個元素包含圖片 ID
String target = parts[3];
String imgId = target.substring(0, target.indexOf("\""));
String imgUrl = "https://g2.ykimg.com/" + imgId;
System.out.println("縮略圖 URL: " + imgUrl);
// 輸出範例:https://g2.ykimg.com/1100641F464D8FBF5FA3D90209C8DF96B67E2C-567E-AB53-C132-D7787FC966AB
}
}
id_ 到 .html 之間的字串。timezone/+08 為時區,version/5 為 API 版本,source/out 為來源標識。{data:[{logo:"..."}]},logo 即為縮略圖完整 URL。\/ 分割後第 4 段為圖片路徑,再去除尾部雜訊。