1

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

  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); } } closeir($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 T Y", $files[$i]['timestamp']) ." \n"; // echo " " . $files[$i]['timestamp'] ."\n"; echo " \n"; } } } ?>

这是我的 php 版本 PHP 5.6.17-0+deb8u1 (cli)(构建时间:2016 年 1 月 13 日 09:10:12)

我的最终结果应该是这样的:

website.com/chemistry/ 有所有化学音频文件的 RSS 提要

website.com/english/ 有所有英文音频文件的 RSS 提要

4

4 回答 4

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)  
于 2016-11-22T19:00:36.290 回答
0

将任何出现的php代码的开头替换为<?to <?php,然后它就可以工作了。XML 解析器建议<?标记标记 XML 声明的开始。

于 2016-08-11T12:19:17.143 回答
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-mode 切换到 xml。

于 2016-04-21T14:53:33.960 回答
0

该脚本是为 Microsoft 设置的,全部大写。此外,如果你得到一个没有扩展名的文件,它会失败,所以我在第 30 行做了以下更改

    $ext = pathinfo($sub.$file, PATHINFO_EXTENSION);

    if ( empty($ext)) { $ext = ".bad";}

这确保了扩展永远不会为空,并且它可以看到非 MS 服务器上的文件。

于 2021-12-31T21:54:43.943 回答