Hallo,
habeLinVDR mahzeit 4.0 Beta 2 installiert und alles läuft bis auf das genre update für shoutcast. Es wird nichts gefunden, hat jemand eine Idee.
Vielen Dank
Hallo,
habeLinVDR mahzeit 4.0 Beta 2 installiert und alles läuft bis auf das genre update für shoutcast. Es wird nichts gefunden, hat jemand eine Idee.
Vielen Dank
Das script in /etc/vdr/scripts/shoutcast2vdr muss man erstmal wieder an die Shoutcast-Seite anpassen.
Vielen Dank für die schnelle Antwort, hat Du einen Link oder kannst Du Deines hier einfügen bzw. mir per pn schicken.
Vielen Dank !!!
hi
ich habe auch das problem das es sich nicht mehr updaten lässt. einige alte genre wie rnb und 80èr die ich schon zuvor im vdr stehen hatte kann ich auch noch abspielen.
hat keiner ein howto zu diesem thema?
Habe mein script beim neu installieren leider verloren.
....also noch mal ganz genau.
vor ca.zwei monaten ging die update funktion noch..
ich gehe im menue system auf einstellung, befehle, shoutcast genre updaten.
z.b. alternative. makieren und mit ok bestätigen. dann erscheint ein "starte shoutcast update.......oder so ähnlich. 2 sek. später kommt die meldung das es fertig upgedatet wurde. wenn ich allerdings die m3u datei mit mp3ng öffne steht da nur "1. .pls", sonst garnichts.
hab ich da etwa ein fehler rein gebracht? oder ist der mechanismus zum abholen geändert worden, oder wie, oder was ?
hat vielleicht einer eine idee wo man anfangen könnte zu suchen?
Hallo,
die "shoutcast2vdr 0.0.8-rev03" funktioniert bei mir, gerade auf der Konsole getestet.
Ich meine ich hatte mal was angepasst/verändert --> weiß aber nicht mehr was ....
Outputdir und tempdir müssen noch angepasst werden.
Gruß,
Chuck
#!/bin/bash
#
# Name : shoutcast2vdr 0.0.8-rev03
#
# Author: Unimatrix0
# riverphoenix - Ergänzungen für LinVDR
# Viking - Kleinere anpassungen, sortiertung, ausgabe, Genres geht jetzt mit leerzeichen (Top 40) etc.
#
# (ursprünglich von scgen 0.2 (geschrieben von "echto") "abgekupfert" (das meiste komplizierte Zeug ist noch von ihm)
#
#
# Usage: Am shell promp ./shoutcast2vdr gefolgt von einem Genre und der Anzahl der Stream-Links die heruntergeladen werden sollen.
# Beispiel shoutcast2vdr Trance 50
# Holt 50 Streams die auf das Genre Trance (mehr oder weniger) passen sollten.
# Es werden Unterordner für jedes Genre angelegt (outputdir/genre) und dafür noch eine m3u-playlist erstellt, die im Stammordner (outputdir) abgelegt wird.
#
# Original vom Author von scgen 0.2:
# This script is work in progress so use at your own risk. A few live streams don't get
# created and maybe I'll fix that later. You might see the error below during execution.
#
# Heres a quick and dirty script to generate .pls files from the top 20 shoutcast streams
#
# What you do with it from here is up to you. This script could easily be modified.
#
# Add the script to your cron jobs with 24 Hour intervals for a up to date list.
#
# mv: when moving multiple files, last argument must be a directory
# (/Zitatende)
#
#
# Ja ähm, genau...selbiges gilt für mich. Das ist mein erster Gehversuch mit bash. Ich weiss also nicht, ob ich den Fehler finde, der verursacher dafür ist,
# dass nicht ganz alle Streams im Ordner landen, die eigentlich müssten. Bei 100 gestesteten, waren es bei mir aber immerhin über 70, die "durch kamen".
# Bei Unterstützung und insbesonderen Vorschlägen wäre ich ganz sicher nicht böse.
#
#
#=================================================================================================================
# To do:
#
# 1. Mal schaun, im Moment fällt mir nix mehr ein ausser zu sehen, ob das Ding wirklich tut was es soll.
# 2. Vorschläge ?
#
#=================================================================================================================
# Revision:
# 0.0.8 - Fehler behoben der die Namen doppelt erscheinen liess
# - Maxbitrate hinzugefügt (danke wilderigel!)
# 0.0.7 - Nun sollten auch sender mit mehr als einem Stream korrekt, mit allen Streams eingelesen werden.
# 0.0.6 - SVDRP-Send hinzugefügt
# 0.0.5 - Aufräumarbeiten, da war noch was zuviel drinn, naja und jetzt sind dafür viel Kommentare drinn...naja..es muss es ja keiner lesen *fg*
# 0.0.4 - Filenamen verschönerung
# 0.0.3 - Variabeln die per Kommandozeile übergeben werden $1 und $2 das erste für das Genre und das zweite für die Anzahl zu holender streams.
# 0.0.2 - Variabeln um das temp und outputdir angeben zu können.
# 0.0.1 - Das Teil macht was es soll, die wichtigsten Anpassungen für VDR sind gemacht.
#=================================================================================================================
#
# Variabeln
#=================================================================================================================
# Genre von der Kommandozeile übernehmen ($1). Kann auch fest eingetragen werden z.B. "Alternative", "Classical", "Dance", "Funk", "Jazz", "Techno",
# "Metal", "Mixed", "Pop", "TopTen", "Rap", "Electronic", "Trance" etc. etc. siehe dazu bei shoutcast nach
genre=$1
#=================================================================================================================
# Wo sollen die fertigen .pls und .m3u-files hin ? /etc/vdr/Network-Streams bei mir.
#outputdir=/etc/vdr/Network-Streams
#outputdir=/pub/mp3 # LinVDR
outputdir=/usr/local/etc/vdr/Network-Streams
# Das Temporäre Verzeichnis
# tempdir=/home/volker/vdr/radio/tempdir
tempdir=/usr/local/etc/vdr/Network-Streams/tempdir
# Der Name der Playlist(s) haben soll (.m3u). Hintendran wird dann noch das Genre angehängt.
m3uname=Network-Streams-
# Soll ein route (#) vor der nummer des Streams
# - gibt evt. probleme bei Windows, habe es aber nicht getestet.
# hashnr=
hashnr=\#
# Anzahl streams die für das Genre "besorgt" werden sollen. (wird jetzt per kommandozeile angegeben, kann natürlich auch fest eingestellt werden)
anzahl=$2
# Sortierung nach (entweder bitrate oder listeners)
sortierung=bitrate
# Maximale Bitrate
# Wenn Bitrate egal ist leer lassen!
maxbitrate=
# pfad zu svdrpsend (für die OSD-Mitteilung)
# svdrpsend=echo #Test
svdrpsend=/usr/local/bin/svdrpsend.pl #LinVDR
# wenn rm = rm -f steht, werden die temp-dateien am Ende gelöscht, bei rm = echo nicht.
#rm=rm -f
rm = echo
# Debug
#set -xv
# Config ende, aber hier nur noch editieren, wenn man weiss was man tut.
# Streamfiles holen, die den Link und den vollen Namen der Station enthält
get_streams () {
while read url; do
printf "."
wget -q $url
done
}
# Meine veränderte Version von create_pls_2_files die sieht für die kenner wohl nicht sehr toll aus, aber sie funktioniert.
create_pls2_files () {
while read tempdata; do
streams=`cat ${tempdata} | awk 'match($1,"numberofentries=") { print $0 }' |sed 's/numberofentries=//' |awk '{print $1}'`
streamnr=0
[ "$streams" = "" ] && streams=0
while [ $streamnr -ne $streams ]
do
streamnr=$(( $streamnr + 1 ))
suchkriterium="File"$streamnr"="
cat $tempdata | awk 'match($1,"'"$suchkriterium"'") { print $0 }' \
| sed 's/'"$suchkriterium"'//' > $tempdata.temp
suchkriterium="Title"$streamnr"="
streamname=`cat $tempdata |\
awk 'match($1,"'"$suchkriterium"'") ' |\
sed 's/Title.*) //' | cut -c1-75 | sed 's/[()*,&!?~{}#:\`]//g' | \
sed 's/=//g' |sed 's/-=-//g' |sed '/^#/D;/^$/D' |sed 's/^$/_ffff_/g' |sed 's/^#/_/g' |sed 's/\ /_/g' | sed 's/\///g' |\
sed 's/__/_/g' | sed 's/+//g' | sed 's/-//g' |sed 's/__/_/g' | sed 's/\^//g' | sed 's/\[//g' | sed 's/\]//g' |sed 's/__/_/g' |\
sed 's/\b_//g' | sed 's/[|]//g' | sed 's/[..]/./g' | sed 's/[..]/./g' |\
awk '{print $1}'`
mkdir $outputdir/"$genre"/$streamname > /dev/null 2>&1
# mv -f $tempdata.temp $outputdir/"$genre"/$streamname/$streamnr.pls
mv -f $tempdata.temp $outputdir/"$genre"/$streamname/$hashnr"$streamnr"_-_$streamname.pls
done
done
}
printf "\n\n-- Start shoutcast2vdr - Update genre : $1 --\n\n"
# VDR-OSD-Mitteilung
$svdrpsend MESG Shoutcast "$genre" aktualisierung startet... >/dev/null 2>&1
if [ -d $outputdir/"$genre"/ ]; then
# alte pls- und m3u-files des genre's sowie leere Verzeichnisse löschen
find $outputdir/"$genre"/ -name "*.pls" -exec rm -f {} \; 2>/dev/null
find $outputdir/"$genre"/ -name "*.m3u" -exec rm -f {} \; 2>/dev/null
find $outputdir/"$genre"/ -type d -exec rmdir --ignore-fail-on-non-empty {} \; 2>/dev/null
rm -f $outputdir/$m3uname"$genre".m3u
fi
# Testen ob das Zielvertzeichnis schon existiert, sonst eins machen.
test -d $outputdir/"$genre" || mkdir $outputdir/"$genre" 2>/dev/null
# Testen ob tempvertzeichnis schon existiert, sonst eins machen.
test -d $tempdir || mkdir $tempdir 2>/dev/null
cd $tempdir
# Die html-page saugen
wget -qO $tempdir/index.html "http://yp.shoutcast.com/directory/index.phtml?s="$(echo $genre | sed 's/ /%20/g')"&numresult=$anzahl&orderby=$sortierung&maxbitrate=$maxbitrate"
grep \.pls $tempdir/index.html | awk '!match($5,"Lucky") {print $5}' | sed 's/href="/shoutcast.com/g' | sed 's/"><img//g'>$tempdir/streamlist
# stream data besorgen
printf "$(cat $tempdir/streamlist | wc -l) einträge gefunden, hole streams "
get_streams < $tempdir/streamlist
printf "\n\n"
# .pls files erzeugen
ls -rc $tempdir/shoutcast-playlist.pls* | create_pls2_files
# alle erzeugten streams anzeigen
#ls -all $outputdir/"$genre"/*.pls
# Aufräumen, was nicht mehr gebraucht wird.
$rm "$tempdir/shoutcast-playlist.pls*" 2>/dev/null
$rm $tempdir/index.html 2>/dev/null
$rm $tempdir/streamlist 2>/dev/null
# m3u-datei erstellen
cd $outputdir/"$genre"
for i in $(ls -rc)
do
if [ -d $i ]
then
for j in $(ls -rc $i/*.pls)
do
echo $j >> $i.m3u
echo "$genre"/$j >> $outputdir/$m3uname"$genre".m3u
done
echo $m3uname"$genre".m3u: $i erstellt!
fi
done
cd ..
# einzelnes leeres pls-file löschen, kommt wahrscheinlich wegen "m3u-datei erstellen"
rm -f $outputdir/"$genre"/.pls
# tempdir löschen
rm -rf $tempdir/* # löschen
# VDR-OSD-Mitteilung
$svdrpsend MESG Shoutcast "$genre" \(sender: $(cat $m3uname"$genre".m3u 2>/dev/null | wc -l)\) aktualisierung fertig! >/dev/null 2>&1
printf "\nFertig.\n"
Alles anzeigen
hi vdrchuck
schön dich mal wieder zu hören.
ich werde es morgen früh gleichmal testen, ist vielleicht ein ansatz, ich glaube die 0.0.8 rev03 war bei der einfachen mahlzeit iso 3.2 nicht mit drin ?!
danke erstmal für die schnelle antwort.
hallo vdrchuck
ooops, ich habe shoutcast2vdr wohl schon irgendwann auf die neue version 0.0.8-rev03 upgedatet, dabei aber nicht darauf geachtet "outputdir" und "tempdir" anzupassen
(bei linvdr : outputdir=/etc/vdr/Network-Streams und tempdir=/etc/vdr/Network-Streams/tempdir
wie heißt es so schön, Never Change A Running System. ich sollte nicht immer so viel "fummeln"...
....sowas blööödes...naja, jetzt funzt es ja, danke vdrchuck !!!
...habe versucht das script von chuck mit vi zu pasten und dabei ist mit putty/vi abgestürzt. Nach dem Neustart war das System hin. Neuinstallation.
Hat jemand einen konkreten Vorschlat, evtl. Anleitung wie ich das sauberer, gefahrloser hinbekomme, bzw. gibt es inzwischen eine Anleitung was geändert werden muss?
Vielen Dank
ZitatOriginal von glendale
...habe versucht das script von chuck mit vi zu pasten und dabei ist mit putty/vi abgestürzt.
Ich mache dies immer mit nano --> aber ich weiß nicht ob dies bei Linvdr dabei ist.
ZitatOriginal von glendale
Nach dem Neustart war das System hin. Neuinstallation.
Dies hat doch sicherlich andere Gründe gehabt , warum sollte das System kaputt sein von einer Datei die das System nicht "unbedingt" benötigt .
ZitatOriginal von glendale
Hat jemand einen konkreten Vorschlat, evtl. Anleitung wie ich das sauberer, gefahrloser hinbekomme, bzw. gibt es inzwischen eine Anleitung was geändert werden muss?
Anleitung für Linvdr habe ich nicht --> da ich kein Linvdr benutze.
Gruß,
Chuck
Hallo, nach Neuinstallation, hier mal mein sricpt, vielleicht habt ihr ja eine Idee.
Vielen Dank.
#!/bin/bash
#
# Name : shoutcast2vdr 0.0.8
#
# Author: Unimatrix0
#
# (ursprünglich von scgen 0.2 (geschrieben von "echto") "abgekupfert" (das meiste komplizierte Zeug ist noch von ihm)
#
#
# Usage: Am shell promp ./shoutcast2vdr gefolgt von einem Genre und der Anzahl der Stream-Links die heruntergeladen werden sollen.
# Beispiel shoutcast2vdr Trance 50
# Holt 50 Streams die auf das Genre Trance (mehr oder weniger) passen sollten.
# Es werden Unterordner für jedes Genre angelegt (outputdir/genre) und dafür noch eine m3u-playlist erstellt, die im Stammordner (outputdir) abgelegt wird.
#
# Original vom Author von scgen 0.2:
# This script is work in progress so use at your own risk. A few live streams don't get
# created and maybe I'll fix that later. You might see the error below during execution.
#
# Heres a quick and dirty script to generate .pls files from the top 20 shoutcast streams
#
# What you do with it from here is up to you. This script could easily be modified.
#
# Add the script to your cron jobs with 24 Hour intervals for a up to date list.
#
# mv: when moving multiple files, last argument must be a directory
# (/Zitatende)
#
#
# Ja ähm, genau...selbiges gilt für mich. Das ist mein erster Gehversuch mit bash. Ich weiss also nicht, ob ich den Fehler finde, der verursacher dafür ist,
# dass nicht ganz alle Streams im Ordner landen, die eigentlich müssten. Bei 100 gestesteten, waren es bei mir aber immerhin über 70, die "durch kamen".
# Bei Unterstützung und insbesonderen Vorschlägen wäre ich ganz sicher nicht böse.
#
#
#=================================================================================================================
# To do:
#
# 1. Mal schaun, im Moment fällt mir nix mehr ein ausser zu sehen, ob das Ding wirklich tut was es soll.
# 2. Vorschläge ?
#
#=================================================================================================================
# Revision:
# 0.0.8 - Fehler behoben der die Namen doppelt erscheinen liess
# - Maxbitrate hinzugefügt (danke wilderigel!)
# 0.0.7 - Nun sollten auch sender mit mehr als einem Stream korrekt, mit allen Streams eingelesen werden.
# 0.0.6 - SVDRP-Send hinzugefügt
# 0.0.5 - Aufräumarbeiten, da war noch was zuviel drinn, naja und jetzt sind dafür viel Kommentare drinn...naja..es muss es ja keiner lesen *fg*
# 0.0.4 - Filenamen verschönerung
# 0.0.3 - Variabeln die per Kommandozeile übergeben werden $1 und $2 das erste für das Genre und das zweite für die Anzahl zu holender streams.
# 0.0.2 - Variabeln um das temp und outputdir angeben zu können.
# 0.0.1 - Das Teil macht was es soll, die wichtigsten Anpassungen für VDR sind gemacht.
#=================================================================================================================
#
# Variabeln
#=================================================================================================================
# Genre von der Kommandozeile übernehmen ($1). Kann auch fest eingetragen werden z.B. "Alternative", "Classical", "Dance", "Funk", "Jazz", "Techno",
# "Metal", "Mixed", "Pop", "TopTen", "Rap", "Electronic", "Trance" etc. etc. siehe dazu bei shoutcast nach
genre=$1
#=================================================================================================================
# Wo sollen die fertigen .pls und .m3u-files hin ? /etc/vdr/Network-Streams bei mir.
outputdir=/etc/vdr/Network-Streams
# Das Temporäre verzeichnis
tempdir=/etc/vdr/Network-Streams/tempdir
# Der name der Playlist(s) haben soll (.m3u). Hintendran wird dann noch das Genre angehängt.
m3uname=Network-Streams-
# Anzahl streams die für das Genre "besorgt" werden sollen. (wird jetzt per kommandozeile angegeben, kann natürlich auch fest eingestellt werden)
anzahl=$2
# Sortierung nach (entweder bitrate oder listeners)
sortierung=bitrate
# Maximale Bitrate
# Wenn Bitrate egal ist leer lassen!
maxbitrate=
# pfad zu svdrpsend (für die OSD-Mitteilung)
svdrpsend=/usr/bin/svdrpsend.pl
# wenn rm = rm -f steht, werden die temp-dateien am Ende gelöscht, bei rm = echo nicht.
rm = rm -f
#rm = echo
# Debug
#set -xv
# Config ende, aber hier nur noch editieren, wenn man weiss was man tut.
# VDR-OSD-Mitteilung
$svdrpsend MESG $m3uname$genre aktualisierung startet...
# Testen ob das Zielvertzeichnis schon existiert, sonst eins machen.
test -d $tempdir mkdir -p $tempdir
cd $tempdir
test -d $outputdir/$genre mkdir -p $outputdir/$genre
# Streamfiles holen, die den Link und den vollen Namen der Station enthält
get_streams () {
while read url; do
wget $url
done
}
# Meine veränderte Version von create_pls_2_files die sieht für die kenner wohl nicht sehr toll aus, aber sie funktioniert.
create_pls2_files () {
while read tempdata; do
streams=`cat ${tempdata} | awk 'match($1,"numberofentries=") { print $0 }' |sed 's/numberofentries=//' |awk '{print $1}'`
streamnr=0
while [ $streamnr -ne $streams ]
do
streamnr=$(( $streamnr + 1 ))
suchkriterium="File"$streamnr"="
cat $tempdata | awk 'match($1,"'"$suchkriterium"'") { print $0 }' \
| sed 's/'"$suchkriterium"'//' > $tempdata.temp
suchkriterium="Title"$streamnr"="
mv -f $tempdata.temp $outputdir/$genre/`cat $tempdata |\
awk 'match($1,"'"$suchkriterium"'") { print substr($0,1,86) }' |\
sed 's/Title.*) //' | sed 's/[()*,&!?~{}#:\`]//g' | \
sed 's/=//g' |sed 's/-=-//g' |sed '/^#/D;/^$/D' |sed 's/^$/_ffff_/g' |sed 's/^#/_/g' |sed 's/\ /_/g' | sed 's/\///g' |\
sed 's/__/_/g' | sed 's/+//g' | sed 's/-//g' |sed 's/__/_/g' | sed 's/\^//g' | sed 's/\[//g' | sed 's/\]//g' |sed 's/__/_/g' |\
sed 's/\b_//g' | sed 's/[|]//g' | sed 's/[..]/./g' | sed 's/[..]/./g' |\
awk '{print $1"'_"$streamnr"'"}'`.pls
done
done
}
# alte pls- und m3u-files des genre's löschen
rm -f $outputdir/$genre/*.pls
rm -f $outputdir/$m3uname$genre.m3u
# Die html-page saugen
wget -O $tempdir/index.html "http://yp.shoutcast.com/directory/index.phtml?sgenre=$genre?&numresult=$anzahl&orderby=$sortierung&maxbitrate=$maxbitrate"
grep \.pls $tempdir/index.html | awk '!match($5,"Lucky") {print $5}' | sed 's/href="/shoutcast.com/g' | sed 's/"><img//g'>$tempdir/streamlist
# stream data besorgen
get_streams < $tempdir/streamlist
# .pls files erzeugen
ls $tempdir/shoutcast-playlist.pls* | create_pls2_files
# alle erzeugten streams anzeigen
#ls -all $outputdir/$genre/*.pls
# Aufräumen, was nicht mehr gebraucht wird.
$rm $tempdir/shoutcast-playlist.pls*
$rm $tempdir/index.html
$rm $tempdir/streamlist
# m3u-datei erstellen
cd $outputdir
for i in $genre/*.pls
do
echo $i >> $outputdir/$m3uname$genre.m3u
echo $m3uname-$genre.m3u: $i erstellt!
done
# einzelnes leeres pls-file löschen, kommt wahrscheinlich wegen "m3u-datei erstellen"
rm -f $outputdir/$genre/.pls
rm -f $tempdir/*.*
rm -f $tempdir/*
# VDR-OSD-Mitteilung
$svdrpsend MESG $m3uname$genre aktualisierung ist fertig!
ZitatOriginal von glendale
Hallo, nach Neuinstallation, hier mal mein sricpt, vielleicht habt ihr ja eine Idee.
Ersetze mal folgende Zeile;
wget -O $tempdir/index.html "http://yp.shoutcast.com/directory/index.phtml?sgenre=$genre?&numresult=$anzahl&orderby=$sortierung&maxbitrate=$maxbitrate"
Durch diese hier:
wget -qO $tempdir/index.html "http://yp.shoutcast.com/directory/index.phtml?s="$(echo $genre | sed 's/ /%20/g')"&numresult=$anzahl&orderby=$sortierung&maxbitrate=$maxbitrate"
Gruß,
Chuck
Leider kein Erfolg, hier nochmal das veränderte script:
#!/bin/bash
#
# Name : shoutcast2vdr 0.0.8
#
# Author: Unimatrix0
#
# (ursprünglich von scgen 0.2 (geschrieben von "echto") "abgekupfert" (das meiste komplizierte Zeug ist noch von ihm)
#
#
# Usage: Am shell promp ./shoutcast2vdr gefolgt von einem Genre und der Anzahl der Stream-Links die heruntergeladen werden sollen.
# Beispiel shoutcast2vdr Trance 50
# Holt 50 Streams die auf das Genre Trance (mehr oder weniger) passen sollten.
# Es werden Unterordner für jedes Genre angelegt (outputdir/genre) und dafür noch eine m3u-playlist erstellt, die im Stammordner (outputdir) abgelegt wird.
#
# Original vom Author von scgen 0.2:
# This script is work in progress so use at your own risk. A few live streams don't get
# created and maybe I'll fix that later. You might see the error below during execution.
#
# Heres a quick and dirty script to generate .pls files from the top 20 shoutcast streams
#
# What you do with it from here is up to you. This script could easily be modified.
#
# Add the script to your cron jobs with 24 Hour intervals for a up to date list.
#
# mv: when moving multiple files, last argument must be a directory
# (/Zitatende)
#
#
# Ja ähm, genau...selbiges gilt für mich. Das ist mein erster Gehversuch mit bash. Ich weiss also nicht, ob ich den Fehler finde, der verursacher dafür ist,
# dass nicht ganz alle Streams im Ordner landen, die eigentlich müssten. Bei 100 gestesteten, waren es bei mir aber immerhin über 70, die "durch kamen".
# Bei Unterstützung und insbesonderen Vorschlägen wäre ich ganz sicher nicht böse.
#
#
#=================================================================================================================
# To do:
#
# 1. Mal schaun, im Moment fällt mir nix mehr ein ausser zu sehen, ob das Ding wirklich tut was es soll.
# 2. Vorschläge ?
#
#=================================================================================================================
# Revision:
# 0.0.8 - Fehler behoben der die Namen doppelt erscheinen liess
# - Maxbitrate hinzugefügt (danke wilderigel!)
# 0.0.7 - Nun sollten auch sender mit mehr als einem Stream korrekt, mit allen Streams eingelesen werden.
# 0.0.6 - SVDRP-Send hinzugefügt
# 0.0.5 - Aufräumarbeiten, da war noch was zuviel drinn, naja und jetzt sind dafür viel Kommentare drinn...naja..es muss es ja keiner lesen *fg*
# 0.0.4 - Filenamen verschönerung
# 0.0.3 - Variabeln die per Kommandozeile übergeben werden $1 und $2 das erste für das Genre und das zweite für die Anzahl zu holender streams.
# 0.0.2 - Variabeln um das temp und outputdir angeben zu können.
# 0.0.1 - Das Teil macht was es soll, die wichtigsten Anpassungen für VDR sind gemacht.
#=================================================================================================================
#
# Variabeln
#=================================================================================================================
# Genre von der Kommandozeile übernehmen ($1). Kann auch fest eingetragen werden z.B. "Alternative", "Classical", "Dance", "Funk", "Jazz", "Techno",
# "Metal", "Mixed", "Pop", "TopTen", "Rap", "Electronic", "Trance" etc. etc. siehe dazu bei shoutcast nach
genre=$1
#=================================================================================================================
# Wo sollen die fertigen .pls und .m3u-files hin ? /etc/vdr/Network-Streams bei mir.
outputdir=/etc/vdr/Network-Streams
# Das Temporäre verzeichnis
tempdir=/etc/vdr/Network-Streams/tempdir
# Der name der Playlist(s) haben soll (.m3u). Hintendran wird dann noch das Genre angehängt.
m3uname=Network-Streams-
# Anzahl streams die für das Genre "besorgt" werden sollen. (wird jetzt per kommandozeile angegeben, kann natürlich auch fest eingestellt werden)
anzahl=$2
# Sortierung nach (entweder bitrate oder listeners)
sortierung=bitrate
# Maximale Bitrate
# Wenn Bitrate egal ist leer lassen!
maxbitrate=
# pfad zu svdrpsend (für die OSD-Mitteilung)
svdrpsend=/usr/bin/svdrpsend.pl
# wenn rm = rm -f steht, werden die temp-dateien am Ende gelöscht, bei rm = echo nicht.
rm = rm -f
#rm = echo
# Debug
#set -xv
# Config ende, aber hier nur noch editieren, wenn man weiss was man tut.
# VDR-OSD-Mitteilung
$svdrpsend MESG $m3uname$genre aktualisierung startet...
# Testen ob das Zielvertzeichnis schon existiert, sonst eins machen.
test -d $tempdir mkdir -p $tempdir
cd $tempdir
test -d $outputdir/$genre mkdir -p $outputdir/$genre
# Streamfiles holen, die den Link und den vollen Namen der Station enthält
get_streams () {
while read url; do
wget $url
done
}
# Meine veränderte Version von create_pls_2_files die sieht für die kenner wohl nicht sehr toll aus, aber sie funktioniert.
create_pls2_files () {
while read tempdata; do
streams=`cat ${tempdata} | awk 'match($1,"numberofentries=") { print $0 }' |sed 's/numberofentries=//' |awk '{print $1}'`
streamnr=0
while [ $streamnr -ne $streams ]
do
streamnr=$(( $streamnr + 1 ))
suchkriterium="File"$streamnr"="
cat $tempdata | awk 'match($1,"'"$suchkriterium"'") { print $0 }' \
| sed 's/'"$suchkriterium"'//' > $tempdata.temp
suchkriterium="Title"$streamnr"="
mv -f $tempdata.temp $outputdir/$genre/`cat $tempdata |\
awk 'match($1,"'"$suchkriterium"'") { print substr($0,1,86) }' |\
sed 's/Title.*) //' | sed 's/[()*,&!?~{}#:\`]//g' | \
sed 's/=//g' |sed 's/-=-//g' |sed '/^#/D;/^$/D' |sed 's/^$/_ffff_/g' |sed 's/^#/_/g' |sed 's/\ /_/g' | sed 's/\///g' |\
sed 's/__/_/g' | sed 's/+//g' | sed 's/-//g' |sed 's/__/_/g' | sed 's/\^//g' | sed 's/\[//g' | sed 's/\]//g' |sed 's/__/_/g' |\
sed 's/\b_//g' | sed 's/[|]//g' | sed 's/[..]/./g' | sed 's/[..]/./g' |\
awk '{print $1"'_"$streamnr"'"}'`.pls
done
done
}
# alte pls- und m3u-files des genre's löschen
rm -f $outputdir/$genre/*.pls
rm -f $outputdir/$m3uname$genre.m3u
# Die html-page saugen
wget -qO $tempdir/index.html "http://yp.shoutcast.com/directory/index.phtml?s="$(echo $genre | sed 's/ /%20/g')"&numresult=$anzahl&orderby=$sortierung&maxbitrate=$maxbitrate"
grep \.pls $tempdir/index.html | awk '!match($5,"Lucky") {print $5}' | sed 's/href="/shoutcast.com/g' | sed 's/"><img//g'>$tempdir/streamlist
# stream data besorgen
get_streams < $tempdir/streamlist
# .pls files erzeugen
ls $tempdir/shoutcast-playlist.pls* | create_pls2_files
# alle erzeugten streams anzeigen
#ls -all $outputdir/$genre/*.pls
# Aufräumen, was nicht mehr gebraucht wird.
$rm $tempdir/shoutcast-playlist.pls*
$rm $tempdir/index.html
$rm $tempdir/streamlist
# m3u-datei erstellen
cd $outputdir
for i in $genre/*.pls
do
echo $i >> $outputdir/$m3uname$genre.m3u
echo $m3uname-$genre.m3u: $i erstellt!
done
# einzelnes leeres pls-file löschen, kommt wahrscheinlich wegen "m3u-datei erstellen"
rm -f $outputdir/$genre/.pls
rm -f $tempdir/*.*
rm -f $tempdir/*
# VDR-OSD-Mitteilung
$svdrpsend MESG $m3uname$genre aktualisierung ist fertig!
ZitatOriginal von glendale
Leider kein Erfolg, hier nochmal das veränderte script:
Bei mir funktioniert dein gepostete Script mit der Änderung, allerdings habe ich kein Linvdr.....
Starte doch mal aus der Konsole dein Script mit z.B.:
<dein Scriptname> Top10 10
Was für einen Output erhältst du dann ?
Gruß,
Chuck
...hmm, habe ich versucht aber nicht gestartet bekommen. Wie würdest Du es starten ?
Danke.
Andi
ZitatOriginal von glendale
...hmm, habe ich versucht aber nicht gestartet bekommen. Wie würdest Du es starten ?i
Ich würde es so starten:
Allerdings dürfte der Pfad und ggf. der Scriptname bei dir anders sein.
Ist das Script bei dir überhaupt ausführbar?
Gruß,
Chuck
Sieht dann so aus.....hoffe es war nicht total blöd....g*
/scripts/shoutcast2vdr/shoutcast2vdr-0.0.8
-rwxr--r-- 1 linvdr root 6.8k Sep 9 13:14 shoutcast2vdr
-rwxrwx--t 1 root root 1.6k Mar 2 2007 shoutcastdel
mahlzeit:/etc/vdr/scripts/shoutcast2vdr# chmod 755 shoutcast2vdr-0.0.
mahlzeit:/etc/vdr/scripts/shoutcast2vdr# shoutcast2vdr-0.0.8
-bash: shoutcast2vdr-0.0.8: command not found
mahlzeit:/etc/vdr/scripts/shoutcast2vdr# shoutcast2vdr-0.0.8 Top10 10
-bash: shoutcast2vdr-0.0.8: command not found
mahlzeit:/etc/vdr/scripts/shoutcast2vdr#
mahlzeit:/etc/vdr/scripts/shoutcast2vdr# chmod 755 shoutcast2vdr-0.0.8
mahlzeit:/etc/vdr/scripts/shoutcast2vdr# shoutcast2vdr-0.0.8 Top10 10
-bash: shoutcast2vdr-0.0.8: command not found
ZitatOriginal von glendale
mahlzeit:/etc/vdr/scripts/shoutcast2vdr# chmod 755 shoutcast2vdr-0.0.8
mahlzeit:/etc/vdr/scripts/shoutcast2vdr# shoutcast2vdr-0.0.8 Top10 10
-bash: shoutcast2vdr-0.0.8: command not found
Entweder so:
oder wenn du im gleichen Verzeichnis bist:
Gruß,
Chuck
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!