【问题标题】:Create an automatic RSS feed from a server folder从服务器文件夹创建自动 RSS 提要
【发布时间】:2016-08-14 19:23:58
【问题描述】:

我有一个安装了 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); } } 关闭($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) (内置: Jan 13 2016 09:10:12)

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

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

website.com/english/ 有一个所有英文音频文件的 RSS 源

【问题讨论】:

    标签: php rss podcast rss2


    【解决方案1】:

    首先获取原始 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>
    

    如果可行,请尝试将 &lt;?= '?'; ?&gt; 替换为 &lt;?php echo '?'; ?&gt; 。来自 github 的脚本包含与 XML 混合的 php 代码,并且您的输出表明某些东西(语法问题、缺少 &lt;?php 等)在不打算将其从 php-mode 切换到 xml 时。

    【讨论】:

    • 我尝试将其上传干净并收到此错误: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 TY", $files[$i]['timestamp']) ." \n"; // echo " " . $files[$i]['timestamp'] ."\n"; echo " \n"; } } } ?>
    • 如果我更换你建议我得到同样的错误。同样使用 Chrome,可能这个 VPS 出了点问题。
    • 我的文本编辑器提示有一个 open less 符号,也尝试将其删除,这次我得到一个不同的错误:?xml version="1.0"?> 0) { $files[] ['名称'] = $文件; $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 TY", $files[$i]['timestamp']) ." \n"; // echo " " . $files[$i]['timestamp'] ."\n"; echo " \n"; } } } ?>
    • 您的文件是否以扩展名“.php”命名(如“mytest.php”)?如果它以扩展名“.html”(如“mytest.html”)命名,那么它肯定无法正常工作。如果您的文件确实有扩展名“.php”,那么服务器上的 php 设置存在问题。
    • .php ,我猜我的 php 设置搞砸了,我会将这个对话转发给我的提供商,看看我们是否可以修复它。谢谢:)
    【解决方案2】:

    将所有出现的php代码从&lt;?替换为&lt;?php,然后它就可以工作了。 XML 解析器建议,&lt;? 标记标志着 XML 声明的开始。

    【讨论】:

      【解决方案3】:

      总结:

      这是我必须做的才能使 GitHub 脚本正常工作。

      首先你需要有合适的扩展。

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

      确保在第一个扩展名的前面有 . 或某个字符(甚至可能是 *)。

      示例$allowed_ext = ".mp3";

      检查文件扩展名的strpos() 正在检查以确保mp3 在列表中并返回位置。如果没有前面的.,它将返回0,如果它是第一个扩展名并且代码大于0,&gt;0,因此它将不返回任何结果,并且您会错过所有列出第一个扩展名的文件。

      我做的第二件事是取消区分大小写的文件扩展名。

      第 30 行$ext = strtoupper($path_info['extension']);

      它会自动将扩展名设为大写,因此将".mp3, .MP3" 用于扩展名列表是多余的,并且很好地忽略了"mp3" 扩展名,因为它是小写的。

      这是我修改后的line 32。我将strpos 中的$allowed_ext 变量强制为大写,以匹配$ext 变量的脚本强制也为大写。

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

      【讨论】:

        【解决方案4】:

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

            $ext = pathinfo($sub.$file, PATHINFO_EXTENSION);
        
            if ( empty($ext)) { $ext = ".bad";}
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-01-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-22
          • 1970-01-01
          • 2015-10-28
          • 2017-11-28
          相关资源
          最近更新 更多