Создать автоматический канал RSS из папки на сервере

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

  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); — мы будем использовать даты и время для сортировки списка. for ($ i = 0; $ i \ n «; echo» \ n «; echo» «. $ feedBaseURL. $ files [$ i] [‘name’].» \ n «; echo» «. $ feedBaseURL. $ files [$ i] [‘name’]. «\ n»; // echo «». date («DM j G: i: s TY», $ files [$ i] [‘timestamp’]). » \ n «; // echo» «. $ files [$ i] [‘timestamp’].» \ n «; echo» \ n «;}}}?>

Это моя php-версия
PHP 5.6.17-0 + deb8u1 (cli) (сборка: 13 января 2016 г., 09: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-режима в xml, когда это не было задумано.

0

Другие решения

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

0

Резюме:

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

Для начала нужно иметь правильные расширения.

Строка 14: $allowed_ext = ".mp4,.MP4,.mp3,.MP3";

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

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

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

Во-вторых, я покончил с расширениями файлов с учетом регистра.

Линия 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)
0
По вопросам рекламы [email protected]