Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/umurgdk/elixir-feedme
Elixir RSS/Atom parser
https://github.com/umurgdk/elixir-feedme
Last synced: 8 days ago
JSON representation
Elixir RSS/Atom parser
- Host: GitHub
- URL: https://github.com/umurgdk/elixir-feedme
- Owner: umurgdk
- License: mit
- Created: 2015-09-09T08:34:22.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2017-01-27T00:38:10.000Z (almost 8 years ago)
- Last Synced: 2024-10-05T06:59:25.141Z (about 1 month ago)
- Language: Elixir
- Size: 60.5 KB
- Stars: 15
- Watchers: 7
- Forks: 9
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- freaking_awesome_elixir - Elixir - RSS/Atom parser built on erlang's xmerl xml parser. (Feeds)
- fucking-awesome-elixir - feedme - RSS/Atom parser built on erlang's xmerl xml parser. (Feeds)
- awesome-elixir - feedme - RSS/Atom parser built on erlang's xmerl xml parser. (Feeds)
README
Feedme
======
[![Build Status](https://travis-ci.org/umurgdk/elixir-feedme.svg?branch=master)](https://travis-ci.org/umurgdk/elixir-feedme)Elixir RSS/Atom parser built on erlang's **xmerl** xml parser. It uses [timex](https://github.com/bitwalker/timex) for parsing dates.
## Setup
Add **feedme** into your mix dependencies and applications:
```elixir
def application do
[applications: [:feedme]]
enddefp deps do
[{:feedme, "~> 0.0.1"}]
end
```
Then run ```mix deps.get``` to install feedme.## Parsing
Feedme expose only one function named ```parse/1```. Parse function detects the feed format as **rss** or **atom**.
```elixir
{:ok, xml_string} = File.read("some.xml")
{:ok, feed} = Feedme.parse(xml_string)# Feed
%Feedme.Feed{
meta: %Feedme.MetaData{
author: nil,
category: nil,
cloud: nil,
copyright: nil,
description: "software is fun",
docs: nil,
generator: "Ghost 0.6",
image: nil,
language: nil,
last_build_date: %Timex.DateTime{...},
link: "http://blog.drewolson.org/", managing_editor: nil,
publication_date: nil,
rating: nil,
skip_days: [],
skip_hours: [],
title: "collect {thoughts}",
ttl: "60",
web_master: nil
}
entries: [
%Feedme.Entry{
author: nil,
categories: ["elixir"],
comments: nil,
description: "I previously wrote about explicitness in Elixir. One of my favorite ways the language embraces explicitness is in its distinction between eager and lazy operations on collections. Any time you use the
",Enum
module, you're performing an eager operation. Your collection will be transformed/mapped/enumerated immediately. When you use
enclosure: %Feedme.Enclosure{
length: "12216320",
type: "audio/mpeg",
url: "http://www.tutorialspoint.com/mp3s/tutorial.mp3"
},
guid: "9b68a5a7-4ab0-420e-8105-0462357fa1f1",
link: "http://blog.drewolson.org/elixir-streams/",
publication_date: %Timex.DateTime{...},
source: nil, title: "Elixir Streams"
}
]
}
```## ToDo
- [ ] Rss+Atom parser
- [ ] FeedBurner support