kdialog 또는 기타 더 나은 KDE 솔루션(Python 등)과 함께 작동하도록 yad 스크립트의 내용을 조정합니다.

kdialog 또는 기타 더 나은 KDE 솔루션(Python 등)과 함께 작동하도록 yad 스크립트의 내용을 조정합니다.

이 스크립트를 사용하여 선택한 시간에 미디어 파일을 잘라냅니다.

#!/bin/bash

INPUT=$(yad --width=600 --height=400 --file-selection --file-filter='*.m4a *.ogg *.mp3 *.mp4 *.avi *.aac *.flac *.avi *.mkv *.mp4')

eval $(yad --width=400 --form --field=start --field=end --field=output:SFL "00:00:00" "00:00:00" "${INPUT/%.*}-out.${INPUT##*.}" | awk -F'|' '{printf "START=%s\nEND=%s\nOUTPUT=\"%s\"\n", $1, $2, $3}')
[[ -z $START || -z $END || -z $OUTPUT ]] && exit 1

DIFF=$(($(date +%s --date="$END")-$(date +%s --date="$START")))
OFFSET=""$(($DIFF / 3600)):$(($DIFF / 60 % 60)):$(($DIFF % 60))

ffmpeg -ss "$START" -t "$OFFSET" -i "$INPUT" -c copy "$OUTPUT"

나는 발견했다여기처음에는 마지막 행만 변경되었습니다(변환 없이 잘라내기/복사).

하지만 저는 KDE를 사용하고 있으며 kdialog더 나은 상호 작용을 위해 KDE를 사용하고 싶습니다.

첫 번째 부분은 처음부터 INPUT=$(yad다음과 같이 조정할 수 있습니다.

INPUT=$(kdialog --getopenfilename ~/Videos/ '*.m4a *.ogg *.mp3 *.mp4 *.avi *.aac *.flac *.avi *.mkv *.mp4')

kdialog그러나 타임스탬프 시작 및 끝을 입력할 수 있는 창을 표시하도록 두 번째 부분( 으로 시작 ) eval $(yad --width=400 --form --field=start --field=end --field=output:SFL "00:00:00" "00:00:00" ...에 대한 대안을 찾지 못했습니다 .

여기에 이미지 설명을 입력하세요.


(가능하다면 "ok" 메시지와 함께 마지막에 진행률 표시줄이나 메시지를 표시하고 싶습니다. - KDE에서 작동한다면 kdialog 외에 다른 솔루션을 제안해 주시기 바랍니다.)

답변1

내 질문이 충분히 명확한지는 모르겠지만 전체 질문은 다음 문장에 있습니다.

저는 KDE를 사용하고 있으며 더 나은 상호 작용을 위해 kdialog를 사용하고 싶습니다.

그러나 KDE 상호작용의 유일한 "나쁜" 측면은 파일 선택기와 타임스탬프 창에 대한 GTK UI입니다. 전자가 후자보다 더 중요합니다. 파일 선택기도 $HOME 수준에서 멈춰 있고 yad --file다른 위치를 지정하는 옵션을 찾을 수 없습니다 kdialog --getopenfilename.

내 솔루션은 다음으로 제한되었습니다. kdialog파일 선택기 및 yad타임스탬프 창 유지(생성 방법을 모르겠습니다 kdialog). 진행률 표시줄을 만들 수 없어서 kdialog진행률 표시줄을 만드는 방법을 찾았습니다. zenity(실제로 진행률을 표시하지 않고 작업이 진행 중이라는 사실만 표시) 를 사용하여 종료 메시지를 쉽게 만들 수 있습니다 kdialog.

#!/bin/bash


INPUT=$(kdialog --getopenfilename ~/Videos/ '*.m4a *.ogg *.mp3 *.mp4 *.avi *.aac *.flac *.avi *.mkv *.mp4')

eval $(yad --width=400 --form --field=start --field=end --field=output:SFL "00:00:00" "00:00:00" "${INPUT/%.*}-out.${INPUT##*.}" | awk -F'|' '{printf "START=%s\nEND=%s\nOUTPUT=\"%s\"\n", $1, $2, $3}')
[[ -z $START || -z $END || -z $OUTPUT ]] && exit 1

DIFF=$(($(date +%s --date="$END")-$(date +%s --date="$START")))
OFFSET=""$(($DIFF / 3600)):$(($DIFF / 60 % 60)):$(($DIFF % 60))

ffmpeg -ss "$START" -t "$OFFSET" -i "$INPUT" -c copy "$OUTPUT" | zenity --progress --pulsate --text="Running" --percentage=1 --auto-close --auto-kill

if [ $? -eq 0 ]; then
kdialog --msgbox "Process completed successfully!"
  else
kdialog --msgbox "SOMETHING WENT WRONG!"
fi

(이 조합이 이상 하다는 것을 알고 있습니다 kdialog. 더 깨끗한 솔루션을 기다리고 있습니다. 그냥 사용하는 것이 더 나을 것입니다 . 하지만 진행률 표시줄과 타임스탬프 창을 만드는 방법을 모르겠습니다.)zenityyadkdialog

관련 정보