copy tags using a python script in reduce-bitrate
This commit is contained in:
+29
-3
@@ -52,6 +52,17 @@ get_bitrate_kbps() {
|
||||
return 1
|
||||
}
|
||||
|
||||
restore_metadata() {
|
||||
local source_file="$1"
|
||||
local target_file="$2"
|
||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
# Use Python script with mutagen to properly copy all ID3 tags including multi-value fields
|
||||
"$script_dir/copy_id3_tags.py" "$source_file" "$target_file" 2>/dev/null
|
||||
|
||||
return $?
|
||||
}
|
||||
|
||||
process_file() {
|
||||
local file="$1"
|
||||
local current_bitrate
|
||||
@@ -85,8 +96,18 @@ process_file() {
|
||||
temp_file="${file%.mp3}_temp_$$.mp3"
|
||||
if ffmpeg -nostdin -y -i "$file" -b:a "${TARGET_BITRATE}" -id3v2_version 3 "$temp_file" > /dev/null 2>&1; then
|
||||
mv "$temp_file" "$file"
|
||||
log_success "Converted: ${file} (${current_bitrate} kbps ➜ ${TARGET_BITRATE}) ✅"
|
||||
((converted_count++))
|
||||
|
||||
# Restore all metadata from backup file
|
||||
if restore_metadata "$backup_file" "$file"; then
|
||||
log_success "Converted: ${file} (${current_bitrate} kbps ➜ ${TARGET_BITRATE}) ✅"
|
||||
((converted_count++))
|
||||
else
|
||||
log_error "Metadata restoration failed: ${file}"
|
||||
# Revert to backup since metadata restoration failed
|
||||
cp "$backup_file" "$file"
|
||||
log_warn "Reverted to backup (conversion skipped due to metadata error)"
|
||||
((error_count++))
|
||||
fi
|
||||
else
|
||||
rm -f "$temp_file"
|
||||
log_error "ffmpeg failed: ${file}"
|
||||
@@ -113,7 +134,12 @@ while getopts ":nd:ch" opt; do
|
||||
done
|
||||
|
||||
if ! command -v ffprobe >/dev/null 2>&1 || ! command -v ffmpeg >/dev/null 2>&1; then
|
||||
log_error "ffprobe/ffmpeg not found. Please install ffmpeg."
|
||||
log_error "ffprobe/ffmpeg not found. Please install ffmpeg."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! python3 -c "import mutagen" 2>/dev/null; then
|
||||
log_error "Python mutagen library not found. Please install python-mutagen (Arch) or python3-mutagen (Debian/Ubuntu)."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user