Versio

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+

Gesponsorde koppelingen

BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  

PHP script bestanden

  1. podcast-downloader-10

 

9 reacties op 'Podcast downloader 1.0'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Hipska BE
Hipska BE
4 jaar geleden
 
0 +1 -0 -1
Lol @ "10 seconden wachten omdat anders het modem uitvalt." :-D

foreach($feed as $feed){ dit is gedoemt om ooit te mislukken.
Neem je instellingen array aub dan als $feeds. Hierdoor voorkom je fouten en ik vraag me trouwens af of het script zo wel meerdere feeds download.

En een laatste opmerking is: Haal je variabelen buiten quote's. En gebruik overal enkele quote's. $bestemming.'/'.$map.'/' is dus te prefereren.
Daan Onbekend
Daan Onbekend
4 jaar geleden
 
0 +1 -0 -1
@Hipska Ik heb je tips doorgevoerd.
Maar wat is eigenlijk het voordeel van je laatste opmerking?
Jelmer rrrr
Jelmer rrrr
4 jaar geleden
 
0 +1 -0 -1
Dat je goed kan onderscheiden wat variabelen zijn, en wat niet. En in het verlengde daarvan, wat potentieel gevoelig is voor gemene hacks, en wat niet :)
Remie
remie
4 jaar geleden
 
0 +1 -0 -1
Ik denk dat je van foreach($feeds as $feeds){ even foreach($feeds as $feed){(dus zonder s) van moet maken :P
Iltar van der berg
iltar van der berg
4 jaar geleden
 
0 +1 -0 -1
@hipska, mijn persoonlijke voorkeur voor zoiets:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
- $pad = $bestemming.'/'.$map.'/'.$bestandsnaam.mp3;
+
$pad = sprintf('%s/%s/%s.mp3', $bestemming, $map, $bestandsnaam);
?>


(hmm $bestandsnaam.mp3 ??? heb je wel getest?)
Daan Onbekend
Daan Onbekend
4 jaar geleden
 
0 +1 -0 -1
@Iltar,
Ik zie het, die .mp3 het ik overheengekeken met het buiten haakjes halen van de variabelen.

En wat is dan het voordeel van sprint?

/Edit, spint lijkt niet te bestaan:
(Sorry, but the function sprint is not in the online manual.)
Volgens php.net
Karl Karl
Karl Karl
4 jaar geleden
 
0 +1 -0 -1
Iltar van der berg
iltar van der berg
4 jaar geleden
 
0 +1 -0 -1
Ja sorry mijn fout, het is sprintf()

Edit:

Quote:
En wat is dan het voordeel van sprint?

sprintf heeft de mogelijkheid om variablen te inserten in de string. Als je een hoop variablen wilt inserten in een string, kan je het zo erg overzichtelijk houden.
Teun Beijers
Teun Beijers
4 jaar geleden
 
0 +1 -0 -1
Ik ben ff zo aardig geweest je script iets aan te passen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php
// Tijdslimiet uitzetten
set_time_limit(0);
// PHP podcast downloader
// Daan Middendorp
// Paypal donations: daanmidd at gmail.com


// Vul in deze array je favoriete feeds in.

$feeds   = array('Caz' => 'http://download.caz.nl/downloads/podcasts/rss.xml?feed=%2fdownloads%2fpodcasts%2fcaz_weekendmix_podcaz%2f');

// 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...
// ===========================================

echo 'Downloaden wordt gestart...'.chr(10).'---'.chr(10);
// D.m.v. een foreach alle feeds controleren
foreach($feeds as $feednaam => $feed){

    // Een xml feed ophalen
    $xml = simplexml_load_file($feed);
    
    //Count resetten
    $count = 0;

    // 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            = $feednaam;
        $pad             = sprintf('%s/%s/%s.mp3', $bestemming, $map, $bestandsnaam);
        $tempbestemming = sprintf('%s/%s',$bestemming,$map);
        // Controleren of hij niet al eerder gedownload is.
             if (file_exists($pad)) {
             // Reeds gedownload
             }else{
             // Nog niet gedownload
             echo $bestandsnaam . ' downloaden...'.chr(10);

                 // Map voor feed aanmaken
                 if (!is_dir("$tempbestemming/")){mkdir("$tempbestemming/", 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!'.chr(10);
         // Bestand opslaan
         file_put_contents($pad, $file);
         echo 'Klaar!'.chr(10).chr(10);
        }
    }

    echo '---'.chr(10);
    echo ''.$map.' is up-to-date';
}

?>

Nog niet alles is verbeterd, maar het is iig al een beginnetje(ik ga er nu ook niet meer aan verbeteren), je moet zelf maar controle of het echt mp3 is invoeren, voor je als .mp3 opslaat

Ik vind dat je zoiets trouwens in cmd moet runnen, daarom ook alle html code weg

Om te reageren heb je een account nodig en je moet ingelogd zijn.

  • Labels
  • Geen tags toegevoegd.
Get Adobe Flash player