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ただし、タイムスタンプの開始と終了を入力できるウィンドウを表示するために、2番目の部分(で始まる)の代替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

関連情報