2016-04-21 95 views
0

Ich habe einen VPS-Webserver mit PHP installiert und habe mehrere Ordner mit Audio-Aufnahmen von der Schule. Ich möchte für jeden Ordner einen RSS-Feed erstellen, der die MP3-Dateien in alphabetischer Reihenfolge auflistet (da sie ein Nummernpräfix wie 001-Dateiname enthalten). Gibt es eine Möglichkeit, dies zu tun, die derzeit funktioniert? Ich habe diese 2 Skripte online gefunden, aber keine von ihnen scheint für mich zu funktionieren.Erstellen Sie einen automatischen RSS-Feed von einem Server-Ordner

  1. http://dircaster.org/index.html

  2. https://gist.github.com/vsoch/4898025919365bf23b6f

N ° 2 scheint, wie die meisten einfachen Skript, aber wenn ich die Variablen bearbeiten und in den entsprechenden Ordner hochzuladen, es scheint nicht zu Arbeit. Dies ist das Ergebnis, das ich auf meine Seite bekommen Navigation:

?xml version="1.0"?> 0) { $files[]['name'] = $file; $files[]['timestamp'] = filectime($file); } } closedir($dir); // natcasesort($files); - we will use dates and times to sort the list. for($i=0; $i\n"; echo " \n"; echo " ". $feedBaseURL . $files[$i]['name'] . "\n"; echo " ". $feedBaseURL . $files[$i]['name'] . "\n"; // echo " ". date("D M j G:i:s T Y", $files[$i]['timestamp']) ."\n"; // echo " " . $files[$i]['timestamp'] ."\n"; echo " \n"; } } } ?>

Das ist mein PHP ist -Version PHP 5.6.17-0 + deb8u1 (cli) (gebaut: 13. Januar 2016 09.10.12)

Mein Endergebnis sollte sein:

website.com/chemistry/ einen RSS-Feed

für alle Chemie Audio-Dateien haben website.com/english/

für alle Englisch Audio-Dateien einen RSS-Feed haben

Antwort

0

Beginne damit, das originale GitHub-Skript zu nehmen, speichere es in einer Datei (mit der Erweiterung .php) und lade es auf deinen Server hoch, um sicherzugehen, dass es so funktioniert wie es ist. Ich erhalte die folgende (in Chrome) (ich den Namen der Website zu example.com geändert, damit ich es hier posten könnte):

<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"> 
    <channel> 
     <title>My Audio Feed</title> 
     <link>http://www.example.com/audio</link> 
     <description>Feed for the my audio files in some server folder</description> 
     <atom:link href="http://gogglesoptional.com/bloopers" rel="self" type="application/rss+xml"/> 
    </channel> 
</rss> 

Wenn das funktioniert, versuchen <?= '?'; ?> mit <?php echo '?'; ?> ersetzen. Das Skript von github enthält PHP-Code gemischt mit XML, und Ihre Ausgabe schlägt vor, dass etwas (Syntaxproblem, fehlende <?php, etc.) es von PHP-Modus zu XML, wenn es nicht beabsichtigt war.

+0

Ich habe versucht, es sauber zu laden und habe diesen Fehler: 0) {$ files [] ['name'] = $ file; $ files [] ['Zeitstempel'] = Dateizeit ($ Datei); }} closedir ($ dir); // natcasesort ($ Dateien); - Wir werden Daten und Zeiten verwenden, um die Liste zu sortieren. für ($ i = 0; $ i \ n "; Echo" \t \ n "; Echo" \t ". $ feedBaseURL. $ Dateien [$ i] ['Name']." \ n "; echo" \t ". $ feedBaseURL. $ files [$ i] ['name']. "\ n"; // \t echo "\t". datum ("DM j G: ich: s TY", $ files [$ i] ['timestamp ']). "\ n"; // \t echo "\t". $ files [$ i] [' zeitstempel ']. "\ n"; echo "\ n";}}?> – Marw

+0

Wenn ich das mache Ersatz, den Sie vorschlagen, bekomme ich den gleichen Fehler. Auch mit Chrome, ist vielleicht etwas mit diesem VPS verwirrt. – Marw

+0

Mein Texteditor schlägt vor, dass es ein offenes weniger Zeichen gibt, versucht, das auch zu entfernen, dieses Mal erhalte ich einen anderen Fehler:? xml version = "1.0"?> 0) {$ files [] ['name'] = $ datei; $ dateien [] ['zeitmarke'] = filectime ($ datei);}} closedir ($ dir); // natcastsort ($ files); - Wir werden Daten und Zeiten verwenden, um die Liste zu sortieren. für ($ i = 0; $ i \ n "; echo" \t \ n "; echo "\t". $ feedBaseURL. $ files [$ i] ['name']. "\ n"; echo "\t". $ feedBaseURL. $ files [$ i] ['name']. "\ n"; // \t echo "\t". Datum ("D M j G: i: s T Y", $ Dateien [$ i] ['Zeitstempel']). "\ n"; // \t echo "\t". $ files [$ i] ['Zeitstempel']. "\ n"; Echo "\ n"; }}}?> – Marw

0

Ersetzen Sie jeden Anfang eines Auftretens von PHP-Code von <? zu <?php, und dann wird es funktionieren. Der XML-Parser schlägt vor, dass ein <?-Tag den Anfang der XML-Deklaration markiert.

0

Zusammenfassung:

Hier ist, was ich tun musste, GitHub Skript Arbeit zu machen.

Zuerst müssen Sie die richtigen Erweiterungen haben. 14

Line:$allowed_ext = ".mp4,.MP4,.mp3,.MP3";

Stellen Sie sicher, Sie haben ein . oder einige Zeichen in der Vorderseite der ersten Verlängerung (könnte auch ein * sein).

Beispiel: $allowed_ext = ".mp3";

Was passiert, ist die strpos(), die für die Dateierweiterung prüft prüft, um sicherzustellen, dass mp3 in der Liste enthalten ist, und es gibt die Position. Ohne die . vorne wird es 0 zurückgeben, wenn es die erste Erweiterung ist und der Code größer als 0 war, >0, so wird es keine Ergebnisse zurückgeben und Sie verpassen alle Dateien, die diese erste Erweiterung aufgeführt haben.

Die zweite Sache, die ich tat, war weg mit case sensitive Dateierweiterungen.

Linie 30: $ext = strtoupper($path_info['extension']);

Es macht automatisch die Erweiterung obere Gehäuse so ".mp3, .MP3" für die Erweiterungsliste mit redundant ist und ziemlich ignoriert auch die "mp3" Erweiterung, da sie Kleinschreibung ist.

Hier ist meine überarbeitete line 32. Ich zwang die Variable $allowed_ext, in der strpos Großbuchstabe zu sein, um die Drehbuchkraft der $ext Variable zu entsprechen, um auch groß zu sein.