Scripts
Podcast downloader 1.0
Met dit script kun je podcasts downloaden. Dit is handig als je lokaal een NAS hebt draaien die PHP ondersteund, en je wilt graag dat hij zelf de podcasts download. En dan is het natuurlijk helemaal mooi als je hem in een cronjob zet waardoor je helemaal niets meer hoeft de doen. Getest op een Synology DS207+
podcast-downloader-10
<?
// PHP podcast downloader
// Vul in deze array je favoriete feeds in.
$feeds = array('http://www.teleac.nl/radio/xml/rss.jsp?page=134903',
'http://tros.nl/index.php?id=podcast&podcastID=1');
// Hoeveel uitzendingen terug, moeten er per feed gedownload worden
$max = 3;
// Bestemmingsmap
$bestemming = 'Downloads';
// Onder deze lijn niets wijzigen, zolang je niet weet wat je doet...
// ===========================================
// D.m.v. een foreach alle feeds controleren
foreach($feeds as $feeds){
// Een xml feed ophalen
$xml = simplexml_load_file($feeds);
// Alle uitzendingen in een loop weergeven
foreach($xml->channel->item as $item)
{
// teller mee laten lopen voor het maximum;
$count = $count+1;
if($count==$max+1){break;}
// Bestemmingsmap aanmaken als deze niet bestaat
if (!is_dir($bestemming.'/')){ mkdir($bestemming.'/', 0777);}
// Naam en map genereren:
$bestandsnaam = $item->title;
$map = $xml->channel->title;
$pad = $bestemming.'/'.$map.'/'.$bestandsnaam.'.mp3';
// Controleren of hij niet al eerder gedownload is.
if (file_exists($pad)) {
// Reeds gedownload
}else{
// Nog niet gedownload
echo $bestandsnaam . ' downloaden...<br>';
// Map voor feed aanmaken
if (!is_dir("$bestemming/")){mkdir("$bestemming/", 0777);}
// Bestand downloaden
// Controleren op welke wijze de link is opgeslagen
if(!isset($item->enclosure['url'])){
$file = @file_get_contents($item->link);
}else{
$file = @file_get_contents($item->enclosure['url']);
}
echo 'Gedownload!<br>';
// Bestand opslaan
file_put_contents($pad, $file);
echo 'Klaar!<br><br>';
// 10 seconden wachten omdat anders het modem uitvalt.
sleep(10);
}
}
echo '<br><b>'.$map.'</b> is up-to-date<br><br>';
}
?>
Reacties
0