{"id":13484470,"url":"https://github.com/aasmith/feed-normalizer","last_synced_at":"2025-03-27T16:30:52.618Z","repository":{"id":403744,"uuid":"22221","full_name":"aasmith/feed-normalizer","owner":"aasmith","description":"Extensible Ruby wrapper for Atom and RSS parsers","archived":false,"fork":false,"pushed_at":"2014-03-29T02:36:43.000Z","size":260,"stargazers_count":134,"open_issues_count":3,"forks_count":22,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-03-18T14:50:07.797Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://feed-normalizer.rubyforge.org/","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aasmith.png","metadata":{"files":{"readme":"README.txt","changelog":"History.txt","contributing":null,"funding":null,"license":"License.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2008-06-04T17:24:59.000Z","updated_at":"2022-03-05T09:23:32.000Z","dependencies_parsed_at":"2022-07-14T12:30:55.315Z","dependency_job_id":null,"html_url":"https://github.com/aasmith/feed-normalizer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aasmith%2Ffeed-normalizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aasmith%2Ffeed-normalizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aasmith%2Ffeed-normalizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aasmith%2Ffeed-normalizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aasmith","download_url":"https://codeload.github.com/aasmith/feed-normalizer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245882284,"owners_count":20687860,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T17:01:24.913Z","updated_at":"2025-03-27T16:30:52.214Z","avatar_url":"https://github.com/aasmith.png","language":"Ruby","readme":"== Feed Normalizer\n\nAn extensible Ruby wrapper for Atom and RSS parsers.\n\nFeed normalizer wraps various RSS and Atom parsers, and returns a single unified\nobject graph, regardless of the underlying feed format.\n\n== Download\n\n* gem install feed-normalizer\n* http://rubyforge.org/projects/feed-normalizer\n* svn co http://feed-normalizer.googlecode.com/svn/trunk\n\n== Usage\n\n    require 'feed-normalizer'\n    require 'open-uri'\n\n    feed = FeedNormalizer::FeedNormalizer.parse open('http://www.iht.com/rss/frontpage.xml')\n\n    feed.title # =\u003e \"International Herald Tribune\"\n    feed.url # =\u003e \"http://www.iht.com/pages/index.php\"\n    feed.entries.first.url # =\u003e \"http://www.iht.com/articles/2006/10/03/frontpage/web.1003UN.php\"\n\n    feed.class # =\u003e FeedNormalizer::Feed\n    feed.parser # =\u003e \"RSS::Parser\"\n\nNow read an Atom feed, and the same class is returned, and the same terminology applies:\n\n    feed = FeedNormalizer::FeedNormalizer.parse open('http://www.atomenabled.org/atom.xml')\n\n    feed.title # =\u003e \"AtomEnabled.org\"\n    feed.url # =\u003e \"http://www.atomenabled.org/atom.xml\"\n    feed.entries.first.url # =\u003e \"http://www.atomenabled.org/2006/09/moving-toward-atom.php\"\n\nThe feed representation stays the same, even though a different parser was used.\n\n    feed.class # =\u003e FeedNormalizer::Feed\n    feed.parser # =\u003e \"SimpleRSS\"\n\n== Cleaning / Sanitizing\n\n    feed.title # =\u003e \"My Feed \u003e Your Feed\"\n    feed.entries.first.content # =\u003e \"\u003cp x='y'\u003eHello\u003c/p\u003e\u003cobject\u003e\u003c/object\u003e\u003c/html\u003e\"\n    feed.clean!\n\nAll elements should now be either clean HTML, or HTML escaped strings.\n\n    feed.title # =\u003e \"My Feed \u0026gt; Your Feed\"\n    feed.entries.first.content # =\u003e \"\u003cp\u003eHello\u003c/p\u003e\"\n\n== Extending\n\nImplement a parser wrapper by extending the FeedNormalizer::Parser class and overriding\nthe public methods. Also note the helper methods in the root Parser object to make\nmapping of output from the particular parser to the Feed object easier.\n\nSee FeedNormalizer::RubyRssParser and FeedNormalizer::SimpleRssParser for examples.\n\n== Authors\n* Andrew A. Smith (andy@tinnedfruit.org)\n\nThis library is released under the terms of the BSD License (see the License.txt file for details).\n","funding_links":[],"categories":["RSS"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faasmith%2Ffeed-normalizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faasmith%2Ffeed-normalizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faasmith%2Ffeed-normalizer/lists"}