Packages

Checks a podcast RSS feed against RSS 2.0, the Apple Podcasts requirements and the Podcasting 2.0 namespace, and reports what falls short, with a spec link for every rule.

Current section

Files

Jump to
check_my_feed README.md
Raw

README.md

# CheckMyFeed

Checks a podcast feed (a raw XML string) against RSS 2.0 and the Apple Podcasts
requirements, and reports what falls short. Every rule has an id, a severity
(`:error`, `:warning` or `:info`), an explanation and a link to the
specification it comes from.

The library never fetches anything and never fixes up the feed before looking
at it: what it sees is exactly what a podcast app would get. It only checks
what the feed text itself shows, so it does not download artwork or media to
verify pixel sizes, file types or loudness.

## Installation

```elixir
def deps do
  [
    {:check_my_feed, "~> 0.1.0"}
  ]
end
```

## Usage

```elixir
{:ok, report} = CheckMyFeed.check(xml)

for finding <- report.findings do
  IO.puts("[#{finding.severity}] #{finding.rule_id}: #{finding.detail}")
end

# rules that were checked and passed
Enum.map(report.passed, & &1.id)

# rules that had nothing to check, e.g. the enclosure rules on a feed
# without episodes, or the rule for an optional tag the feed doesn't use
Enum.map(report.not_applicable, & &1.id)
```

`CheckMyFeed.check/1` returns `{:error, {:invalid_xml, reason}}` if the
document cannot be parsed at all.

## License

AGPL-3.0-or-later, see `LICENSE`.