Fix downloading for some videos
This commit is contained in:
parent
442d0db325
commit
481b5d15e0
75
yuja-dl
75
yuja-dl
|
@ -10,20 +10,64 @@ function download_url {
|
||||||
local url="$1"; local output="$2"
|
local url="$1"; local output="$2"
|
||||||
local id="$(echo "$url" | video_id)"
|
local id="$(echo "$url" | video_id)"
|
||||||
local sub="$(echo "$url" | subdomain)"
|
local sub="$(echo "$url" | subdomain)"
|
||||||
local hls_key="$(get_metadata "$sub" "$id" | hls_file_key)"
|
|
||||||
local captions_key="$(get_metadata "$sub" "$id" | caption_file_key)"
|
local captions_key="$(get_metadata "$sub" "$id" | caption_file_key)"
|
||||||
|
local node_pid="$(get_metadata "$sub" "$id" | video_node_pid)"
|
||||||
|
local flink="$(get_node_metadata "$id" "$node_pid" | video_filelink)"
|
||||||
|
local m3u8="$(get_video_source "$id" "$flink" | video_source_m3u8_link)"
|
||||||
|
|
||||||
ffmpeg -i "$(m3u8_url "$hls_key")" "${output}.mp4"
|
|
||||||
curl -o "${output}.srt" "$(caption_url "$sub" "$captions_key")"
|
curl -o "${output}.srt" "$(caption_url "$sub" "$captions_key")"
|
||||||
|
ffmpeg -i "$m3u8" "${output}.mp4"
|
||||||
}
|
}
|
||||||
|
|
||||||
function m3u8_url {
|
|
||||||
local hls_key="$1"
|
#---------------------------------------
|
||||||
local fragment="${hls_key}/720p/${hls_key}.m3u8"
|
|
||||||
echo \
|
function get_metadata {
|
||||||
"https://my.yuja.com/P/Data/VideoUrl/level${fragment}.m3u8?dist=yuja-edits&key=${fragment}"
|
local sub="$1"; local id="$2"
|
||||||
|
curl -s \
|
||||||
|
"https://${sub}.yuja.com/P/Data/GetVideoListNodeInfo?videoPID=${id}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function caption_file_key {
|
||||||
|
jq -r .video \
|
||||||
|
| jq -r .captionFileKey.value
|
||||||
|
}
|
||||||
|
|
||||||
|
function video_node_pid {
|
||||||
|
jq -r .node \
|
||||||
|
| jq -r .videoListNodePID
|
||||||
|
}
|
||||||
|
|
||||||
|
#---------------------------------------
|
||||||
|
|
||||||
|
function get_node_metadata {
|
||||||
|
local video_id="$1"
|
||||||
|
local video_node_pid="$2"
|
||||||
|
curl -s \
|
||||||
|
"https://dcccd.yuja.com/P/Data/VideoJSON" \
|
||||||
|
--data-raw "video=${video_id}&node=${video_node_pid}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function video_filelink {
|
||||||
|
jq -r .video.videoLink
|
||||||
|
}
|
||||||
|
|
||||||
|
#---------------------------------------
|
||||||
|
|
||||||
|
function get_video_source {
|
||||||
|
local video_id="$1"
|
||||||
|
local video_filelink="$2"
|
||||||
|
curl -s \
|
||||||
|
"https://dcccd.yuja.com/P/Data/VideoSource?video=${video_filelink}&videoPID=${video_id}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function video_source_m3u8_link {
|
||||||
|
jq -r .videoSources[]
|
||||||
|
}
|
||||||
|
|
||||||
|
#---------------------------------------
|
||||||
|
|
||||||
function caption_url {
|
function caption_url {
|
||||||
local subdomain="$1"
|
local subdomain="$1"
|
||||||
local caption_key="$2"
|
local caption_key="$2"
|
||||||
|
@ -31,21 +75,7 @@ function caption_url {
|
||||||
"https://${subdomain}.yuja.com/P/DataPage/CaptionFile/${caption_key}"
|
"https://${subdomain}.yuja.com/P/DataPage/CaptionFile/${caption_key}"
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_metadata {
|
#---------------------------------------
|
||||||
local sub="$1"; local id="$2"
|
|
||||||
curl -s \
|
|
||||||
"https://${sub}.yuja.com/P/Data/GetVideoListNodeInfo?videoPID=${id}"
|
|
||||||
}
|
|
||||||
|
|
||||||
function hls_file_key {
|
|
||||||
jq -r .video \
|
|
||||||
| jq -r .videoHLSFileKey.value
|
|
||||||
}
|
|
||||||
|
|
||||||
function caption_file_key {
|
|
||||||
jq -r .video \
|
|
||||||
| jq -r .captionFileKey.value
|
|
||||||
}
|
|
||||||
|
|
||||||
function video_id {
|
function video_id {
|
||||||
sed 's%.*v=%%' \
|
sed 's%.*v=%%' \
|
||||||
|
@ -57,7 +87,6 @@ function subdomain {
|
||||||
| sed 's%.*//%%'
|
| sed 's%.*//%%'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# INVOCATION
|
# INVOCATION
|
||||||
# --------------------------------------
|
# --------------------------------------
|
||||||
function usage {
|
function usage {
|
||||||
|
|
Ŝarĝante…
Reference in New Issue