{"id":21441771,"url":"https://github.com/hughrun/feedfinder","last_synced_at":"2025-07-14T17:32:12.782Z","repository":{"id":35031386,"uuid":"198543268","full_name":"hughrun/feedfinder","owner":"hughrun","description":"nodejs package for finding RSS and Atom feeds from a given URL and vice-versa","archived":false,"fork":false,"pushed_at":"2024-09-17T10:29:36.000Z","size":390,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2024-11-11T13:11:54.590Z","etag":null,"topics":["atom","feedfinder","nodejs","rss"],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hughrun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"contributing.md","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":"2019-07-24T02:29:41.000Z","updated_at":"2024-09-17T10:29:34.000Z","dependencies_parsed_at":"2024-06-29T03:35:49.762Z","dependency_job_id":null,"html_url":"https://github.com/hughrun/feedfinder","commit_stats":{"total_commits":36,"total_committers":3,"mean_commits":12.0,"dds":"0.33333333333333337","last_synced_commit":"c65cf74fd99cd8ee6a29704bb75206985b865885"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hughrun%2Ffeedfinder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hughrun%2Ffeedfinder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hughrun%2Ffeedfinder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hughrun%2Ffeedfinder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hughrun","download_url":"https://codeload.github.com/hughrun/feedfinder/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225990493,"owners_count":17556152,"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","feedfinder","nodejs","rss"],"created_at":"2024-11-23T01:42:14.696Z","updated_at":"2025-07-14T17:32:12.765Z","avatar_url":"https://github.com/hughrun.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# feedfinder\n\n**NOTE FEEDFINDER IS NO LONGER MAINTAINED AND HAS DEPRECATED DEPENDENCIES**\n\nnodejs package for finding RSS and Atom feeds from a given URL and vice-versa\n\n[Reporting bugs or proposing changes](contributing.md)  \n[Usage](#usage)  \n[Methods](#methods)  \n[Caveats](#caveats)\n\n## Usage\n\nTo install:\n\n```bash\nnpm install @hughrun/feedfinder\n```\n\nIn your code:\n\n```javascript\nconst feedfinder = require('@hughrun/feedfinder')\n\nfeedfinder.getFeed(url)\n  .then( x =\u003e {\n    console.log(x)\n    // returns an object\n  })\n  .catch( e =\u003e {\n    console.error(e)\n    // returns a string\n  })\n\n  feedfinder.getSite(feed)\n    .then( x =\u003e {\n      console.log(x)\n      // returns an object\n    })\n    .catch( e =\u003e {\n      console.error(e)\n      // returns a string\n    })\n```\n\n## Methods\n\nAll _feedfinder_ methods are Promises.\n\n### getFeed\n\n`getFeed(url)` takes a full url (i.e. including protocol) and returns an object with the given url, the feed url, and the site name, or alternatively returns an error in the form of a string.\n\nExamples:\n\n```javascript\nfeedfinder.getFeed('http://hughrundle.net')\n/*  \nreturns:\n    {\n      url: 'https://hughrundle.net',\n      feed: 'https://www.hughrundle.net/rss/',\n      title: 'Information Flaneur'\n    }\n*/\n\nfeedfinder.getFeed('http://nla.gov.au')\n//  returns error: 'No link to RSS or Atom feed found at this URL'\n\nfeedfinder.getFeed(\"https://www.example.com\")\n// returns error: 'URL cannot be found'\n\n```\n\nNote that the error message is returned as an error - so if you don't catch it, nothing is returned.\n\n### getSite\n\n`getSite(url)` takes a full feed URL and returns an object with the site url, the provided feed url, and the site name, or alternatively returns an error in the form of a string.\n\nExamples:\n\n```javascript\nfeedfinder.getSite('https://www.hughrundle.net/rss')\n/*\nReturns:'\n  {\n    url: 'https://www.hughrundle.net/',\n    feed: 'https://www.hughrundle.net/rss',\n    title: 'Information Flaneur'\n  }\n*/\n\nfeedfinder.getSite('https://www.hughrundle.net')\n// returns: 'No RSS or Atom file found at this URL'\n\nfeedfinder.getSite(\"https://www.example.com/rss\")\n// returns error: 'URL cannot be found'\n\n```\n\n## Caveats\n\nWell-formed web pages will list their RSS/Atom feed in a `\u003clink\u003e`element in the head, however sometimes there is a feed for a page but it is not referred to in a head `\u003clink\u003e` element. In this case, _feedfinder_ looks in the body of the page for anchor links (i.e. `\u003ca\u003e` elements) that look like they might point to feeds. If there is more than one link to a likely feed, **the first one listed will be used**. This is likely to be what you want, but there is only so much that can be done with poorly-structured pages so ...it might not be.\n\nYouTube user, channel and playlist pages should all work as long as YouTube does not change the way it constructs RSS feeds - they are not listed on pages, but as the form is known, we can construct them from the ID.\n\n## Acknowledgements\n\nThanks to Sam Popowich and  Tim Sherrat for licensing their blogs CC-BY, thus allowing me to use their homepages and feed files as examples for testing.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhughrun%2Ffeedfinder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhughrun%2Ffeedfinder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhughrun%2Ffeedfinder/lists"}