2016-04-21 78 views
0

У меня есть веб-сервер VPS с установленным PHP и у вас есть несколько папок со звукозаписью из школы. Я хотел бы генерировать RSS-канал для каждой папки, перечисляя файлы .mp3 в алфавитном порядке (поскольку они содержат префикс числа, например 001-filename). Есть ли способ сделать это в настоящее время? Я нашел эти 2 скрипта онлайн, но ни один из них, похоже, не работает для меня.Создайте автоматическую RSS-ленту из папки сервера

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

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

N ° 2 кажется наиболее простой сценарий, но если я изменить переменные и загрузить его в соответствующую папку, она не кажется, Работа. Это результат я получаю навигации на мою страницу:

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

Это мой PHP -версия PHP 5.6.17-0 + deb8u1 (кли) (построен: 13 января 2016 9:10:12)

Мой конечный результат должен быть таким:

website.com/chemistry/ иметь RSS-канал для всех химических аудио файлов

website.com/english/ имеют RSS-канал для всех английских аудио файлов

ответ

0

Начните с оригинального сценария github, сохраните его в файле (с расширением .php) и загрузите его на свой сервер, чтобы убедиться, что он работает как есть. Я получаю следующее (в Chrome) (я изменил название сайта на example.com, так что я мог бы разместить его здесь):

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

Если это работает, попробуйте заменить <?= '?'; ?> с <?php echo '?'; ?>. Сценарий из github включает php-код, смешанный с XML, и ваш вывод предполагает, что что-то (проблема синтаксиса, отсутствует <?php и т. Д.) Переключила его с php-mode на xml, когда он не был предназначен.

+0

Я пробовал загрузить его и получил эту ошибку: 0) {$ files [] ['name'] = $ file; $ files [] ['timestamp'] = filectime ($ file); }} closedir ($ dir); // natcasesort ($ files); - мы будем использовать даты и время для сортировки списка. ($ i = 0; $ i \ n "; echo" \t \ n "; echo" \t ". $ feedBaseURL. $ files [$ i] ['name']." \ n "; echo" \t ". $ feedBaseURL. $ files [$ i] ['name']. "\ n"; // \t echo "\t". date ("DM j G: i: s TY", $ files [$ i] ['timestamp ']). "\ n"; // \t echo "\t". $ files [$ i] [' timestamp ']. "\ n"; echo "\ n";}}}?> – Marw

+0

Если я делаю замена, которую вы предлагаете, я получаю ту же ошибку. Также, используя Chrome, возможно, что-то испортилось с этим VPS. – Marw

+0

Мой текстовый редактор предлагает, чтобы был открытый знак меньше, попытался удалить это также, на этот раз я получаю другую ошибку:? xml version = "1.0"?> 0) {$ files [] ['name'] = $ file; $ files [] ['timestamp'] = filectime ($ file);}} closedir ($ dir); // natcasesort ($ files); - мы будем использовать даты и время для сортировки списка. for ($ i = 0; $ i \ n "; echo" \t \ п "; echo "\t". $ feedBaseURL. $ files [$ i] ['name']. "\ П"; echo "\t". $ feedBaseURL. $ files [$ i] ['name']. "\ П"; // \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

Замените каждое начало любого php-кода от <? до <?php, а затем оно будет работать. Парсер XML предлагает, что тег <? отмечает начало объявления XML.

0

Резюме:

Вот что я должен был сделать, чтобы сделать работу скрипта GitHub.

Прежде всего, вам необходимо иметь соответствующие расширения.

Линия 14:$allowed_ext = ".mp4,.MP4,.mp3,.MP3";

Убедитесь, что вы есть . или некоторый характер (даже может быть *) в передней части первого расширения.

Пример: $allowed_ext = ".mp3";

Что происходит это strpos(), который проверяет расширение файла проверки, чтобы убедиться, что mp3 в списке и возвращает позицию. Без . спереди он вернет 0, если это первое расширение, а код больше 0, >0, поэтому он не вернет никаких результатов, и вы пропустите все файлы, у которых есть самое первое добавленное расширение.

Вторая вещь, которую я делал, заключалась в том, чтобы удалить файлы, зависящие от регистра.

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

Это автоматически делает расширение верхнего регистра так, имеющего ".mp3, .MP3" для списка расширений является излишним и довольно хорошо игнорирует расширение "mp3", так как он в нижнем регистре.

Вот мой пересмотренный line 32. Я заставил переменную $allowed_ext быть верхним регистром в strpos, чтобы совместить силу скриптов переменной $ext и быть верхним регистром.

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

 Смежные вопросы

  • Нет связанных вопросов^_^