{"id":23715647,"url":"https://github.com/kascote/universal_feed","last_synced_at":"2025-09-03T19:32:36.597Z","repository":{"id":61846914,"uuid":"555683669","full_name":"kascote/universal_feed","owner":"kascote","description":"Universal parser for RSS and Atom feeds with support for some extensions (dc, dcterms, media, itunes, georss, syndication, content)","archived":false,"fork":false,"pushed_at":"2024-06-29T21:49:17.000Z","size":339,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-06-30T00:48:27.183Z","etag":null,"topics":["atom","atom-parser","dart","feed","feed-parser","rss","rss-parser","rss-reader"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kascote.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-22T04:35:23.000Z","updated_at":"2024-06-29T21:49:20.000Z","dependencies_parsed_at":"2023-01-26T13:01:33.537Z","dependency_job_id":null,"html_url":"https://github.com/kascote/universal_feed","commit_stats":{"total_commits":10,"total_committers":1,"mean_commits":10.0,"dds":0.0,"last_synced_commit":"ce2c185a023c8f4843a49810ec6a867092be2174"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kascote%2Funiversal_feed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kascote%2Funiversal_feed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kascote%2Funiversal_feed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kascote%2Funiversal_feed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kascote","download_url":"https://codeload.github.com/kascote/universal_feed/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231913873,"owners_count":18445009,"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":["atom","atom-parser","dart","feed","feed-parser","rss","rss-parser","rss-reader"],"created_at":"2024-12-30T20:58:41.053Z","updated_at":"2024-12-30T20:58:45.178Z","avatar_url":"https://github.com/kascote.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Universal Feed Parser\n\nUniversal Feed is a feed parser that supports RSS and Atom feeds. The library unifies the parsing of different feeds in a common entity, simplifying consumption.\n\nSupported feeds versions\n\n* RSS 0.90\n* Netscape RSS 0.91\n* Userland RSS 0.91\n* RSS 0.92\n* RSS 0.93\n* RSS 0.94\n* RSS 1.0\n* RSS 2.0\n* Atom 0.3\n* Atom 1.0\n\nSupported feeds extensions\n\n* Dublin Core\n* Dublin Core Terms\n* Geo RSS\n* Media RSS\n* Syndication\n* Itunes\n\n## Overview\n\nThis library makes no assumptions about the data parsed and tries to be quite liberal about the feed's content.\nFor example, `timestamps`, the field's value is read, but there is no attempt to parse them when the feed is processed. The TimeStamp object used has methods to help with the parsing.\nTo understand the mapping of RSS and Atom to Universal Feed can check [this file](./field_mapping.md).\n\n## Getting started\n\nHere is a simple example to get started:\n\n```dart\n  final file = File(filepath);\n  final content = file.readAsStringSync();\n\n  final uf = UniversalFeed.parseFromString(content);\n  print(uf.title);\n  print(uf.description);\n  print(uf.meta.kind); // rss or atom\n  print(uf.meta.extensions); // extensions declared on the header\n  print(uf.meta.version); // feed version\n```\n\n## Developing\n\nThe library is entirely new and was not battle-tested yet. I'm using a corpus of 400~ feeds, and it goes through\nit without trouble. But there are still some parts that I want to review and maybe refactor.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkascote%2Funiversal_feed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkascote%2Funiversal_feed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkascote%2Funiversal_feed/lists"}