2016-04-21 15 views
0

J'ai un serveur web VPS avec PHP installé et j'ai plusieurs dossiers avec des enregistrements audio de l'école. Je voudrais générer un flux RSS pour chaque dossier, répertoriant les fichiers .mp3 dans l'ordre alphabétique (car ils contiennent un préfixe de numéro comme 001-nom de fichier). Y at-il un moyen de faire cela qui fonctionne actuellement? J'ai trouvé ces 2 scripts en ligne mais aucun d'eux ne semble fonctionner pour moi.Créer un flux RSS automatique à partir d'un dossier serveur

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

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

N ° 2 semble être le scénario le plus simple, mais si je modifier les variables et le télécharger dans le dossier approprié, il ne semble pas travail. Ceci est le résultat que je me naviguer sur ma page:

?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"; } } } ?>

Ceci est mon php -version PHP 5.6.17-0 + deb8u1 (cli) (construction: Jan 2016 09:10:12 13)

Mon résultat final devrait être le suivant:

website.com/chemistry/ ont un flux RSS pour tous les fichiers audio de chimie

website.com/english/ ont un flux RSS pour tous les fichiers audio anglais

Répondre

0

Commencez par prendre le script github original, enregistrez-le dans un fichier (avec une extension de .php) et téléchargez-le sur votre serveur pour être sûr qu'il fonctionne tel quel. Je reçois les éléments suivants (en Chrome) (j'ai changé le nom du site à example.com pour que je puisse poster ici):

<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> 

Si cela fonctionne, essayez de remplacer <?= '?'; ?> avec <?php echo '?'; ?>. Le script de github inclut du code php mélangé avec XML, et votre résultat suggère que quelque chose (problème de syntaxe, <?php manquant, etc.) l'a fait passer du mode php au format xml quand ce n'était pas prévu.

+0

J'ai essayé de le télécharger propre et j'ai obtenu cette erreur: 0) {$ files [] ['name'] = $ file; $ files [] ['timestamp'] = filectime ($ fichier); }} closedir ($ dir); // natcasesort ($ fichiers); - Nous allons utiliser les dates et les heures pour trier la liste. pour ($ i = 0; $ i \ n "; echo" \t \ n "; echo" \t ". $ feedBaseURL. $ fichiers [$ i] ['nom']." \ n "; echo" \t ". $ feedBaseURL. $ files [$ i] ['nom']. "\ n"; // \t echo "\t" .date ("DM j G: i: s TY", $ fichiers [$ i] ['horodatage ']). "\ n"; // \t echo "\t". $ files [$ i] [' horodatage ']. "\ n"; echo "\ n";}}}?> – Marw

+0

Si je fais le remplacement vous suggérer que je reçois la même erreur.Aussi en utilisant Chrome, peut-être quelque chose est foutu avec ce VPS – Marw

+0

Mon éditeur de texte suggère qu'il existe un signe moins ouvert, essayé de supprimer cela aussi, cette fois, je reçois une erreur différente:? xml version = "1.0"?> 0) {$ files [] ['nom'] = $ fichier; $ fichiers [] ['timestamp'] = filectime ($ fichier);}} closedir ($ dir); // natcasesort ($ files); - nous utiliserons les dates et les heures pour trier la liste pour ($ i = 0; $ i \ n "; echo" \t \ n "; echo "\t". $ feedBaseURL. $ files [$ i] ['nom']. "\ n"; echo "\t". $ feedBaseURL. $ files [$ i] ['nom']. "\ n"; // \t echo "\t". date ("D M j G: i: s T Y", $ files [$ i] ['timestamp']). "\ n"; // \t echo "\t". $ files [$ i] ['timestamp']. "\ n"; echo "\ n"; }}}?> – Marw

0

Remplacez chaque début de n'importe quelle occurrence de code php de <? à <?php, puis cela fonctionnera. L'analyseur XML suggère qu'une balise <? marque le début de la déclaration XML.

0

Résumé:

Voici ce que je devais faire pour rendre le travail de script GitHub.

Vous devez d'abord avoir les extensions appropriées.

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

Assurez-vous que vous avez un . ou d'un caractère (pourrait même être un *) à l'avant de la première extension.

Exemple: $allowed_ext = ".mp3";

Ce qui se passe est le strpos() qui vérifie l'extension du fichier est vérifié pour vous assurer que mp3 est dans la liste et renvoie la position. Sans le . à l'avant il renverra 0 s'il s'agit de la première extension et que le code a plus de 0, >0, donc il ne retournera aucun résultat et vous manquerez tous les fichiers qui ont cette toute première extension listée.

La deuxième chose que j'ai faite a été de supprimer les extensions de fichiers sensibles à la casse.

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

Il fait automatiquement l'extension majuscules afin d'avoir ".mp3, .MP3" pour la liste d'extension est redondant et ne tient pas compte assez bien l'extension "mp3" car il est minuscule.

Voici ma version révisée line 32. J'ai forcé la variable $allowed_ext à être en majuscule dans le strpos pour correspondre à la force de scripts de la variable $ext pour être également en majuscules.

if($file !== '.' && $file !== '..' && !is_dir($file) && strpos(strtoupper($allowed_ext), $ext)>0)