ym_down


"/home/yossef/notes/git/scripts/ym_down.md"

path: git/scripts/ym_down.md

- **fileName**: ym_down
- **Created on**: 2025-03-26 16:53:28

for downlaod song from youtube music

#!/usr/bin/env bash

# Ensure yt-dlp is installed
command -v yt-dlp >/dev/null 2>&1 || { echo "yt-dlp is not installed. Install it with: sudo pacman -S yt-dlp"; exit 1; }

# Ensure an argument is passed
if [ -z "$1" ]; then
    echo "Usage: ym_down <YouTube Music URL>"
    exit 1
fi

# Download location
MUSIC_DIR="$HOME/Music"

# Fetch metadata first
metadata=$(yt-dlp --print "%(playlist_title|artist)s|%(title)s" "$1" 2>/dev/null)

# Extract playlist/artist and song title
playlist_name=$(echo "$metadata" | cut -d'|' -f1)
song_title=$(echo "$metadata" | cut -d'|' -f2)

# Set folder name
if [ -z "$playlist_name" ]; then
    folder_name="Unknown"
else
    folder_name="$playlist_name"
fi

# Ensure the folder exists
mkdir -p "$MUSIC_DIR/$folder_name"

# Check if song already downloaded
if grep -q "$song_title" "$MUSIC_DIR/downloaded.txt" 2>/dev/null; then
    echo "Song '$song_title' is already downloaded. Skipping."
    exit 0
fi

# Download the song/playlist
yt-dlp --extract-audio --audio-format mp3 --audio-quality 0 \
    --embed-thumbnail --add-metadata --download-archive "$MUSIC_DIR/downloaded.txt" \
    -o "$MUSIC_DIR/$folder_name/%(title)s.%(ext)s" "$1"

echo "Download complete: $folder_name/$song_title"

continue:./_install_virtualbox.md
before:./setup_mpd.md