{"id":13483202,"url":"https://github.com/poga/hyperfeed","last_synced_at":"2025-03-22T19:33:49.653Z","repository":{"id":137993849,"uuid":"69048250","full_name":"poga/hyperfeed","owner":"poga","description":"decentralized rss publishing","archived":false,"fork":false,"pushed_at":"2017-04-25T07:22:30.000Z","size":74,"stargazers_count":69,"open_issues_count":0,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-09-16T01:04:10.844Z","etag":null,"topics":["dat","decentralization","hyperdrive","p2p","publishing","rss"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/poga.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2016-09-23T17:53:41.000Z","updated_at":"2024-04-29T02:37:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"fb294da6-d6ee-4619-807f-a8efda838bbe","html_url":"https://github.com/poga/hyperfeed","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/poga%2Fhyperfeed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poga%2Fhyperfeed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poga%2Fhyperfeed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poga%2Fhyperfeed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/poga","download_url":"https://codeload.github.com/poga/hyperfeed/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221832762,"owners_count":16888313,"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":["dat","decentralization","hyperdrive","p2p","publishing","rss"],"created_at":"2024-07-31T17:01:09.031Z","updated_at":"2024-10-28T13:36:47.030Z","avatar_url":"https://github.com/poga.png","language":"JavaScript","readme":"# Hyperfeed\n\n[![NPM Version](https://img.shields.io/npm/v/hyperfeed.svg)](https://www.npmjs.com/package/hyperfeed) [![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)\n\nHyperfeed is a self-archiving P2P live feed. You can convert any RSS/ATOM/RDF feed to a P2P live update publishing network.\n\n* **Self-archiving**: Items and it's linked page will be archived within hyperfeed.\n* **Decentralized**: Feed contents can still be distributed between readers even if the original host is down.\n* **Live**: No need to poll the original feed. Updates will be pushed to you.\n\n```\nnpm install hyperfeed\n```\n\n## Synopsis\n\nPublish your RSS feed through hyperfeed:\n\n```js\nconst request = require('request')\nconst hyperfeed = require('hyperfeed')\nconst hyperdrive = require('hyperdrive')\nconst swarm = require('hyperdiscovery')\n\nconst url = 'https://medium.com/feed/google-developers'\n\nvar archive = hyperdrive('./feed')\nvar feed = hyperfeed(archive)\nfeed.ready(() =\u003e {\n  swarm(archive)\n  console.log(feed.key.toString('hex'))\n  feed.update(request(url), (err) =\u003e {\n    console.log('feed imported')\n  })\n})\n\n```\n\nNow you can replicate the hyperfeed through a p2p network:\n\n```js\nconst Hyperfeed = require('hyperfeed')\nconst swarm = require('hyperdiscovery')\nconst hyperdrive = require('hyperdrive')\n\nvar archive = hyperdrive('./anotherFeed', '\u003cKEY FROM ABOVE\u003e')\nvar feed = hyperfeed(archive)\nswarm(archive) // load the feed from the p2p network\nfeed.list((err, entries) =\u003e {\n  console.log(entries) // all entries in the feed (include history entries)\n})\n```\n\n## API\n\n#### `var feed = hyperfeed(archive, [opts])`\n\nCreate a new Hyperfeed instance. `opts` includes:\n\n```javascript\n{\n  scrapLink: true // set to false to stop archiving linked page for each feed item\n}\n```\n\n#### `feed.key`\n\nThe public key identifying the feed.\n\n#### `feed.discoveryKey`\n\nA key derived from the public key that can be used to discovery other peers sharing this feed.\n\n#### `feed.meta`\n\nThe metadata of the feed.\n\n#### `feed.ready(cb)`\n\nWait for feed is fully ready and all properties has been populated.\n\n#### `feed.update(feedStream, cb(err, feed))`\n\nimport a RSS feed into `feed`. Accept a stream.\n\n#### `feed.setMeta(metadataObject, cb(err))`\n\nSet feed's metadata.\n\n#### `feed.list(cb(err, entries))`\n\nList archived item in the feed.\n\n#### `feed.save(item, [scrappedData], cb(err))`\n\nSave a new feed item.  Check [https://github.com/jpmonette/feed](https://github.com/jpmonette/feed) for item detail.\n\nIf you already have scrapped data for the given item, you can pass it to `scrappedData` to avoid redundant requests.\n\n#### `feed.export(count, cb(err, rss))`\n\nExport a RSS-2.0 Feed containing latest `count` items.\n\n## License\n\nThe MIT License\n","funding_links":[],"categories":["JavaScript","Outdated","Modules","publishing"],"sub_categories":["Other Related Dat Project Modules"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpoga%2Fhyperfeed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpoga%2Fhyperfeed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpoga%2Fhyperfeed/lists"}