alac is a special babyboy

This commit is contained in:
Lexi Deville 2023-10-26 01:38:39 -05:00 committed by GitHub
parent 34a108cada
commit 2b219cb901
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 37 additions and 15 deletions

View file

@ -2,7 +2,7 @@
Type=Service Type=Service
ServiceTypes=KonqPopupMenu/Plugin ServiceTypes=KonqPopupMenu/Plugin
MimeType=audio/*; MimeType=audio/*;
Actions=ConvertToMP3;ConvertToAAC;ConvertToOGG;ConvertToWMA;ConvertToFLAC;ConvertToALAC;ConvertToWAV;ConvertToAIFF; Actions=ConvertToMP3;ConvertToAAC;ConvertToOGG;ConvertToWMA;ConvertToFLAC;ConvertToM4A;ConvertToALAC;ConvertToWAV;ConvertToAIFF;
X-KDE-Submenu=Convert Audio X-KDE-Submenu=Convert Audio
Icon=audio-x-generic Icon=audio-x-generic
X-KDE-StartupNotify=false X-KDE-StartupNotify=false
@ -32,8 +32,13 @@ Name=Convert to FLAC
Exec=~/Scripts/ffmpegconvert.sh %U flac Exec=~/Scripts/ffmpegconvert.sh %U flac
Icon=audio-x-flac Icon=audio-x-flac
[Desktop Action ConvertToM4A]
Name=Convert to M4A
Exec=~/Scripts/ffmpegconvert.sh %U m4a
Icon=audio-m4a
[Desktop Action ConvertToALAC] [Desktop Action ConvertToALAC]
Name=Convert to ALAC Name=Convert to M4A (ALAC)
Exec=~/Scripts/ffmpegconvert.sh %U alac Exec=~/Scripts/ffmpegconvert.sh %U alac
Icon=audio-alac Icon=audio-alac

View file

@ -2,7 +2,7 @@
Type=Service Type=Service
ServiceTypes=KonqPopupMenu/Plugin ServiceTypes=KonqPopupMenu/Plugin
MimeType=video/*; MimeType=video/*;
Actions=ConvertToMP4;ConvertToAVI;ConvertToMOV;ConvertToMKV;ConvertToWMV;ConvertToFLV;ConvertToMPG;ConvertToMP3;ConvertToOGG;ConvertToWebM; Actions=ConvertToMP4;ConvertToAVI;ConvertToMOV;ConvertToMKV;ConvertToWMV;ConvertToFLV;ConvertToMPG;ConvertToMP3;ConvertToOGV;ConvertToWebM;
X-KDE-Submenu=Convert Video X-KDE-Submenu=Convert Video
Icon=video-x-generic Icon=video-x-generic
X-KDE-StartupNotify=false X-KDE-StartupNotify=false
@ -42,9 +42,9 @@ Name=Convert to MPG
Exec=~/Scripts/ffmpegconvert.sh %U mpg Exec=~/Scripts/ffmpegconvert.sh %U mpg
Icon=video-x-mpeg Icon=video-x-mpeg
[Desktop Action ConvertToOGG] [Desktop Action ConvertToOGV]
Name=Convert to OGG Name=Convert to OGV
Exec=~/Scripts/ffmpegconvert.sh %U ogg Exec=~/Scripts/ffmpegconvert.sh %U ogv
Icon=video-x-theora+ogg Icon=video-x-theora+ogg
[Desktop Action ConvertToWebM] [Desktop Action ConvertToWebM]

View file

@ -4,14 +4,19 @@ input_file="$1"
output_extension="$2" output_extension="$2"
filename=$(basename -- "$input_file") filename=$(basename -- "$input_file")
filename_noext="${filename%.*}" filename_noext="${filename%.*}"
if [ "$output_extension" == "alac" ]; then # alac is a special babyboy
output_file="${filename_noext}.m4a"
else
output_file="${filename_noext}.${output_extension}" output_file="${filename_noext}.${output_extension}"
fi
lossy=("mp3" "aac" "ogg" "wma") lossy=("mp3" "aac" "ogg" "wma")
lossless=("flac" "alac" "wav" "aiff") lossless=("flac" "alac" "wav" "aiff")
# dont overwrite a file # dont overwrite a file
if [ -e "$output_file" ]; then if [ -e "$output_file" ]; then
kdialog --error "The target file already exists." zenity --error --text="The target file already exists."
exit 1 exit 1
fi fi
@ -21,8 +26,7 @@ error_output=""
# warn if lossy to lossless # warn if lossy to lossless
input_extension="${filename##*.}" input_extension="${filename##*.}"
if [[ " ${lossy[@]} " =~ " ${input_extension} " ]] && [[ " ${lossless[@]} " =~ " ${output_extension} " ]]; then if [[ " ${lossy[@]} " =~ " ${input_extension} " ]] && [[ " ${lossless[@]} " =~ " ${output_extension} " ]]; then
kdialog --warningyesno "WARNING: Converting from a lossy to a lossless format.\n\nQuality will NOT improve.\n\nCompression artifacts will be present.\n\nThis betrays the point of lossless formats.\n\nPRESERVATIONISTS WILL WEEP.\n\nContinue?" if ! zenity --question --text="WARNING: Converting from a lossy to a lossless format.\n\nQuality will NOT improve.\n\nCompression artifacts will be present.\n\nThis betrays the point of lossless formats.\n\nPRESERVATIONISTS WILL WEEP.\n\nContinue?"; then
if [ $? -ne 0 ]; then
exit 1 exit 1
fi fi
fi fi
@ -30,21 +34,34 @@ fi
# warn if lossless to lossy # warn if lossless to lossy
input_extension="${filename##*.}" input_extension="${filename##*.}"
if [[ " ${lossless[@]} " =~ " ${input_extension} " ]] && [[ " ${lossy[@]} " =~ " ${output_extension} " ]]; then if [[ " ${lossless[@]} " =~ " ${input_extension} " ]] && [[ " ${lossy[@]} " =~ " ${output_extension} " ]]; then
kdialog --warningyesno "WARNING: Converting from a lossless to a lossy format.\n\nQuality will NOT be preserved.\n\nCompression artifacts will be PERMANENTLY introduced.\n\nCONVERTING BACK TO LOSSLESS WILL NOT UNDO THIS.\n\nContinue?" if ! zenity --question --text="WARNING: Converting from a lossless to a lossy format.\n\nQuality will NOT be preserved.\n\nCompression artifacts will be PERMANENTLY introduced.\n\nCONVERTING BACK TO LOSSLESS WILL NOT UNDO THIS.\n\nContinue?"; then
if [ $? -ne 0 ]; then
exit 1 exit 1
fi fi
fi fi
# ffmpeg cmd changes based on ext # ffmpeg cmd changes based on ext
(
if [[ " ${lossy[@]} " =~ " ${output_extension} " ]] || [[ " ${lossless[@]} " =~ " ${output_extension} " ]]; then if [[ " ${lossy[@]} " =~ " ${output_extension} " ]] || [[ " ${lossless[@]} " =~ " ${output_extension} " ]]; then
error_output=$(ffmpeg -i "$input_file" -q:a 0 -map a "$output_file" 2>&1) if [ "$output_extension" == "alac" ]; then # alac is still a special babyboy
ffmpeg -i "$input_file" -acodec alac "$output_file" 2>&1 &
else else
error_output=$(ffmpeg -i "$input_file" "$output_file" 2>&1) error_output=$(ffmpeg -i "$input_file" -q:a 0 -map a "$output_file" 2>&1) &
fi
else
error_output=$(ffmpeg -i "$input_file" -q:a 3 "$output_file" 2>&1) &
fi
) | zenity --progress --auto-close --auto-kill --text="Converting..."
# check status
if [ $? -eq 0 ]; then
# zenity --info --text="Done"
else
rm -f "$output_file"
zenity --error --text="Conversion cancelled or failed"
fi fi
# check exit statuses # check exit statuses
if [ $? -ne 0 ]; then if [ $error_output -ne 0 ]; then
# y u fail, ffmpeg???? # y u fail, ffmpeg????
if echo "$error_output" | grep -q "Invalid data found when processing input"; then if echo "$error_output" | grep -q "Invalid data found when processing input"; then
kdialog --error "FFmpeg does not support source file type." kdialog --error "FFmpeg does not support source file type."