Hifidelio-User.de

Das (inoffizielle!) Forum für Hifidelio-User
Aktuelle Zeit: 20.05.2018 13:41

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 33 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: PODCAST automatisiert runterladen
BeitragVerfasst: 13.04.2008 09:21 
Offline

Registriert: 02.06.2006 21:04
Beiträge: 52
Hallo Forum,

unter: http://www.lincgeek.org/bashpodder/ gibt es fertige Skripte um PODCASTS automatisiert runter zu laden und lokal abzulegen.

Diese Skriptversion

http://www.lincgeek.org/bashpodder/user ... ett_lytle/

wäre eine sehr gute Variante für den Fidel.

Allerdings funktioniert das Skript bei mir nicht einwandfrei und meine LINUX Kentnisse sind sehr gering....

Fehlermeldung:
./podcast.shell: expr: command not found

Wenn das Skript läuft, soll es bei mir bei Starten des Fidel ausgeführt werden und die Podcasts nach /audio/import/podcast/ ablegen

Möglicherweise hat ein LINUX / BASH Experte Lust und Zeit sich das Skript kurz anzuschauen und mir zu helfen, das wäre echt super nett ;-))

Bin mir sicher, dass das auch für andere hier eine schöne Erweiterung ist!

Gruß ans Forum


Hier das Skript:

#!/bin/bash

# Make script crontab friendly:
cd $(dirname $0)

# Delete any temp file:
rm -f temp.log

# Read the bp.conf file and wget any url not already in the podcast.log file:
while read podcast
do
number=`expr index "$podcast" @`
podcastURL=${podcast:$number}
file=$(/opt/wget/bin/wget -q $podcastURL -O - | tr '\r' '\n' | tr \' \" | sed -n 's/.*url="\([^"]*\)".*/\1/p')
for url in $file
do
echo $url >> temp.log
if ! grep "$url" podcast.log > /dev/null
then
datadir=${podcast:0:$number-1}
if test ! -d $datadir
then
mkdir $datadir
fi
/opt/wget/bin/wget -q -P $datadir "$url"
i="1"
while [ $i -ne 0 ]
do
i=`expr index "$url" \/`
url=${url:$i}
done
printf "../"$datadir"/"$url\\n >> "All_M3U"/$datadir".m3u"
printf "../"$datadir"/"$url\\n >> "All_M3U"/$(date +%Y-%m-%d).m3u
fi
done
done <bp>> temp.log
sort temp.log | uniq > podcast.log

*********************

Mustereintrag der Podcaststeuerdatei bp.conf:

baerenbude@http://podcast.wdr.de/radio/baerenbude.xml

*********************
Und die letzte Datei parse_enclosure.xsl

<xml>
<stylesheet>
<output>
<template>
<apply>
</template>
<template>
<value><text>
</text>
</template>
</stylesheet>

_________________
Fidel 500 GB; OS Version 2.3.18


Zuletzt geändert von gh3478 am 26.04.2009 17:11, insgesamt 2-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 13.04.2008 15:01 
Offline
Benutzeravatar

Registriert: 21.01.2007 12:47
Beiträge: 140
Wohnort: Bonn
Hi,

das Script nutzt (unnötigerweise) Programme, die auf dem HF nicht drauf sind. Außerdem kommt es mit Leerzeichen im Namen nicht klar und hat noch das Problem, daß erst ganz zum Schluß die Liste der geladenen Podcasts aktualisiert wird. Wenn man die Sachen nicht mehrfach runterladen will, dann darf man das Gerät also nicht vorzeitig abschalten.

Ich habe daraus mal eine geänderte Version gebaut:

Code:
#!/bin/bash

PATH=${PATH}:/opt/wget/bin

# Make script crontab friendly:
cd $(dirname $0)

# Read the bp.conf file and wget any url not already in the podcast.log file:
while read podcast; do
  wget -q "${podcast#*@}" -O - |
  tr '\r' '\n' |
  tr \' \" |
  sed -n 's/.*url="\([^"]*\)".*/\1\n/p' |
  while read url; do
    grep -q "${url}" podcast.log && continue

    datadir="${podcast%@*}"
    mkdir -p "${datadir}"
    wget -q -c -P "${datadir}" "$url"
    echo "${url}" >>podcast.log

    #url="${url##*/}"
    #printf "../${datadir}/${url}\n" >>"All_M3U/${datadir}.m3u"
    #printf "../${datadir}/${url}\n" >>"All_M3U/$(date +%Y-%m-%d).m3u"
  done
done < bp.conf

sort -u <podcast.log >podcast.log.new
mv podcast.log.new podcast.log

exit 0


Die bp.conf kann übernommen werden während parse_enclosure.xsl nicht benötigt wird. Script nach /audio/import/podcast kopieren, ausführbar machen und aufrufen. Beim ersten Mal fehlt podcast.log, da kommt eine Meldung.

Code:
root@hifideliopro:/audio/import/podcast# chmod 755 podcast.shell
root@hifideliopro:/audio/import/podcast# ./podcast.shell


Gruß,
Stefan

_________________
If Java had true garbage collection, most programs would delete themselves upon execution. (Robert Sewell)


Zuletzt geändert von Cenic am 22.05.2008 09:41, insgesamt 1-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 13.04.2008 18:23 
Offline
Moderator
Benutzeravatar

Registriert: 29.01.2005 00:43
Beiträge: 1755
Wohnort: CH, Bern
Tschou Stefan
Funktioniert tadellos, danke!
Gruss, Bergi

_________________
Was war ST-64 :?:


Nach oben
 Profil  
 
BeitragVerfasst: 14.04.2008 10:36 
Offline

Registriert: 02.06.2006 21:04
Beiträge: 52
Hallo Stefan,

danke für Deine Arbeit. Dein Skript läuft super gut.

Gruß

:D

_________________
Fidel 500 GB; OS Version 2.3.18


Nach oben
 Profil  
 
 Betreff des Beitrags: Schritt für Schritt für Anfänger
BeitragVerfasst: 18.05.2008 10:12 
Offline

Registriert: 05.03.2007 18:50
Beiträge: 25
kannst Du mir Schritt für Schritt erklären wie ich nun dieses Tool zum laufen bringe?

Ich habe eine Datei podcast.shell mit beschriebenem Inhalt erstellt und eine Datei bp.conf (mit den URL's meiner Podcasts), beides in den Import Ordner kopiert und anschliessend über Telnet die beiden Kommandos ausgeführt:
root@hifideliopro:/audio/import/podcast# chmod 755 podcast.shell
root@hifideliopro:/audio/import/podcast# ./podcast.shell
Die zweite Eingabe gibt indes nur eine Fehlermeldung. Ansonsten scheint nichts zu passieren?


Nach oben
 Profil  
 
BeitragVerfasst: 18.05.2008 15:29 
Offline
Benutzeravatar

Registriert: 21.01.2007 12:47
Beiträge: 140
Wohnort: Bonn
Hi,

DSM hat geschrieben:
Die zweite Eingabe gibt indes nur eine Fehlermeldung. Ansonsten scheint nichts zu passieren?


um unnötiges Rumraten zu vermeiden, wäre hier natürlich die genau Fehlermeldung sehr hilfreich gewesen :?

Ich tippe mal, daß du das Script unter Windows erstellt hast und deshalb dort am Zeilenende Zeichen vorkommen, mit denen Unix in Scripten nichts anfangen kann (die Fehlermeldung lauten in etwa "no such interpreter").

Gruß,
Stefan

_________________
If Java had true garbage collection, most programs would delete themselves upon execution. (Robert Sewell)


Nach oben
 Profil  
 
 Betreff des Beitrags: dem war so
BeitragVerfasst: 18.05.2008 19:35 
Offline

Registriert: 05.03.2007 18:50
Beiträge: 25
Danke für die rasche Antwort. Ja, dem war tatsächlich so. Habe die Dateien mit dem Editor erstellt. Nun habe ich alle Leerzeichen am Ende der Zeilen entfernt. Leider immer noch der gleiche Ablauf. Erster Befehlt gibt keine Rückmeldung, bei ./podcast.shell kommt dann:

bash: ./podcast.shell: bad interpreter: No such file or directory

man merkt wohl... ich habe absolut keine Ahnung davon...!


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 18.05.2008 20:10 
Offline
Benutzeravatar

Registriert: 21.01.2007 12:47
Beiträge: 140
Wohnort: Bonn
Hi,

das Problem sind nicht die Leerzeichen. Das DOS-Format der Dateien verwendet zwei Zeichen zu Kennzeichnung einer neuen Zeile (Wagenrücklauf und Zeilenvorschub, wie beim Fernschreiber früher). Während Unix normalerweise sehr flexibel ist, gibt es hier eine Stelle, wo das zum Problem wird. Die erste Zeile gibt nämlich das Programm an, mit dem dieses Script ausgeführt werden soll. So lassen sich Scripte von einem beliebigen Interpreter wie normale Programme starten. Da wird das zusätzliche Zeichen aber als Teil des Names gelesen und weil es dieses Programm dann nicht gibt, kommt der Fehler.

Einfach nochmal in das entsprechende Verzeichnis wechseln, dann auf dem HF wie angegeben konvertieren, wieder ausführbar machen und dann starten:

Code:
tr -d '\r' <podcast.shell >podcast
chmod 755 podcast
./podcast


Dann sollte es eigentlich gehen. Das alte Script podcast.shell kannst du danach löschen, wenn alles funktioniert.

Gruß,
Stefan

_________________
If Java had true garbage collection, most programs would delete themselves upon execution. (Robert Sewell)


Nach oben
 Profil  
 
 Betreff des Beitrags: macht kein Wank
BeitragVerfasst: 19.05.2008 18:39 
Offline

Registriert: 05.03.2007 18:50
Beiträge: 25
Hallo Stefan

Deine Tipps habe soweit ohne Fehlermeldung funktioniert. Beim Aufruf ./podcast erscheint dann:
./podcast: podcast.log: No such file or directory
mv: unable to rename 'podcast.log.new': No such file or directory

Dieser Fehlermeldung scheint ja aber klar, da podcast.log noch nicht existiert.

Das Problem: der HIFI lädt trotzdem nichts herunter (die abonierten Podcast habe ich in der datei bp.conf eingetragen). Es sind keine neuen Dateien in Musikordner oder Importordner zu finden.

Auch bei einem erneuten Aufruf ./podcast erscheint dieselbe Fehlermeldung.
Sicherheitshalber habe ich deinen Code auch auf bp.con angewandt => keine Änderung. Auch nach einem Neustart passiert nichts.

Gehe ich richtigerweise davon aus, dass dieses Skript dann automatisch beim Start des HIFI die Podcast runterladen sollte?

hmm... was lässt sich da noch tun?

PS:
Softwareversion: 2.3.21 PRO
Linux 2.4.26
Zudem habe ich das Tool, welches automatisch die Covers runterlädt und das MOD zur Freigabe des Musikordners im Netzwerk installiert.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 21.05.2008 18:15 
Offline
Benutzeravatar

Registriert: 21.01.2007 12:47
Beiträge: 140
Wohnort: Bonn
Hi,

die Fehlermeldung ist normal, solange noch kein Podcast geladen wurde. Das hatte ich ja beim Posten des Scriptes dazugeschrieben. Wenn bei nichts runtergeladen wird, dann sehe ich erstmal zwei Fehlerquellen:
  • Die Netzwerkanbindung ist nicht ok. Das kannst du leicht mit dem Internetradio prüfen. Wenn das funktioniert, dann soweit alles klar.
  • Die URL zeigt auf ein Podcast-XML (oder sonstwohin), was das Script nicht interpretieren kann. Das Orginalscript erwartet unter der angegebenen URL ein bestimmtes XML-Format und extrahiert mit einfachen Mitteln die URL der eigentlichen Audiodatei da raus. Das Shell-Script hat verständlicherweise keinen kompletten XML-Parser zur Verfügung und könnte wohl nicht immer funktionieren. Da habe ich aber auch nur nachgebaut, was vorher schon als Funktionalität drin war. Vielleicht kannst du mal einen Eintrag aus deiner bp.conf posten (die Datei heißt bp.conf, ich hoffe du hast das f nur in deinem Posting vergessen)?


Gruß,
Stefan

_________________
If Java had true garbage collection, most programs would delete themselves upon execution. (Robert Sewell)


Nach oben
 Profil  
 
BeitragVerfasst: 21.05.2008 19:19 
Offline

Registriert: 05.03.2007 18:50
Beiträge: 25
Salut Stefan

Internetanbindung funktioniert tadellos...
Ja, das "F" habe ich nur im Post vergessen...

folgende Varianten habe ich für bp.conf bereits probiert:
1. echo@http://pod.drs.ch/echo_der_zeit_mpx.xml
2. gleich wie 1. aber mit Deinem Code konvertiert
3. echo_der_zeit@http://pod.drs.ch/echo_der_zeit_mpx.xml
4. gleich wie 3. aber mit Deinem Code konvertiert
5. http://pod.drs.ch/echo_der_zeit_mpx.xml

Für den Fall, dass die DRS Podcast nicht funktionieren, habe ich einen SWR2 Podcast hinzugefügt.
6. echo@http://pod.drs.ch/echo_der_zeit_mpx.xml
aula@http://www1.swr.de/podcast/xml/swr2/aula.xml
7. gleich wie 6. aber mit Deinem Code konvertiert

Ich habe die Datei jeweils mit dem Windows Editor bearbeitet und mit ANSI Codierung gespeichert, zudem (wie bereits geschrieben) jeweils auch mit Deinem Code konvertiert...


Nach oben
 Profil  
 
 Betreff des Beitrags: was ich noch vergessen habe...
BeitragVerfasst: 21.05.2008 19:23 
Offline

Registriert: 05.03.2007 18:50
Beiträge: 25
seit ich zwei Podcast eingetragen habe kommt folgende Fehlermeldung:
wget: invalid option --0

zudem funktionierts auch mit dem SWR2 Podcast alleine nicht (zwar ohne Fehlermeldung aber kein Download)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 21.05.2008 20:41 
Offline
Benutzeravatar

Registriert: 21.01.2007 12:47
Beiträge: 140
Wohnort: Bonn
Hi,

die Fehlermeldung muß noch an einem Tippfehler liegen: in Zeile 10 des Scripts (das erste Auftreten des wget-Kommandos) enthält '-O -', d.h. Minus, großes O wie Otto, dann Leerzeichen und nochmal ein Minus. Am besten per Copy&Paste übernehmen. Da wird irgendwas nicht stimmen.

Der Rest liegt vermutlich wieder an den Zeilenvorschüben. Wenn du nur einen Feed eingetragen hast, dann war da vermutlich überhaupt kein Zeilenvorschub am Ende der Zeile und das wird dann ignoriert. Mit dem Unix-Standardeditor kann man sowas nur mit Tricks erzeugen, da da immer ein Zeilenvorschub am Zeilenende dabei ist. Mein Hilfskommando löscht auch nur das überzählige Zeichen der DOS-Variante, aber wenn da überhaupt kein Zeilenvorschub in der Datei ist, dann wird da auch keine neuer erzeugt.

Gruß,
Stefan

_________________
If Java had true garbage collection, most programs would delete themselves upon execution. (Robert Sewell)


Nach oben
 Profil  
 
 Betreff des Beitrags: Super!
BeitragVerfasst: 21.05.2008 21:51 
Offline

Registriert: 05.03.2007 18:50
Beiträge: 25
Herzlichen Dank für Deine grosse Hilfe.
Der Download von bspw. SWR Podcast läuft nun tip-top.

Es bleibt nur ein grosses Problem: die DRS Podcasts, welche ich eigentlich ursptünglich laden wollte, scheinen nicht zu funktionieren, bspw.:
Echo_der_Zeit@http://pod.drs.ch/echo_der_zeit_mpx.xml
Doppelpunkt@http://pod.drs.ch/doppelpunkt_mpx.xml

Tja, da lässt sich wohl nichts mehr machen. Wird Zeit, dass DRS an seiner Kompatibilität arbeitet... :-)

Jedenfalls trotzdem: vielen Dank Stefan...


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 22.05.2008 09:44 
Offline
Benutzeravatar

Registriert: 21.01.2007 12:47
Beiträge: 140
Wohnort: Bonn
Hi,

ich glaube, daß liegt wieder am fehlenden Zeilenvorschub, aber diesmal ist mein Script schuld :oops:

Ich habe das Script weiter oben mal angepaßt. Die Änderung liegt in einem zusätzlichen \n ziemlich am Ende der Zeile, die mit sed anfängt. Probier es mal damit aus.

Gruß,
Stefan

_________________
If Java had true garbage collection, most programs would delete themselves upon execution. (Robert Sewell)


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 33 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de