Streamripper nahraje na konec každého souboru i začátek další skladby.
Takže se to musí v editoru useknout a do následující skladby zase připojit.
Při větším počtu souborů obrovská otravná práce.
Autor článku to neví nebo to neuvedl schválně ?
Mimochodem, opravte si v článku chyby.
Celkově úroveň článku nevalná.
Používám Streamripper už několik let a bez jediného problému. Pravda je, že občas se na konec písně přimotá začátek něčeho jiného, ale není to pravidlem. Streamripper ukončí rippování po změně ID písně a pokud to přijde pozdě z vysílání, tak se pozdě ukončí.. nebral bych to jako chybu softwaru.
Jinak script proč ne, ale pokud máte vypozorované pořady typu hitparády, živé koncetry a pod. které jsou vysílané pravidelně bohatě postačí jen zápis do cronu a vše se objeví v domovském adresáři.
55 19 * * 3 /usr/bin/streamripper http://adresa -l 3600 1>/dev/null
Asi pred mesicem jsem resil presne ten samy problem jako autor clanku. Nabizim alternativni skript pro ty, ktere (tak jako mne) nebavi hrabat se v cronu:
#!/bin/sh
# The next line restarts with tclsh.\
exec tclsh "$0" ${1+"$@"}
# station definitions
set station(praha) {http://icecast5.play.cz:8000/cro2-128.mp3}
set station(vltava) {http://icecast5.play.cz:8000/cro3-128.mp3}
set station(wave) {http://icecast5.play.cz:8000/crowave-128.mp3}
set station(radio1) {http://netshow.play.cz:8000/radio1.mp3}
set station(humor) {http://mp3stream4.abradio.cz:8000/humor128.mp3}
set destination {~/Downloads/}
set downloadProgram {/usr/bin/streamripper}
set tmpfile {/tmp/.atjob}
# input parameters
if { $argc != 3 } {
puts "The radio.tcl script requires the following input parameters:"
puts " - radio station: \[ [array names station] \]"
puts " - start time: \[ examples: Mon12:30 or 18:45 \]"
puts " - duration: \[ example: 0:30 \]"
puts "Example: radio.tcl praha Mon20:00 1:30"
exit
} else {
set inpStation [lindex $argv 0]
set inpStartTime [lindex $argv 1]
set inpDuration [lindex $argv 2]
}
# create atjob file
if { [catch {open $tmpfile w} atJobfileId] } {
puts "Could not open $tmpfile for writing\n"
exit
}
# create destination directory
if [file isdirectory $destination] {
puts "INFO: Directory $destination already exists"
} else {
file mkdir $destination
puts "INFO: Creating directory $destination"
}
# get current date
set currDay [clock format [clock seconds] -format %a]
# calculate start time
if [regexp {^(Mon|Tue|Wed|Thu|Fri|Sat|Sun)*([0-2]*[0-9]):([0-5][0-9])$} $inpStartTime {} dStart hStart mStart] {
puts "INFO: Start time: $dStart ${hStart}:${mStart}"
} else {
puts "ERROR: Start time format not recognized ( $inpStartTime )"
exit
}
# calculate length
if [regexp {^([0-3]*[0-9]):([0-5][0-9])$} $inpDuration {} h m] {
puts "INFO: Duration: ${h}:${m} "
set length [expr ($m + ($h * 60)) * 60]
puts "INFO: Duration: ${length} \[seconds\]"
} else {
puts "ERROR: Duration format not recognized ( $inpDuration )"
exit
}
# main loop
foreach i [array names station] {
if {$i == $inpStation} {
puts "INFO: Found station $i ( $station($i) )"
puts "INFO: writing $downloadProgram $station($i) -d $destination -D %d_%S -l $length to $tmpfile"
puts $atJobfileId "$downloadProgram $station($i) -d $destination -D %d_%S -l $length"
puts "INFO: running: at ${hStart}:${mStart} $dStart < $tmpfile"
close $atJobfileId
puts "INFO: closing ${destination}/atjob"
set runcmd [list exec at "${hStart}:${mStart}" $dStart \< "$tmpfile"]
if {[catch $runcmd res]} {
puts "INFO: $runcmd: $res"
}
exit
}
}
puts "ERROR: Station name not recognized ( $inpStation )"
Zdravím, moc pěkný skriptík, je vidět, že si skriptování užíváte.Líbí se mi, jak jste vyřešil seznam oblíbených rádií a spouštění přes parametr. Řeší ale spuštění 1x v určený čas - to je dobré pro nahrání určitého pořadu a je samozřejmě zbytečné to dávat do CRONU. Já si pravidelným spouštěním naplňuji archiv o nové skladby pro offline poslech. Děkuji za inspiraci.
Článek se mi moc líbí.
Vadí mi, stupidní názory žebráků typu "Celkově úroveň článku nevalná" z prvního názoru.
Autor přinesl zajímavý článek s množstvím zajímavých poznatků, podělil se o své znalosti. Takového přístupu si moc Vážím.
@Autor prvního názoru:A když neumím poděkovat držím hubu.
Tom Jurman
Děkuji autorovi za článek.
Bez něj bych neobjevil nový svět.
GUI StreamRipStar se mi nespustilo (jen vypsalo irelevantní věci do logu).
Naopak GUI Streamtastic (taktéž v Javě) funguje navýbornou. Lze jej stáhnout z https://launchpad.net/streamtastic
Na zkoušku jsem nechal asi den nahrávat zaráz 20 rádií. Výsledek je cca 5000 (otagovaných) skladeb a celé to proběhlo bez zádrhelů. (hurá, bude internetové rádio v mobilu bez využití mobilního internetu!)
Streamtastic umožňuje nastavit různé chování: kolik skladeb přeskočit při začátku nahrávání (má smysl přeskočit první nekompletní skladbu), jak se chovat při duplicitních skladbách, jakou verzi ID3 použít atd.
Má integrovaný seznam Shoutcast a Icecast, umožňuje importovat přímo URL a má funkci oblíbených položek.
Těm, kterým nevyhovuje/nefunguje StreamRipStar, mohu doporučit.
... povedlo se někomu z Vás ripnout něco z českých rádií? Zkoušem kdejaké URL, ale vždy mi pouze bobtná 1 soubor v adresáři incomplete a jinak nic ;-( Zahraniční rádia jsou ok.
Máte někdo url českých rádií, která fungují? Z tohoto mě například nic nejde ;-(
http://oviradio.ic.cz/wp-content/uploads/fm-radio-praha.txt
Díky případně za info.
Česká rádia většinou vysílají pouze kontinuelní MPEG stream (TS) bez toho aby to oddělovaly a vysílaly dodatečné informace.Záleží na nastavení vysílání. Informace jak to např. dělá ČRo je zde: http://www.rozhlas.cz/leonardo/studio/_zprava/icecast--191015.