从服务器文件夹

时间:2016-04-21 14:09:52

标签: php rss podcast rss2

我有一台安装了PHP的VPS网络服务器,并且有几个文件夹,包含来自学校的录音。我想为每个文件夹生成一个RSS提要,按字母顺序列出.mp3文件(因为它们包含像001-filename这样的数字前缀)。有没有办法做到这一点目前有效?我在网上发现了这两个脚本,但似乎没有一个适合我。

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

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

  3. 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 -version PHP 5.6.17-0 + deb8u1(cli)(建于2016年1月13日09:10:12)

    我的最终结果应该是:

    website.com/chemistry/为所有化学音频文件提供RSS源

    website.com/english/拥有所有英语音频文件的RSS源

3 个答案:

答案 0 :(得分: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的脚本包含与XML混合的PHP代码,并且您的输出表明某些内容(语法问题,缺少<?php等)在没有预期的情况下将其从php模式切换到xml。

答案 1 :(得分:0)

将任何出现的PHP代码的每个开头从<?替换为<?php,然后它才能正常工作。 XML解析器建议<?标记标记XML声明的开头。

答案 2 :(得分: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)