lukaswhite/podcast-feed-validator

用于验证播客订阅源的PHP库

1.1 2022-07-26 14:02 UTC

This package is auto-updated.

Last update: 2024-08-26 18:34:25 UTC


README

这是一个用于验证播客订阅源的PHP库。

检查订阅源的有效性,例如它是否为XML、RSS格式,以及是否有适当的命名空间。

如果某些字段缺失,则会发出警告;例如,iTunes需要的字段。

它还推荐iTunes推荐但不是必需的字段。

请注意,我故意没有添加获取远程订阅源的方法,以避免增加额外的依赖;我建议使用Guzzle。

安装

composer require lukaswhite/podcast-feed-validator

用法

use Lukaswhite\PodcastFeedValidator\Validator;

$validator = new Validator();

$validator->load('/path/to/feed.rss');
// or
$validator->setContent(/** raw content */);

$result = $validator->run();
        
if ($result->fails()) {
    // ...do something
}

结果

返回值是一个对象,封装了错误、警告和建议。

这些都是字符串,并在相关类中定义为常量。

请注意,通常,如果发生错误,则验证在开始生成警告或建议之前就已经失败。例如,如果提供的订阅源不是XML,则无法检查某些字段的是否存在。

if ($result->hasErrors()) {
    foreach ($result->getErrors() as $error) {
    
    }
}

if ($result->hasWarnings()) {
    foreach ($result->getWarnings() as $error) {
    
    }
}

if ($result->hasRecommendations()) {
    foreach ($result->getRecommendations() as $error) {
    
    }
}

结果对象还包括单独的剧集结果。

示例

假设你提供了以下XML

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:rawvoice="http://www.rawvoice.com/rawvoiceRssModule/"
xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"
>
<channel>
	<title>Minimal Example</title>
	<link>https://example.com</link>
	<description>Just an example.</description>
	<item>
		<title>Episode One</title>
	</item>
</channel>
</rss>

这将返回FALSE

$result->hasErrors();

以下所有都将返回TRUE

$result->hasWarnings();
$result->hasWarning(Warning::NO_LANGUAGE);
$result->hasWarning(Warning::NO_ARTWORK);
$result->hasWarning(Warning::NO_CATEGORIES);
$result->hasWarning(Warning::NO_EXPLICIT);

它还将提出建议,因此以下也将返回TRUE

$result->hasRecommendations();
$result->hasRecommendation(Recommendation::ADD_AUTHOR);
$result->hasRecommendation(Recommendation::ADD_OWNER);

关于剧集

$result = $validator->run()->episodes()[0];
$result->hasWarning(Warning::NO_MEDIA);
$result->hasRecommendation(Recommendation::ADD_LINK);
$result->hasRecommendation(Recommendation::ADD_GUID);
$result->hasRecommendation(Recommendation::ADD_PUB_DATE);
$result->hasRecommendation(Recommendation::ADD_DESCRIPTION);
$result->hasRecommendation(Recommendation::ADD_EXPLICIT);
$result->hasRecommendation(Recommendation::ADD_ARTWORK);
$result->hasRecommendation(Recommendation::ADD_DURATION);

请查看测试以获取更多信息。