Created
July 30, 2025 21:25
-
-
Save itsXactlY/e937191936539d621a21c4fccd36796a to your computer and use it in GitHub Desktop.
burn cds easily
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Konfiguration | |
| SOURCE_DIR="/run/media/alca/store/" | |
| TARGET_DIR="/run/media/alca/store/mp3" | |
| MAX_SIZE_MB=650 # Etwas unter 700MB für Sicherheit | |
| BURN_SPEED=24 # Brenngeschwindigkeit | |
| # Farben für Output | |
| RED='\033[0;31m' | |
| GREEN='\033[0;32m' | |
| YELLOW='\033[1;33m' | |
| NC='\033[0m' # No Color | |
| echo -e "${GREEN}=== MP3 CD Brenner Script ===${NC}" | |
| # Target-Verzeichnis erstellen | |
| mkdir -p "$TARGET_DIR" | |
| cd "$TARGET_DIR" | |
| # Alte CD-Ordner löschen | |
| rm -rf CD_* | |
| echo -e "${YELLOW}Suche MP3s in $SOURCE_DIR...${NC}" | |
| # Alle MP3s finden und sortieren | |
| find "$SOURCE_DIR" -name "*.mp3" -type f | sort > /tmp/mp3_list.txt | |
| TOTAL_MP3S=$(wc -l < /tmp/mp3_list.txt) | |
| echo -e "${GREEN}Gefunden: $TOTAL_MP3S MP3-Dateien${NC}" | |
| if [ $TOTAL_MP3S -eq 0 ]; then | |
| echo -e "${RED}Keine MP3s gefunden!${NC}" | |
| exit 1 | |
| fi | |
| # Aufteilen in CD-Ordner | |
| COUNTER=1 | |
| CURRENT_DIR="CD_$(printf '%02d' $COUNTER)" | |
| mkdir "$CURRENT_DIR" | |
| CURRENT_SIZE=0 | |
| echo -e "${YELLOW}Teile auf CDs auf...${NC}" | |
| while IFS= read -r mp3_file; do | |
| # Dateigröße in MB ermitteln | |
| FILE_SIZE=$(du -m "$mp3_file" 2>/dev/null | cut -f1) | |
| # Prüfen ob Datei auf aktuelle CD passt | |
| if [ $((CURRENT_SIZE + FILE_SIZE)) -gt $MAX_SIZE_MB ]; then | |
| echo -e "${GREEN}CD $COUNTER: ${CURRENT_SIZE}MB ($(ls "$CURRENT_DIR" | wc -l) Dateien)${NC}" | |
| # Neue CD beginnen | |
| COUNTER=$((COUNTER + 1)) | |
| CURRENT_DIR="CD_$(printf '%02d' $COUNTER)" | |
| mkdir "$CURRENT_DIR" | |
| CURRENT_SIZE=0 | |
| fi | |
| # MP3 kopieren | |
| cp "$mp3_file" "$CURRENT_DIR/" 2>/dev/null | |
| if [ $? -eq 0 ]; then | |
| CURRENT_SIZE=$((CURRENT_SIZE + FILE_SIZE)) | |
| fi | |
| done < /tmp/mp3_list.txt | |
| # Letzte CD anzeigen | |
| echo -e "${GREEN}CD $COUNTER: ${CURRENT_SIZE}MB ($(ls "$CURRENT_DIR" | wc -l) Dateien)${NC}" | |
| TOTAL_CDS=$COUNTER | |
| echo -e "${YELLOW}Insgesamt $TOTAL_CDS CDs erstellt${NC}" | |
| # Brennen-Funktion | |
| burn_cd() { | |
| local cd_dir=$1 | |
| local cd_num=$2 | |
| echo -e "${YELLOW}=== Brennen von $cd_dir ===${NC}" | |
| echo -e "${RED}Lege eine leere CD ein und drücke ENTER...${NC}" | |
| read | |
| # ISO erstellen | |
| echo -e "${YELLOW}Erstelle ISO...${NC}" | |
| mkisofs -o "/tmp/${cd_dir}.iso" -R -J -joliet-long "$cd_dir" | |
| if [ $? -ne 0 ]; then | |
| echo -e "${RED}Fehler beim ISO erstellen!${NC}" | |
| return 1 | |
| fi | |
| # Brennen | |
| echo -e "${YELLOW}Brenne CD...${NC}" | |
| wodim -v speed=$BURN_SPEED "/tmp/${cd_dir}.iso" | |
| if [ $? -eq 0 ]; then | |
| echo -e "${GREEN}CD $cd_num erfolgreich gebrannt!${NC}" | |
| echo -e "${YELLOW}Nimm die CD raus und beschrifte sie: '$cd_dir'${NC}" | |
| else | |
| echo -e "${RED}Fehler beim Brennen von CD $cd_num!${NC}" | |
| echo -e "${YELLOW}Nochmal versuchen? (j/n)${NC}" | |
| read retry | |
| if [ "$retry" = "j" ] || [ "$retry" = "J" ]; then | |
| burn_cd "$cd_dir" "$cd_num" | |
| fi | |
| fi | |
| # ISO löschen | |
| rm -f "/tmp/${cd_dir}.iso" | |
| } | |
| # Fragen ob gebrannt werden soll | |
| echo -e "${YELLOW}Soll jetzt gebrannt werden? (j/n)${NC}" | |
| read start_burn | |
| if [ "$start_burn" = "j" ] || [ "$start_burn" = "J" ]; then | |
| for ((i=1; i<=TOTAL_CDS; i++)); do | |
| cd_folder="CD_$(printf '%02d' $i)" | |
| burn_cd "$cd_folder" "$i" | |
| if [ $i -lt $TOTAL_CDS ]; then | |
| echo -e "${GREEN}CD $i/$TOTAL_CDS fertig!${NC}" | |
| echo -e "${YELLOW}Drücke ENTER für die nächste CD...${NC}" | |
| read | |
| fi | |
| done | |
| echo -e "${GREEN}=== Alle $TOTAL_CDS CDs fertig gebrannt! ===${NC}" | |
| else | |
| echo -e "${YELLOW}CDs sind vorbereitet in: $TARGET_DIR${NC}" | |
| echo -e "${YELLOW}Du kannst sie später einzeln brennen mit:${NC}" | |
| for ((i=1; i<=TOTAL_CDS; i++)); do | |
| cd_folder="CD_$(printf '%02d' $i)" | |
| echo "mkisofs -o $cd_folder.iso -R -J $TARGET_DIR/$cd_folder && wodim -v $cd_folder.iso" | |
| done | |
| fi | |
| # Aufräumen | |
| rm -f /tmp/mp3_list.txt | |
| echo -e "${GREEN}Script beendet!${NC}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment