Fix PNG thumbnail streams not being found
This commit is contained in:
parent
8d0f18ca60
commit
65fb9f5432
@ -64,14 +64,23 @@ if [[ ! (-d "$dir" && -w "$dir") ]] {
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
attachment_streams="$(ffprobe -of json -v error -select_streams t -show_streams "$input" | jq -c)"
|
function ffmpeg_with_args() {
|
||||||
|
ffprobe -of json -v error -select_streams $1:m:filename -show_streams "$input"
|
||||||
|
}
|
||||||
|
|
||||||
|
JQ_SELECTOR='[.streams, inputs.streams] as $inputs | {streams: ($inputs[0] - $inputs[1] + $inputs[2])}'
|
||||||
|
attachment_streams="$(jq -c "$JQ_SELECTOR" <<(ffmpeg_with_args v) <<(ffmpeg_with_args V) <<(ffmpeg_with_args t))"
|
||||||
|
|
||||||
if [[ "$(echo -n "$attachment_streams" | jq ".streams | length")" -lt 1 ]] {
|
if [[ "$(echo -n "$attachment_streams" | jq ".streams | length")" -lt 1 ]] {
|
||||||
echo "Input does not have any attachment streams" >&2
|
echo "Input does not have any suitable attachment streams" >&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
attachment_filename="$(echo -n "$attachment_streams" | jq -r '[.streams[] | select((.tags.filename | (startswith("cover") or startswith("small_cover"))) and (.tags.mimetype | startswith("image/")))] | sort_by(.index) | first | .tags.filename | strings')"
|
JQ_SELECTOR='[.streams[] | select((.tags.filename | (startswith("cover") or startswith("small_cover"))) and (.tags.mimetype | startswith("image/")))] | sort_by(.index) | first | .tags.filename | strings'
|
||||||
|
attachment_filename="$(echo -n "$attachment_streams" | jq -r "$JQ_SELECTOR")"
|
||||||
|
|
||||||
|
JQ_SELECTOR="[.streams[] | select(.tags.filename == \"$attachment_filename\")] | first | .codec_type"
|
||||||
|
attachment_codec_type="$(echo -n "$attachment_streams" | jq -r "$JQ_SELECTOR")"
|
||||||
|
|
||||||
if [[ "$attachment_filename" = "" ]] {
|
if [[ "$attachment_filename" = "" ]] {
|
||||||
echo "No suitable attachment found" >&2
|
echo "No suitable attachment found" >&2
|
||||||
@ -90,7 +99,11 @@ if [[ $tmpdir_success -ne 0 ]] {
|
|||||||
|
|
||||||
return_code=0
|
return_code=0
|
||||||
repeat 1 {
|
repeat 1 {
|
||||||
ffmpeg -v error -dump_attachment:t "$attachment_filename" -f matroska -i "$input" -t 0 -f null null || { return_code=$?; break }
|
if [[ "$attachment_codec_type" = "video" ]] {
|
||||||
|
ffmpeg -v error -f matroska -i "$input" -map m:filename:"$attachment_filename" -c copy "$attachment_filename" || { return_code=$?; break }
|
||||||
|
} else {
|
||||||
|
ffmpeg -v error -dump_attachment:t "$attachment_filename" -f matroska -i "$input" -t 0 -f null null || { return_code=$?; break }
|
||||||
|
}
|
||||||
if [[ "${attachment_filename##*.}" = "${output##*.}" || ("${attachment_filename##*.}" =~ ^jpe?g$ && "${output##*.}" =~ ^jpe?g$) ]] {
|
if [[ "${attachment_filename##*.}" = "${output##*.}" || ("${attachment_filename##*.}" =~ ^jpe?g$ && "${output##*.}" =~ ^jpe?g$) ]] {
|
||||||
mv "$attachment_filename" "$output"
|
mv "$attachment_filename" "$output"
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user