# pod_feeder_v2
Publishes RSS/Atom feeds to Diaspora*
This is a lightweight, customizable "bot" script to harvest RSS/Atom feeds and
re-publish them to the Diaspora social network. It is posted here without
warranty, for public use.
v2 is a complete re-write of the
[original pod_feeder](https://github.com/rev138/pod_feeder) script which was
written (poorly) in perl and is no longer supported. Migrating to this version
is recommended.
## Installation
pod_feeder_v2 requires python3. You can easily install the dependencies with pip:
### System-wide
`sudo pip3 install pod-feeder-v2`
### Individual user
`pip3 install --user pod-feeder-v2`
_When installing as a non-privilegd user, make sure you have `~/.local/bin` in your `$PATH`_
## Migrating from pod_feeder "classic"
1. pod_feeder_v2's database schema is backward-compatible with the original, so
you can point the script at your existing `feed.db` file (or whatever
yours is called).
2. The `--title-tags` and `--url-tags` arguments have not been carried forward
because in practice they generally create lots of spurious tags, and the
'stop words' feature is difficult to implement. `--user-agent` is not currently
implemented because the feedparser library does not support it.
3. Several new options, `--summary`, `--debug`, and `--quiet` have been added.
## Usage
This script is intended to be run as a cron job, which might look something like this:
`@hourly pod-feeder --feed-id myfeed --feed-url http://example.com/feeds/rss --pod-url https://diaspora.example.com --username user --password ******** --quiet`
There is also a database cleaner script that you can run as often as you like to
keep your database size under control:
`@weekly pf-clean-db feed.db > /dev/null 2>&1`
usage: pod-feeder [-h] [--aspect-id ASPECT_ID] [--auto-tag AUTO_TAG]
[--category-tags] [--database DATABASE] [--embed-image]
--feed-id FEED_ID --feed-url FEED_URL
[--ignore-tag IGNORE_TAG] [--limit LIMIT] [--no-branding]
--pod-url POD_URL [--post-raw-link] [--timeout TIMEOUT]
[--username USERNAME] [--via VIA] [--summary | --full]
(--password PASSWORD | --fetch-only) [--debug | --quiet]
optional arguments:
-h, --help show this help message and exit
--aspect-id ASPECT_ID
Numerical aspect ID to share with. May be specified
multiple times (default: 'public')
--auto-tag AUTO_TAG Hashtags to add to all posts. May be specified
multiple times
--category-tags Automatically hashtagify RSS item 'categories' if any
--database DATABASE The file to store feed data (default: 'feed.db')
--embed-image Embed an image in the post if a link exists
--feed-id FEED_ID An arbitrary label for this feed
--feed-url FEED_URL The feed URL
--ignore-tag IGNORE_TAG
Hashtag to filter out. May be specified multiple times
--limit LIMIT Only post n items per script run, to prevent post-
spamming
--no-branding Do not include 'via pod_feeder_v2' footer to posts
--pod-url POD_URL The pod URL
--post-raw-link Post the raw link instead of hyperlinking the article
title
--timeout TIMEOUT How many hours to keep re-trying failed posts (default
72)
--username USERNAME The D* login username
--via VIA Sets the 'posted via' footer text (default:
'pod_feeder_v2')
--summary Post the summary text of the feed item
--full, --body Post the full text of the feed item
--password PASSWORD The D* user password
--fetch-only Don't publish to Diaspora, queue the new feed items
for later
--debug Show debugging output
--quiet Suppress normal output
## A Note on YouTube Feeds
It is possible to publish a YouTube channel's feed, by using the following URL format:
https://www.youtube.com/feeds/videos.xml?channel_id=<channel id>
Raw data
{
"_id": null,
"home_page": "https://gitlab.com/brianodonnell/pod_feeder_v2",
"name": "pod-feeder-v2",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "atom bot diaspora feeds newsfeeds rss social syndication",
"author": "Brian \u00d3",
"author_email": "brian@pancrypticon.net",
"download_url": "https://files.pythonhosted.org/packages/d4/25/2cb27e24d2376b718d7fba6c56d3849dbf4a2e069c49dd55fa947bcafd7e/pod_feeder_v2-1.0.9.tar.gz",
"platform": null,
"description": "# pod_feeder_v2\n\nPublishes RSS/Atom feeds to Diaspora*\n\nThis is a lightweight, customizable \"bot\" script to harvest RSS/Atom feeds and\nre-publish them to the Diaspora social network. It is posted here without\nwarranty, for public use.\n\nv2 is a complete re-write of the\n[original pod_feeder](https://github.com/rev138/pod_feeder) script which was\nwritten (poorly) in perl and is no longer supported. Migrating to this version\nis recommended.\n\n## Installation\npod_feeder_v2 requires python3. You can easily install the dependencies with pip:\n\n### System-wide\n`sudo pip3 install pod-feeder-v2`\n\n### Individual user\n`pip3 install --user pod-feeder-v2`\n\n_When installing as a non-privilegd user, make sure you have `~/.local/bin` in your `$PATH`_\n\n## Migrating from pod_feeder \"classic\"\n1. pod_feeder_v2's database schema is backward-compatible with the original, so\nyou can point the script at your existing `feed.db` file (or whatever\nyours is called).\n\n2. The `--title-tags` and `--url-tags` arguments have not been carried forward\nbecause in practice they generally create lots of spurious tags, and the\n'stop words' feature is difficult to implement. `--user-agent` is not currently\nimplemented because the feedparser library does not support it.\n\n3. Several new options, `--summary`, `--debug`, and `--quiet` have been added.\n\n## Usage\nThis script is intended to be run as a cron job, which might look something like this:\n\n`@hourly pod-feeder --feed-id myfeed --feed-url http://example.com/feeds/rss --pod-url https://diaspora.example.com --username user --password ******** --quiet`\n\nThere is also a database cleaner script that you can run as often as you like to\nkeep your database size under control:\n\n`@weekly pf-clean-db feed.db > /dev/null 2>&1`\n\n usage: pod-feeder [-h] [--aspect-id ASPECT_ID] [--auto-tag AUTO_TAG]\n [--category-tags] [--database DATABASE] [--embed-image]\n --feed-id FEED_ID --feed-url FEED_URL\n [--ignore-tag IGNORE_TAG] [--limit LIMIT] [--no-branding]\n --pod-url POD_URL [--post-raw-link] [--timeout TIMEOUT]\n [--username USERNAME] [--via VIA] [--summary | --full]\n (--password PASSWORD | --fetch-only) [--debug | --quiet]\n\n optional arguments:\n -h, --help show this help message and exit\n --aspect-id ASPECT_ID\n Numerical aspect ID to share with. May be specified\n multiple times (default: 'public')\n --auto-tag AUTO_TAG Hashtags to add to all posts. May be specified\n multiple times\n --category-tags Automatically hashtagify RSS item 'categories' if any\n --database DATABASE The file to store feed data (default: 'feed.db')\n --embed-image Embed an image in the post if a link exists\n --feed-id FEED_ID An arbitrary label for this feed\n --feed-url FEED_URL The feed URL\n --ignore-tag IGNORE_TAG\n Hashtag to filter out. May be specified multiple times\n --limit LIMIT Only post n items per script run, to prevent post-\n spamming\n --no-branding Do not include 'via pod_feeder_v2' footer to posts\n --pod-url POD_URL The pod URL\n --post-raw-link Post the raw link instead of hyperlinking the article\n title\n --timeout TIMEOUT How many hours to keep re-trying failed posts (default\n 72)\n --username USERNAME The D* login username\n --via VIA Sets the 'posted via' footer text (default:\n 'pod_feeder_v2')\n --summary Post the summary text of the feed item\n --full, --body Post the full text of the feed item\n --password PASSWORD The D* user password\n --fetch-only Don't publish to Diaspora, queue the new feed items\n for later\n --debug Show debugging output\n --quiet Suppress normal output\n\n## A Note on YouTube Feeds\n\nIt is possible to publish a YouTube channel's feed, by using the following URL format:\n\n https://www.youtube.com/feeds/videos.xml?channel_id=<channel id>\n",
"bugtrack_url": null,
"license": null,
"summary": "A utility to publish RSS/Atom feeds to Diaspora*",
"version": "1.0.9",
"project_urls": {
"Homepage": "https://gitlab.com/brianodonnell/pod_feeder_v2"
},
"split_keywords": [
"atom",
"bot",
"diaspora",
"feeds",
"newsfeeds",
"rss",
"social",
"syndication"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "92b512a0edb005f176de60e7ba5af81cba4c0426a164cbdff0f2bd3729358800",
"md5": "8f58652736cd27d1784f2925f7ba0714",
"sha256": "cf0184cf89ddb42f9a88a298986d94bf795a25e084d5ec385dd4d7444f95df3c"
},
"downloads": -1,
"filename": "pod_feeder_v2-1.0.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8f58652736cd27d1784f2925f7ba0714",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 13450,
"upload_time": "2024-11-04T01:31:46",
"upload_time_iso_8601": "2024-11-04T01:31:46.101601Z",
"url": "https://files.pythonhosted.org/packages/92/b5/12a0edb005f176de60e7ba5af81cba4c0426a164cbdff0f2bd3729358800/pod_feeder_v2-1.0.9-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d4252cb27e24d2376b718d7fba6c56d3849dbf4a2e069c49dd55fa947bcafd7e",
"md5": "9a4b741b48b9ac4b2ce4b796f0889f13",
"sha256": "1dbf6cdc0f02b8fc4ca9b6a4831c4410a09a247a240ec461cb104590db12e3af"
},
"downloads": -1,
"filename": "pod_feeder_v2-1.0.9.tar.gz",
"has_sig": false,
"md5_digest": "9a4b741b48b9ac4b2ce4b796f0889f13",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 13618,
"upload_time": "2024-11-04T01:31:47",
"upload_time_iso_8601": "2024-11-04T01:31:47.051721Z",
"url": "https://files.pythonhosted.org/packages/d4/25/2cb27e24d2376b718d7fba6c56d3849dbf4a2e069c49dd55fa947bcafd7e/pod_feeder_v2-1.0.9.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-04 01:31:47",
"github": false,
"gitlab": true,
"bitbucket": false,
"codeberg": false,
"gitlab_user": "brianodonnell",
"gitlab_project": "pod_feeder_v2",
"lcname": "pod-feeder-v2"
}