# paper-feeds
![PyPI - Version](https://img.shields.io/pypi/v/paper-feeds)
[![Coverage Status](https://coveralls.io/repos/github/sneakers-the-rat/paper-feeds/badge.svg)](https://coveralls.io/github/sneakers-the-rat/paper-feeds)
A FastAPI web server for creating RSS feeds for scholarly journals with the magic of adversarial interoperability
Many journals still have RSS feeds. Some don't though, as they try
and squeeze everyone onto their platforms to monetize our
engagement data.
This is a simple web app for creating feeds (currently RSS, soon ActivityPub and Atom) for academic papers by
collecting metadata from multiple data sources. It intended to be a publicly- and self-hostable
toolkit for subscribing to and curating scholarly literature!
Dependencies are kept minimal, as
is deployment - No webpack, no complex build, no postgres,
just pip install and press play :).
# usage
(to be completed when main docs are, for now here's something brief)
After [creating and activating a virtual environment...](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/#creating-a-virtual-environment)
```bash
pip install paper-feeds
python -m paper_feeds
# then open http://localhost:8000 in your browser
```
Note: we are still working out the packaging here, so you may
need to clone the repository and run the server from the repo
root until we can figure that out :)
And see [CONTRIBUTING.md](./CONTRIBUTING.md) for more information on setting up
a development environment
# progress
Everything is just getting started! things will break and change! To be moved to docs when made. Help wanted on all, open an issue <3
API:
- [x] Query Crossref for journal
- [x] Write journal metadata to db
- [x] Paginate papers by journal
- [x] Store papers in db
- [x] Populate papers when feed created
- [ ] Periodic database updates
- [ ] Cache Feed output
- [ ] Scheduled update of feed metadata
- [ ] Backfill Abstracts and other additional data
- [ ] Feed statistics
Frontend
- [x] Search for journal
- [x] Display list of journals
- [x] Pages for each journal
- [x] Create new feed button
- [ ] Copy feed link
- [ ] Export feeds
- [ ] Show existing feeds, stats, threads
Feed Types
- [x] Journals
- [ ] Authors (via ORCID)
- [ ] Keywords
Feed Formats
- [ ] RSS
- [x] RSS feed from papers by issn
- [ ] Linked Data-enriched RSS feeds (see [crossref's advice](http://oxford.crossref.org/best_practice/rss/))
- [ ] HTML formatting for item details
- [ ] Activitypub
- [ ] Actors for feeds
- [ ] LD-enriched ActivityStreams actions
- [ ] Bot-Actor for instance
- [ ] DOI mention detection & crossref events data
- [ ] Hashtag -> keyword detection
- [ ] Create threads under feed actor with mention
Data Sources
- [x] Crossref
- [x] Journals
- [x] Papers
- [ ] Events
- [ ] OpenAlex
- [ ] ORCID
- [ ] PubPeer
- [ ] RetractionWatch
- [ ] Hypothes.is
Meta
- [ ] Docs
- [ ] We need em! Sphinx & RTD!
- [ ] Move this list to there
- [ ] Scope
- [ ] Design
- [ ] Usage
- [ ] Configuration
- [ ] Tests
- [x] Basic CI
# Credits
- El Duvelle, whose need for RSS feeds inspired this project
- @lambdaloop (list PRs)
- @roaldarbol (list PRs)
# References
- https://github.com/marty331/fasthtmx/
- https://samherbert.net/svg-loaders/
- https://htmx.org/examples/active-search/
# See also
- https://github.com/internetarchive/fatcat-scholar
Raw data
{
"_id": null,
"home_page": "https://github.com/sneakers-the-rat/paper-feeds",
"name": "paper-feeds",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.11,<4.0",
"maintainer_email": "",
"keywords": "rss,activitypub,scholarly communication,scholcomm,fastapi,metadata",
"author": "sneakers-the-rat",
"author_email": "JLSaunders987@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/e5/9d/204659df543051d4f3e77cb4e123da37109d5ed06a0d24fafa7bf0ce0b24/paper_feeds-0.0.4.tar.gz",
"platform": null,
"description": "# paper-feeds\n\n![PyPI - Version](https://img.shields.io/pypi/v/paper-feeds)\n[![Coverage Status](https://coveralls.io/repos/github/sneakers-the-rat/paper-feeds/badge.svg)](https://coveralls.io/github/sneakers-the-rat/paper-feeds)\n\nA FastAPI web server for creating RSS feeds for scholarly journals with the magic of adversarial interoperability\n\nMany journals still have RSS feeds. Some don't though, as they try\nand squeeze everyone onto their platforms to monetize our \nengagement data.\n\nThis is a simple web app for creating feeds (currently RSS, soon ActivityPub and Atom) for academic papers by\ncollecting metadata from multiple data sources. It intended to be a publicly- and self-hostable\ntoolkit for subscribing to and curating scholarly literature!\n\nDependencies are kept minimal, as\nis deployment - No webpack, no complex build, no postgres,\njust pip install and press play :).\n\n# usage\n\n(to be completed when main docs are, for now here's something brief)\n\nAfter [creating and activating a virtual environment...](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/#creating-a-virtual-environment)\n\n```bash\npip install paper-feeds\npython -m paper_feeds\n# then open http://localhost:8000 in your browser\n```\n\nNote: we are still working out the packaging here, so you may\nneed to clone the repository and run the server from the repo\nroot until we can figure that out :)\n\nAnd see [CONTRIBUTING.md](./CONTRIBUTING.md) for more information on setting up\na development environment\n\n# progress\n\nEverything is just getting started! things will break and change! To be moved to docs when made. Help wanted on all, open an issue <3\n\nAPI:\n- [x] Query Crossref for journal\n- [x] Write journal metadata to db\n- [x] Paginate papers by journal\n- [x] Store papers in db\n- [x] Populate papers when feed created\n- [ ] Periodic database updates\n- [ ] Cache Feed output\n- [ ] Scheduled update of feed metadata\n- [ ] Backfill Abstracts and other additional data\n- [ ] Feed statistics\n\nFrontend\n- [x] Search for journal\n- [x] Display list of journals\n- [x] Pages for each journal\n- [x] Create new feed button\n- [ ] Copy feed link\n- [ ] Export feeds\n- [ ] Show existing feeds, stats, threads\n\nFeed Types\n- [x] Journals\n- [ ] Authors (via ORCID)\n- [ ] Keywords\n\nFeed Formats\n- [ ] RSS\n - [x] RSS feed from papers by issn\n - [ ] Linked Data-enriched RSS feeds (see [crossref's advice](http://oxford.crossref.org/best_practice/rss/))\n - [ ] HTML formatting for item details\n- [ ] Activitypub\n - [ ] Actors for feeds\n - [ ] LD-enriched ActivityStreams actions\n - [ ] Bot-Actor for instance\n - [ ] DOI mention detection & crossref events data\n - [ ] Hashtag -> keyword detection\n - [ ] Create threads under feed actor with mention\n\nData Sources\n- [x] Crossref\n - [x] Journals\n - [x] Papers\n - [ ] Events\n- [ ] OpenAlex\n- [ ] ORCID\n- [ ] PubPeer\n- [ ] RetractionWatch\n- [ ] Hypothes.is\n\nMeta\n- [ ] Docs\n - [ ] We need em! Sphinx & RTD!\n - [ ] Move this list to there\n - [ ] Scope\n - [ ] Design\n - [ ] Usage\n - [ ] Configuration\n- [ ] Tests\n - [x] Basic CI\n\n# Credits\n- El Duvelle, whose need for RSS feeds inspired this project\n- @lambdaloop (list PRs)\n- @roaldarbol (list PRs)\n\n# References\n\n- https://github.com/marty331/fasthtmx/\n- https://samherbert.net/svg-loaders/\n- https://htmx.org/examples/active-search/\n\n# See also\n\n- https://github.com/internetarchive/fatcat-scholar\n",
"bugtrack_url": null,
"license": "GPL-3.0",
"summary": "A FastAPI web server for creating RSS and ActivityPub feeds for scholarly literature with the magic of adversarial interoperability",
"version": "0.0.4",
"project_urls": {
"Homepage": "https://github.com/sneakers-the-rat/paper-feeds",
"Repository": "https://github.com/sneakers-the-rat/paper-feeds"
},
"split_keywords": [
"rss",
"activitypub",
"scholarly communication",
"scholcomm",
"fastapi",
"metadata"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "796964f728908f4cc932240bc8d85ac6ceb1b5a6a5233058e45c4bfe4d841fda",
"md5": "3e1c263b855f1002bbf19727013ba5ef",
"sha256": "a13aea5a0c4f49f78268e5f914b7345b79b3a2bc79b71cedf43427213d3f0229"
},
"downloads": -1,
"filename": "paper_feeds-0.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3e1c263b855f1002bbf19727013ba5ef",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11,<4.0",
"size": 60099,
"upload_time": "2024-01-11T22:23:43",
"upload_time_iso_8601": "2024-01-11T22:23:43.148014Z",
"url": "https://files.pythonhosted.org/packages/79/69/64f728908f4cc932240bc8d85ac6ceb1b5a6a5233058e45c4bfe4d841fda/paper_feeds-0.0.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e59d204659df543051d4f3e77cb4e123da37109d5ed06a0d24fafa7bf0ce0b24",
"md5": "6a8703038a5f89cb07c3e646fd946e62",
"sha256": "6fb8b9a93534dea352a625829654c1e44e9de924a74f9f6a7c4f8d78a04d6172"
},
"downloads": -1,
"filename": "paper_feeds-0.0.4.tar.gz",
"has_sig": false,
"md5_digest": "6a8703038a5f89cb07c3e646fd946e62",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11,<4.0",
"size": 50908,
"upload_time": "2024-01-11T22:23:44",
"upload_time_iso_8601": "2024-01-11T22:23:44.932042Z",
"url": "https://files.pythonhosted.org/packages/e5/9d/204659df543051d4f3e77cb4e123da37109d5ed06a0d24fafa7bf0ce0b24/paper_feeds-0.0.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-11 22:23:44",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "sneakers-the-rat",
"github_project": "paper-feeds",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "paper-feeds"
}