Podcast downloader 1.0

Door Daan Onbekend, 18 jaar geleden, 5.632x bekeken

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

PHP script bestanden

  1. podcast-downloader-10

 

Er zijn 9 reacties op 'Overig'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Hipska BE
Hipska BE
18 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
18 jaar geleden
 
0 +1 -0 -1
@Hipska Ik heb je tips doorgevoerd.
Maar wat is eigenlijk het voordeel van je laatste opmerking?
Jelmer -
Jelmer -
18 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
18 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
18 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
18 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


18 jaar geleden
 
0 +1 -0 -1
Iltar van der berg
iltar van der berg
18 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.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
 
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.

Inhoudsopgave

  1. podcast-downloader-10

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.