pollingj / itunes-parser

Elixir XML parser specifically for iTunes

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

iTunes Parser

Build Status

Elixir iTunes XML parser built on erlang's xmerl xml parser. It uses timex for parsing dates. The original code is based on Feedme.

Setup

Add itunes-parser into your mix dependencies and applications:

def application do
  [applications: [:itunes-parser]]
end

defp deps do
  [{:itunes-parser, "~> 0.1.0"}]
end

Then run mix deps.get to install ITunesParser.

Parsing

iTunes parser expose only one function named parse/1. Parse function which expects feed format as rss.

{:ok, xml_string} = File.read("some.xml")
{:ok, feed} = ITunesParser.parse(xml_string)

# Feed
%ITunesParser.Feed{
  meta: %ITunesParser.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: [
    %ITunesParser.Entry{
      author: nil,
      categories: ["elixir"],
      comments: nil,
      description: "<p>I previously <a href=\"http://blog.drewolson.org/the-value-of-explicitness/\">wrote</a> 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 <code>Enum</code> module, you're performing an eager operation. Your collection will be transformed/mapped/enumerated immediately. When you use</p>",
      enclosure: %ITunesParser.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"
    }
  ]
}

About

Elixir XML parser specifically for iTunes

License:MIT License


Languages

Language:Elixir 100.0%