77 lines
2.1 KiB
Bash
Executable File
77 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Ask for the thumbnail filename
|
|
echo "=== Album Art Embedder (Recursive) ==="
|
|
echo "Current directory: $(pwd)"
|
|
read -p "Enter thumbnail filename in this directory (e.g., cover.jpg): " thumbnail
|
|
|
|
# Full path to thumbnail
|
|
thumbnail_path="$(pwd)/$thumbnail"
|
|
|
|
# Check if thumbnail exists
|
|
if [ ! -f "$thumbnail_path" ]; then
|
|
echo "Error: Thumbnail not found at $thumbnail_path"
|
|
exit 1
|
|
fi
|
|
|
|
# Ask for album artist
|
|
read -p "Enter album artist name: " album_artist
|
|
|
|
# Get album name from current directory
|
|
album_name="$(basename "$(pwd)")"
|
|
|
|
echo ""
|
|
echo "Found thumbnail: $thumbnail_path"
|
|
echo "Album: $album_name"
|
|
echo "Album Artist: $album_artist"
|
|
echo "Processing all mp3/mp4 files in subdirectories..."
|
|
echo ""
|
|
|
|
# Counter for processed files
|
|
count=0
|
|
|
|
# Find all mp3 and mp4 files in subdirectories (not current dir)
|
|
find . -mindepth 2 -type f \( -name "*.mp3" -o -name "*.mp4" \) | while read -r file; do
|
|
echo "Processing: $file"
|
|
|
|
# Get file extension
|
|
ext="${file##*.}"
|
|
|
|
# Create temporary filename
|
|
temp_file="${file}.tmp.${ext}"
|
|
|
|
# Add thumbnail and metadata using ffmpeg
|
|
if [ "$ext" = "mp3" ]; then
|
|
ffmpeg -i "$file" -i "$thumbnail_path" \
|
|
-map 0 -map 1 \
|
|
-c copy \
|
|
-metadata album_artist="$album_artist" \
|
|
-metadata album="$album_name" \
|
|
-disposition:v:0 attached_pic \
|
|
"$temp_file" 2>/dev/null
|
|
else
|
|
# For mp4 files
|
|
ffmpeg -i "$file" -i "$thumbnail_path" \
|
|
-map 0 -map 1 \
|
|
-c copy \
|
|
-metadata artist="$album_artist" \
|
|
-metadata album="$album_name" \
|
|
-disposition:v:0 attached_pic \
|
|
"$temp_file" 2>/dev/null
|
|
fi
|
|
|
|
if [ $? -eq 0 ]; then
|
|
mv "$temp_file" "$file"
|
|
((count++))
|
|
echo "✓ Done"
|
|
else
|
|
echo "✗ Failed"
|
|
[ -f "$temp_file" ] && rm "$temp_file"
|
|
fi
|
|
echo ""
|
|
done
|
|
|
|
echo "Finished! Processed $count files."
|
|
echo "Album Artist set to: $album_artist"
|
|
echo "Album set to: $album_name"
|