KBS-SoSe25-Karaoke: Unterschied zwischen den Versionen
Link hinzugefügt |
Skript hinzugefügt |
||
| Zeile 26: | Zeile 26: | ||
* Toni [[Benutzer:18bittner|18bittner]] | * Toni [[Benutzer:18bittner|18bittner]] | ||
== | == Skript == | ||
<pre><nowiki>#! /usr/bin/env bash | |||
OUTPUTPATH=${2:-"$(pwd)"} | |||
=== Links | Help() | ||
{ | |||
echo "Automatically create a folder and files for UltraStar-Karaoke from an" | |||
echo "animux USDB txt file." | |||
echo "Usage: ./usdl FILENAME [ULTRASTAR SONGS PATH]" | |||
} | |||
if [[ $1 == "-h" || $1 == "--help" ]]; then | |||
Help | |||
exit; | |||
fi | |||
if [ -z ${1+x} ]; then | |||
echo "Please provide an Animux db file." | |||
echo "Usage: $0 FILENAME" | |||
exit; | |||
fi | |||
FILENAME=$1 | |||
ARTIST=$(sed -n 's/^#ARTIST://p' "${FILENAME}" | tr -d "\r") | |||
SONGNAME=$(sed -n 's/^#TITLE://p' "${FILENAME}" | tr -d "\r") | |||
YTLINK=$(cat "${FILENAME}" | grep -oP 'v=\K[^,]*' | tr -d "\r") | |||
if [ -z "${YTLINK}" ] ; then | |||
YTLINK=$(cat "${FILENAME}" | grep -oP 'a=\K[^,]*' | tr -d "\r") | |||
if [ -z "${YTLINK}" ] ; then | |||
echo "No YouTube link provided! Aborting now." | |||
exit; | |||
fi | |||
fi | |||
COLINK=$(cat "${FILENAME}" | grep -oP 'co=\K[^,]*' | tr -d "\r") | |||
if [ -z "${COLINK}" ] ; then | |||
echo "No cover link provided! Will continue without cover." | |||
sed -i '/^#COVER:/d' "${FILENAME}" | |||
else | |||
COBASENAME=$(basename -- "$COLINK") | |||
COFILETYPE="${COBASENAME##*.}" | |||
COFILENAME="${ARTIST} - ${SONGNAME} [CO].${COFILETYPE}" | |||
fi | |||
BGLINK=$(cat "${FILENAME}" | grep -oP 'bg=\K[^,]*' | tr -d "\r") | |||
if [ -z "${BGLINK}" ] ; then | |||
echo "No background link provided! Will continue without background." | |||
sed -i '/^#BACKGROUND:/d' "${FILENAME}" | |||
else | |||
BGBASENAME=$(basename -- "$BGLINK") | |||
BGFILETYPE="${BGBASENAME##*.}" | |||
BGFILENAME="${ARTIST} - ${SONGNAME} [BG].${BGFILETYPE}" | |||
fi | |||
# replace MP3 and VIDEO Variables | |||
sed -i "/^#MP3:/{h;s/:.*/:${ARTIST} - ${SONGNAME}.mp3/};\${x;/^$/{s//#MP3:${ARTIST} - ${SONGNAME}.mp3/;H};x}" "${FILENAME}" | |||
sed -i "/^#VIDEO:/{h;s/:.*/:${ARTIST} - ${SONGNAME}.mp4/};\${x;/^$/{s//#VIDEO:${ARTIST} - ${SONGNAME}.mp4/;H};x}" "${FILENAME}" | |||
mkdir "${OUTPUTPATH}/${ARTIST} - ${SONGNAME}" | |||
echo "Starting download ..." | |||
./yt-dlp -o "${OUTPUTPATH}/${ARTIST} - ${SONGNAME}/${ARTIST} - ${SONGNAME}.mp4" -f 'bestvideo[height<=720]' "${YTLINK}" | |||
./yt-dlp -o "${OUTPUTPATH}/${ARTIST} - ${SONGNAME}/${ARTIST} - ${SONGNAME}.mp3" -x --audio-format mp3 "${YTLINK}" | |||
if ! [ -z "${COLINK}" ] ; then | |||
sed -i "/^#COVER:/{h;s/:.*/:${COFILENAME}/};\${x;/^$/{s//#COVER:${COFILENAME}/;H};x}" "${FILENAME}" | |||
curl -# -o "${OUTPUTPATH}/${ARTIST} - ${SONGNAME}/${COFILENAME}" "${COLINK}" | |||
fi; | |||
if ! [ -z "${BGLINK}" ] ; then | |||
sed -i "/^#BACKGROUND:/{h;s/:.*/:${BGFILENAME}/};\${x;/^$/{s//#BACKGROUND:${BGFILENAME}/;H};x}" "${FILENAME}" | |||
curl -# -o "${OUTPUTPATH}/${ARTIST} - ${SONGNAME}/${BGFILENAME}" "${BGLINK}" | |||
fi; | |||
mv "${FILENAME}" "${OUTPUTPATH}/${ARTIST} - ${SONGNAME}/${ARTIST} - ${SONGNAME}.txt" | |||
printf "Song erfolgreich in ${OUTPUTPATH}/${ARTIST} - ${SONGNAME} erstellt!\n" | |||
exit</nowiki></pre> | |||
== Links == | |||
* [https://usdx.eu UltraStar Website] | * [https://usdx.eu UltraStar Website] | ||
Aktuelle Version vom 16. April 2025, 17:51 Uhr
Dies ist der 1. Termin vom KunterBuntenSeminar im SoSe 25.
Ort: G-021/22
Datum: 16. April
Zeit: 18:30 Uhr bis ca. 21:00 Uhr
Zusätzlich Stream über BBB
TL;DR
Wir erstellen neue Einträge in der UltraStar-Karaoke-Datenbank. Das kann wahlweise die private oder die von Mafiasi sein.
Too Long Did Read
Dir macht das Karaoke auf den Partys Spaß, aber der perfekte Song fehlt noch? Du möchtest dir deine eigene UltraStar-Datenbank aufbauen? Du hast Spaß daran, deinen Lieblingssong stundenlang zu hören und die Tonhöhen und -längen perfekt zu einzustellen?
Wenn nur eines dieser Kriterien auf dich zutrifft, bist du bei diesem KBS genau richtig! Wir schauen uns das Programm UltraStar Deluxe an und wie wir mithilfe frei verfügbarer Tools neue Songs zu einer UltraStar-Datenbank hinzufügen können. Das kann wahlweise mithilfe einer bereits vorhandenen Modellierung aus dem Netz sein oder from scratch gemacht werden.
Nach dem Hinzufügen der Songs zur Datenbank müssen wir diese selbstverständlich auch ausprobieren.
Das KBS wird voraussichtlich hybrid angeboten (Link folgt) und möglicherweise aufgezeichnet.
Was muss ich mitbringen?
- wenn du nur zuschauen willst: nur dich
- wenn du selbst einen oder mehrere Songs hinzufügen willst: einen Laptop mit Linux, Windows oder macOS und ein bisschen Speicherplatz für Musikvideos (pro Eintrag solltest du mit max. 150 MB rechnen)
Vortragende
- Toni 18bittner
Skript
#! /usr/bin/env bash
OUTPUTPATH=${2:-"$(pwd)"}
Help()
{
echo "Automatically create a folder and files for UltraStar-Karaoke from an"
echo "animux USDB txt file."
echo "Usage: ./usdl FILENAME [ULTRASTAR SONGS PATH]"
}
if [[ $1 == "-h" || $1 == "--help" ]]; then
Help
exit;
fi
if [ -z ${1+x} ]; then
echo "Please provide an Animux db file."
echo "Usage: $0 FILENAME"
exit;
fi
FILENAME=$1
ARTIST=$(sed -n 's/^#ARTIST://p' "${FILENAME}" | tr -d "\r")
SONGNAME=$(sed -n 's/^#TITLE://p' "${FILENAME}" | tr -d "\r")
YTLINK=$(cat "${FILENAME}" | grep -oP 'v=\K[^,]*' | tr -d "\r")
if [ -z "${YTLINK}" ] ; then
YTLINK=$(cat "${FILENAME}" | grep -oP 'a=\K[^,]*' | tr -d "\r")
if [ -z "${YTLINK}" ] ; then
echo "No YouTube link provided! Aborting now."
exit;
fi
fi
COLINK=$(cat "${FILENAME}" | grep -oP 'co=\K[^,]*' | tr -d "\r")
if [ -z "${COLINK}" ] ; then
echo "No cover link provided! Will continue without cover."
sed -i '/^#COVER:/d' "${FILENAME}"
else
COBASENAME=$(basename -- "$COLINK")
COFILETYPE="${COBASENAME##*.}"
COFILENAME="${ARTIST} - ${SONGNAME} [CO].${COFILETYPE}"
fi
BGLINK=$(cat "${FILENAME}" | grep -oP 'bg=\K[^,]*' | tr -d "\r")
if [ -z "${BGLINK}" ] ; then
echo "No background link provided! Will continue without background."
sed -i '/^#BACKGROUND:/d' "${FILENAME}"
else
BGBASENAME=$(basename -- "$BGLINK")
BGFILETYPE="${BGBASENAME##*.}"
BGFILENAME="${ARTIST} - ${SONGNAME} [BG].${BGFILETYPE}"
fi
# replace MP3 and VIDEO Variables
sed -i "/^#MP3:/{h;s/:.*/:${ARTIST} - ${SONGNAME}.mp3/};\${x;/^$/{s//#MP3:${ARTIST} - ${SONGNAME}.mp3/;H};x}" "${FILENAME}"
sed -i "/^#VIDEO:/{h;s/:.*/:${ARTIST} - ${SONGNAME}.mp4/};\${x;/^$/{s//#VIDEO:${ARTIST} - ${SONGNAME}.mp4/;H};x}" "${FILENAME}"
mkdir "${OUTPUTPATH}/${ARTIST} - ${SONGNAME}"
echo "Starting download ..."
./yt-dlp -o "${OUTPUTPATH}/${ARTIST} - ${SONGNAME}/${ARTIST} - ${SONGNAME}.mp4" -f 'bestvideo[height<=720]' "${YTLINK}"
./yt-dlp -o "${OUTPUTPATH}/${ARTIST} - ${SONGNAME}/${ARTIST} - ${SONGNAME}.mp3" -x --audio-format mp3 "${YTLINK}"
if ! [ -z "${COLINK}" ] ; then
sed -i "/^#COVER:/{h;s/:.*/:${COFILENAME}/};\${x;/^$/{s//#COVER:${COFILENAME}/;H};x}" "${FILENAME}"
curl -# -o "${OUTPUTPATH}/${ARTIST} - ${SONGNAME}/${COFILENAME}" "${COLINK}"
fi;
if ! [ -z "${BGLINK}" ] ; then
sed -i "/^#BACKGROUND:/{h;s/:.*/:${BGFILENAME}/};\${x;/^$/{s//#BACKGROUND:${BGFILENAME}/;H};x}" "${FILENAME}"
curl -# -o "${OUTPUTPATH}/${ARTIST} - ${SONGNAME}/${BGFILENAME}" "${BGLINK}"
fi;
mv "${FILENAME}" "${OUTPUTPATH}/${ARTIST} - ${SONGNAME}/${ARTIST} - ${SONGNAME}.txt"
printf "Song erfolgreich in ${OUTPUTPATH}/${ARTIST} - ${SONGNAME} erstellt!\n"
exit
Links
- UltraStar Website
- USDx-Download auf github
- Reddit-Post mit Linksammlung von UltraStar-Datenbanken
- USDB – größte (mir bekannte) UltraStar-Datenbank, enthält Modellierungen für deutsche und internationale Hits
- UltraStar Italia – Datenbank mit Modellierungen von italienischen und internationalen Hits