worker を追加(yt-dlp によるダウンロード、段階別進捗、ffprobe 検査、実行中の取り消し)
This commit is contained in:
+17
@@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
case "${FAKE_FFPROBE_MODE:-valid}" in
|
||||
invalid|bad-container)
|
||||
echo '{"format":{"format_name":"matroska"},"streams":[{"codec_type":"video","codec_name":"h264"},{"codec_type":"audio","codec_name":"aac"}]}' ;;
|
||||
bad-video)
|
||||
echo '{"format":{"format_name":"mp4"},"streams":[{"codec_type":"video","codec_name":"vp9"},{"codec_type":"audio","codec_name":"aac"}]}' ;;
|
||||
bad-audio)
|
||||
echo '{"format":{"format_name":"mp4"},"streams":[{"codec_type":"video","codec_name":"h264"},{"codec_type":"audio","codec_name":"opus"}]}' ;;
|
||||
non-json)
|
||||
echo 'not JSON' ;;
|
||||
failure)
|
||||
echo 'probe failed' >&2
|
||||
exit 1 ;;
|
||||
*)
|
||||
echo '{"format":{"format_name":"mov,mp4,m4a,3gp,3g2,mj2"},"streams":[{"codec_type":"video","codec_name":"h264"},{"codec_type":"audio","codec_name":"aac"}]}' ;;
|
||||
esac
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
[ -z "${FAKE_ARGS_FILE:-}" ] || printf '%s\n' "$@" > "$FAKE_ARGS_FILE"
|
||||
|
||||
output_template=
|
||||
episode_url=
|
||||
while [ "$#" -gt 0 ]; do
|
||||
if [ "$1" = "-o" ]; then
|
||||
output_template=$2
|
||||
shift 2
|
||||
continue
|
||||
fi
|
||||
case "$1" in
|
||||
https://tver.jp/episodes/*) episode_url=$1 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
mode=${FAKE_YTDLP_MODE:-success}
|
||||
if [ "$mode" = "mixed" ]; then
|
||||
case "$episode_url" in
|
||||
*/ep-fail) mode=unknown ;;
|
||||
*) mode=success ;;
|
||||
esac
|
||||
fi
|
||||
case "$mode" in
|
||||
drm) echo 'ERROR: This video is DRM protected token=secret-value' >&2; exit 1 ;;
|
||||
geo) echo 'ERROR: This video is not available from your location due to geo restriction' >&2; exit 1 ;;
|
||||
network) echo 'ERROR: Unable to download JSON metadata: [Errno 61] Connection refused' >&2; exit 1 ;;
|
||||
unavailable) echo 'ERROR: MEDIA_NOT_FOUND: episode does not exist' >&2; exit 1 ;;
|
||||
extract) echo 'ERROR: Unable to extract player data' >&2; exit 1 ;;
|
||||
unknown) echo 'ERROR: surprising failure' >&2; exit 1 ;;
|
||||
hang|hang-drm)
|
||||
[ -z "${FAKE_READY_FILE:-}" ] || : > "$FAKE_READY_FILE"
|
||||
if [ "$mode" = "hang-drm" ]; then
|
||||
trap 'echo "ERROR: DRM protected" >&2; [ -z "${FAKE_TERM_FILE:-}" ] || : > "$FAKE_TERM_FILE"; exit 143' TERM INT
|
||||
else
|
||||
trap '[ -z "${FAKE_TERM_FILE:-}" ] || : > "$FAKE_TERM_FILE"; exit 143' TERM INT
|
||||
fi
|
||||
while :; do sleep 1; done
|
||||
;;
|
||||
esac
|
||||
|
||||
output=$(printf '%s' "$output_template" | sed 's/%(id)s/fake/g; s/%(ext)s/mp4/g')
|
||||
mkdir -p "$(dirname "$output")"
|
||||
printf 'fake mp4' > "$output"
|
||||
if [ "$mode" = "symlink" ]; then
|
||||
rm "$output"
|
||||
ln -s "$FAKE_OUTSIDE_FILE" "$output"
|
||||
fi
|
||||
|
||||
if [ "$mode" = "burst" ]; then
|
||||
i=1
|
||||
while [ "$i" -le 20 ]; do
|
||||
printf '{"event":"download","format_id":"hls-698-1","progress":{"status":"downloading","downloaded_bytes":%s,"total_bytes":100,"speed":10,"eta":2,"fragment_index":%s,"fragment_count":20}}\n' "$i" "$i"
|
||||
i=$((i + 1))
|
||||
done
|
||||
sleep 0.12
|
||||
else
|
||||
echo '{"event":"download","format_id":"hls-698-1","progress":{"status":"downloading","downloaded_bytes":1024,"fragment_index":0,"fragment_count":50,"filename":"/private/tmp/tver-spike/epq432nee4.fhls-698-1.mp4","tmpfilename":"/private/tmp/tver-spike/epq432nee4.fhls-698-1.mp4.part","max_progress":null,"progress_idx":null,"elapsed":0,"total_bytes_estimate":29798400.0,"speed":4834.271158821972,"eta":null,"_eta_str":"Unknown","_speed_str":" 4.72KiB/s","_percent":0.003436426116838488,"_percent_str":" 0.0%","_total_bytes_str":" N/A","_total_bytes_estimate_str":" 28.42MiB","_downloaded_bytes_str":" 1.00KiB","_elapsed_str":"00:00:00","_default_template":" 0.0% of ~ 28.42MiB at 4.72KiB/s ETA Unknown (frag 0/50)"}}'
|
||||
sleep 0.02
|
||||
echo '{"event":"download","format_id":"hls-ts_AUDIO-0_2","progress":{"status":"finished","downloaded_bytes":50,"total_bytes":50,"speed":20,"eta":0}}'
|
||||
sleep 0.02
|
||||
echo '{"event":"postprocess","progress":{"status":"started","postprocessor":"Merger"}}' >&2
|
||||
fi
|
||||
printf '{"event":"after_move","filepath":"%s"}\n' "$output"
|
||||
Reference in New Issue
Block a user