10-02-2025, 14:50
0
Dzień dobry. :)
W trakcie codziennej pracy na Mincie często słucham muzyki ze stacji online. Bardzo często trafiam na ciekawe utwory, do których chciałbym wrócić. Wpadłem na pomysł, że można przecież ściągnąć historię playlisty takiej stacji do pliku txt w formie logu. W jaki sposób mogę to zrobić i czy to w ogóle możliwe?
Zapytałem się AI i dostałem sugestię, aby stworzyć taki skrypt w Bash'u, a następnie nadać mu uprawnienia wykonalności i uruchomić co zrobiłem z poziomu terminala:
Oczywiście, nothing happened. :D Niestety, jeszcze nie znam i nie rozumiem skryptów Bash. W "przykładowy link" wkleiłem link do streamu przykładowej stacji (np. http://188.40.109.122:8000/ices2).
W trakcie codziennej pracy na Mincie często słucham muzyki ze stacji online. Bardzo często trafiam na ciekawe utwory, do których chciałbym wrócić. Wpadłem na pomysł, że można przecież ściągnąć historię playlisty takiej stacji do pliku txt w formie logu. W jaki sposób mogę to zrobić i czy to w ogóle możliwe?
Zapytałem się AI i dostałem sugestię, aby stworzyć taki skrypt w Bash'u, a następnie nadać mu uprawnienia wykonalności i uruchomić co zrobiłem z poziomu terminala:
Kod:
#!/bin/bash
# Adres URL strumienia radiowego
STREAM_URL="przykładowy link"
# Plik, do którego będą zapisywane metadane
LOG_FILE="playlist_log.txt"
# Funkcja do przechwytywania metadanych
fetch_metadata() {
curl -s -H "Icy-MetaData: 1" "$STREAM_URL" | \
while IFS= read -r -n1 char; do
if [[ "$char" == $'\x0d' ]]; then
# Znaleziono koniec linii metadanych
break
fi
echo -n "$char"
done
}
# Główna pętla skryptu
while true; do
# Przechwyć metadane
metadata=$(fetch_metadata)
# Jeśli metadane zawierają tytuł, zapisz je do pliku
if [[ "$metadata" == *"StreamTitle="* ]]; then
title=$(echo "$metadata" | grep -oP 'StreamTitle=\K[^;]*')
if [[ -n "$title" ]]; then
echo "$(date '+%Y-%m-%d %H:%M:%S'): $title" >> "$LOG_FILE"
echo "Zapisano: $title"
fi
fi
# Poczekaj chwilę przed kolejnym sprawdzeniem
sleep 10
done
Oczywiście, nothing happened. :D Niestety, jeszcze nie znam i nie rozumiem skryptów Bash. W "przykładowy link" wkleiłem link do streamu przykładowej stacji (np. http://188.40.109.122:8000/ices2).