lukaswhite / podcast-feed-validator
用于验证播客订阅源的PHP库
1.1
2022-07-26 14:02 UTC
Requires
- lukaswhite/itunes-categories: ^0.0.2
- lukaswhite/podcast-feed-parser: ^1.1.0
Requires (Dev)
- phpunit/php-code-coverage: ^9.2
- phpunit/phpunit: ^9.5
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);
请查看测试以获取更多信息。