{ "info": { "author": "Antoine Beaupr\u00e9", "author_email": "anarcat@debian.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: End Users/Desktop", "Intended Audience :: System Administrators", "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", "Natural Language :: English", "Operating System :: POSIX", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Topic :: Communications :: Email", "Topic :: Internet :: WWW/HTTP :: Dynamic Content :: News/Diary", "Topic :: Text Processing :: Markup :: HTML" ], "description": "======================================\n feed2exec - programmable feed reader\n======================================\n\n``feed2exec`` is a simple program that runs custom actions on new RSS\nfeed items (or whatever `feedparser`_ can read). It currently has\nsupport for writing into mailboxes (`Maildir`_ folders) or executing\ncommands, but more actions can be easily implemented through\nplugins. Email are saved as multipart plain/HTML and can be sent to\narbitrary folders.\n\n.. _feedparser: https://pypi.python.org/pypi/feedparser\n.. _Maildir: https://en.wikipedia.org/wiki/Maildir\n\n.. image:: https://img.shields.io/pypi/l/feed2exec.svg\n :alt: AGPLv3 licensed\n :target: https://gitlab.com/anarcat/feed2exec/blob/master/LICENSE.rst\n\n.. image:: https://gitlab.com/anarcat/feed2exec/badges/master/pipeline.svg\n :alt: pipeline status\n :target: https://gitlab.com/anarcat/feed2exec/commits/master\n\n.. image:: https://gitlab.com/anarcat/feed2exec/badges/master/coverage.svg\n :alt: coverage report\n :target: https://gitlab.com/anarcat/feed2exec/commits/master\n\n.. image:: https://img.shields.io/pypi/v/feed2exec.svg\n :alt: feed2exec version on PyPI\n :target: https://pypi.python.org/pypi/feed2exec\n\n.. image:: https://badges.debian.net/badges/debian/stable/feed2exec/version.svg\n :alt: feed2exec version in stable\n :target: https://packages.debian.org/stable/feed2exec\n\n.. image:: https://badges.debian.net/badges/debian/unstable/feed2exec/version.svg\n :alt: feed2exec version in unstable\n :target: https://packages.debian.org/unstable/feed2exec\n\n.. image:: https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg \n :alt: Say thanks to the author\n :target: https://saythanks.io/to/anarcat\n\n.. marker-examples\n\nExamples\n--------\n\nSimple run with no side effects::\n\n feed2exec parse https://www.nasa.gov/rss/dyn/breaking_news.rss --output echo --args '{item.title}'\n\nSaving feed items to a Maildir folder::\n\n feed2exec add \"NASA breaking news\" https://www.nasa.gov/rss/dyn/breaking_news.rss --folder nasa\n feed2exec fetch\n\nThis creates the equivalent of this configuration file in ``~/.config/feed2exec.ini``::\n\n [DEFAULT]\n output = feed2exec.plugins.maildir\n mailbox = '~/Maildir'\n\n [NASA breaking news]\n folder = nasa\n url = https://www.nasa.gov/rss/dyn/breaking_news.rss\n\nSend new feed items to Transmission::\n\n feed2exec add \"Example torrent list\" http://example.com/torrents/feed --output transmission --folder /srv/incoming\n\nSend new feed items to Mastodon, using the `toot`_ commandline\nclient::\n\n feed2exec add \"My site\" http://example.com/blog/feed --output exec --args 'toot post \"{item.title} {item.link}\"'\n\nSend new feed items to Twitter, using the tweet commandline client\nfrom `python-twitter`_::\n\n feed2exec add \"My site on twitter\" http://example.com/blog/feed --output exec --args 'tweet \"{item.title:40s} {item.link:100s}\"'\n\nShow feed contents::\n\n feed2exec add \"NASA breaking news\" https://www.nasa.gov/rss/dyn/breaking_news.rss --output echo --args \"{item.title} {item.link}\"\n feed2exec fetch\n\n.. _toot: https://github.com/ihabunek/toot/\n.. _python-twitter: https://github.com/bear/python-twitter\n\n.. marker-installation\n\nMultiple feeds can also be added with the OPML import command. See the\n`usage `_ document for more information including known issues and\nlimitations.\n\nInstallation\n------------\n\nThis can be installed using the normal Python procedures::\n\n pip install feed2exec\n\nIt can also be installed from source, using::\n\n pip install .\n\nIt can also be ran straight from the source, using::\n\n python -m feed2exec\n\n.. important:: feed2exec is explicitly written for Python 3. It may be\n possible to backport it to Python 2 if there is\n sufficient demand, but there are too many convenient\n Python3 constructs to make this useful. Furthermore,\n all dependencies are well-packaged for Py3 and the\n platform is widely available. Upgrade already.\n\nThe program may also be available as an official package from your\nLinux distribution.\n\n`Source `_, `documentation\n`_ and `issues\n`_ are available on\nGitLab.\n\n.. note:: feed2exec relies on the `feedparser`_ module to parse feeds\n and as such has all the bugs and limitations of that\n modules. In particular, feeds with non-standard dates will\n break the parser, unless the `dateparser`_ module is\n installed.\n\n.. _dateparser: https://github.com/scrapinghub/dateparser\n\nWhy the name?\n-------------\n\nThere are already `feed2tweet`_ and `feed2imap`_ out there so I\nfigured I would just reuse the prefix and extend *both* programs at\nonce.\n\n.. _feed2tweet: https://github.com/chaica/feed2tweet\n.. _feed2imap: https://github.com/feed2imap/feed2imap/\n\n.. marker-toc\n\nDesign information\n------------------\n\nSee the `design `_ document for more information about how and why the\nprogram was built. The design document also features a comparison with other\nsimilar software.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://feed2exec.readthedocs.io/", "keywords": "", "license": "AGPLv3", "maintainer": "", "maintainer_email": "", "name": "feed2exec", "package_url": "https://pypi.org/project/feed2exec/", "platform": "", "project_url": "https://pypi.org/project/feed2exec/", "project_urls": { "Homepage": "https://feed2exec.readthedocs.io/" }, "release_url": "https://pypi.org/project/feed2exec/0.15.0/", "requires_dist": [ "click", "dateparser", "feedparser", "html2text", "pyxdg", "requests", "requests-file", "unidecode", "pyflakes ; extra == 'dev'", "pytest ; extra == 'dev'", "tox ; extra == 'dev'" ], "requires_python": "", "summary": "The programmable feed reader", "version": "0.15.0" }, "last_serial": 5924389, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "34f06874e4788f6bacb0bedea0471390", "sha256": "50c59a1bbb95956652774f8756b24e36a1ccf1ff1d8505b7db8d87fafae268c3" }, "downloads": -1, "filename": "feed2exec-0.10.0-py3-none-any.whl", "has_sig": false, "md5_digest": "34f06874e4788f6bacb0bedea0471390", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 96960, "upload_time": "2017-11-05T20:54:08", "url": "https://files.pythonhosted.org/packages/d4/64/455e2016f27438efd9fc85071c08b27eaf20939bcf39981d7661c7353762/feed2exec-0.10.0-py3-none-any.whl" } ], "0.11.0": [ { "comment_text": "", "digests": { "md5": "9a98d95814af7d72c27bed0d8037b455", "sha256": "59291d099da5715f9287e9fb939def020b4e4eca119da177ee56b3611d593f3a" }, "downloads": -1, "filename": "feed2exec-0.11.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9a98d95814af7d72c27bed0d8037b455", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 101329, "upload_time": "2018-01-29T17:14:00", "url": "https://files.pythonhosted.org/packages/92/60/b72913c420be1f31b80ea58ab3e4a4d8b6300beb1972e5f32637680e3ca6/feed2exec-0.11.0-py3-none-any.whl" } ], "0.12.0": [ { "comment_text": "", "digests": { "md5": "cc7f29ebb631b1adebeb542911319d33", "sha256": "df1d0dfbde7eea72f2a34ca5f2d878ae7d7dc15ea913dd84a10ac18b10de28bf" }, "downloads": -1, "filename": "feed2exec-0.12.0-py3-none-any.whl", "has_sig": false, "md5_digest": "cc7f29ebb631b1adebeb542911319d33", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 102376, "upload_time": "2018-06-14T16:51:22", "url": "https://files.pythonhosted.org/packages/15/72/7654f7d8f1d94a43dbf210ad5e713a7656ff0ac42be95ea7f691bdb50091/feed2exec-0.12.0-py3-none-any.whl" } ], "0.13.0": [ { "comment_text": "", "digests": { "md5": "6ced311135b84cd8b4b599ca29a2f04e", "sha256": "2dceb48862d7dbe08e331ea1e1a17e63082eda978c6ecc24dd76e9548d58e8e8" }, "downloads": -1, "filename": "feed2exec-0.13.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6ced311135b84cd8b4b599ca29a2f04e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 102628, "upload_time": "2019-02-16T17:07:55", "url": "https://files.pythonhosted.org/packages/cb/8c/505a118a3a145b3c75a9544c6f49c08ad8842b09f9c6bda9447480174b6b/feed2exec-0.13.0-py3-none-any.whl" } ], "0.14.0": [ { "comment_text": "", "digests": { "md5": "95a8eeecd52913adbd231662ff7c8735", "sha256": "43e7a9957a24bbd9bac9a2eaa7f56da63fa212860f98f0eed8b443b8ccbb59b9" }, "downloads": -1, "filename": "feed2exec-0.14.0-py3-none-any.whl", "has_sig": false, "md5_digest": "95a8eeecd52913adbd231662ff7c8735", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 113054, "upload_time": "2019-02-26T22:10:59", "url": "https://files.pythonhosted.org/packages/86/7f/6a6d76e9465ac805b8a0309f760bf732ba44d765bf0c9ab9e4bc81cf4045/feed2exec-0.14.0-py3-none-any.whl" } ], "0.15.0": [ { "comment_text": "", "digests": { "md5": "daf1cf6ff5805a9ef6e48212c3039cb8", "sha256": "2ea95f579808820775ea4f872ebdce225544d4617adb962011273fd724a912f4" }, "downloads": -1, "filename": "feed2exec-0.15.0-py3-none-any.whl", "has_sig": false, "md5_digest": "daf1cf6ff5805a9ef6e48212c3039cb8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 113231, "upload_time": "2019-10-03T17:02:33", "url": "https://files.pythonhosted.org/packages/26/f6/bc4df4afa51a0a6fe2260278506dc6c033c8b47571e34e5117199de2f142/feed2exec-0.15.0-py3-none-any.whl" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "2224c7a303aa4120a77a89603416c713", "sha256": "058ca12ddcb626f08e38325bb805e108edf7df666017e6891662a5033e3435e6" }, "downloads": -1, "filename": "feed2exec-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "2224c7a303aa4120a77a89603416c713", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 36512, "upload_time": "2017-09-12T15:03:52", "url": "https://files.pythonhosted.org/packages/d5/41/ccc51bf83ab6dfa2a8115b3304181ea527cff66381d1d63f219d8469406d/feed2exec-0.2-py3-none-any.whl" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "bacb504fb03d8f1b5fbaf00f1f956ccc", "sha256": "0149bba4f3f2d0eac725c8e7e1c4e7061a0450e900248bc8f8d75a7eab364e99" }, "downloads": -1, "filename": "feed2exec-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bacb504fb03d8f1b5fbaf00f1f956ccc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 36498, "upload_time": "2017-09-12T15:13:57", "url": "https://files.pythonhosted.org/packages/d8/36/d9d51c3c663baa0a0681aa185fe72357853aa1a1bf3d8e06b5b2dda1bdf3/feed2exec-0.2.1-py3-none-any.whl" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "524885208e1e9122d0081fbf22b0eb2a", "sha256": "f0cd70825855adc5e8a087f231fa6827fff8840ad61dd10cbf4c16750b10c642" }, "downloads": -1, "filename": "feed2exec-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "524885208e1e9122d0081fbf22b0eb2a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 36549, "upload_time": "2017-09-12T15:24:11", "url": "https://files.pythonhosted.org/packages/42/31/8f0b9ccd96abf7bfd3b83bb393babfdb78f87a1b70b216a830a12dadbab5/feed2exec-0.2.2-py3-none-any.whl" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "3f12cef7502c5b72dedb7920536c91f2", "sha256": "6270e13e58c7010945eb36317d8c34f83c2ce1c03ce8b7768c1612959c7a630e" }, "downloads": -1, "filename": "feed2exec-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "3f12cef7502c5b72dedb7920536c91f2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 36387, "upload_time": "2017-09-12T15:31:52", "url": "https://files.pythonhosted.org/packages/54/b5/7c3ce22014fd91698464bcbaea43202bd2238ead93f5b53ce6273b94bdcb/feed2exec-0.2.3-py3-none-any.whl" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "2166cb1361076a753f5fca1edcfd7ca8", "sha256": "91c31ac442429324454bbb75b5c3d6623edb57b7e82bd7027f83ea940c3958c1" }, "downloads": -1, "filename": "feed2exec-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "2166cb1361076a753f5fca1edcfd7ca8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37188, "upload_time": "2017-09-12T17:39:24", "url": "https://files.pythonhosted.org/packages/a2/a0/43d62769fb14ccb10996e30ee05d2fa173a85513057229e1a2031a87e431/feed2exec-0.3-py3-none-any.whl" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "2687ea634593cfad878d27ff8d4ed067", "sha256": "d8160bdd463dce9a537378da876fbd1bd5d9fc0c1d98790157b95e318007eb01" }, "downloads": -1, "filename": "feed2exec-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "2687ea634593cfad878d27ff8d4ed067", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37570, "upload_time": "2017-09-12T18:12:52", "url": "https://files.pythonhosted.org/packages/75/cb/46f14f6eec4f42b102e581222bd495d49800c4a5b8f5e43302527d662357/feed2exec-0.3.1-py3-none-any.whl" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "05053a661ba77cb75b9a58a9d1de6913", "sha256": "78b048d7cea7da1ab3daee49f477c4669445c7e8dc0c2e08127fffd6a5890ed3" }, "downloads": -1, "filename": "feed2exec-0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "05053a661ba77cb75b9a58a9d1de6913", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 41566, "upload_time": "2017-09-14T21:22:44", "url": "https://files.pythonhosted.org/packages/d5/8f/315fdd41f8206af17bdb1cd56162e8f960ffbd8b095248c6f09f2be01f50/feed2exec-0.4-py3-none-any.whl" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "2ae2622b9519050ec25dbb1a1cb17c45", "sha256": "ecf14e5e02e83bd49cc5b9e43fdb4f98ba08bff914066f00f0706eed2704995a" }, "downloads": -1, "filename": "feed2exec-0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "2ae2622b9519050ec25dbb1a1cb17c45", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 65444, "upload_time": "2017-09-21T17:50:41", "url": "https://files.pythonhosted.org/packages/d5/d3/291d429150cc0e7f9bddbfddb526fa394a7df19f035b0347bdfa82f295d9/feed2exec-0.5-py3-none-any.whl" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "f04e2a16c8da8260afff87d6101000de", "sha256": "2ec0d160fc8caa1748c5eccac06d483fbc4355da05b32f974b46bb8cdf043c8c" }, "downloads": -1, "filename": "feed2exec-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f04e2a16c8da8260afff87d6101000de", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 81589, "upload_time": "2017-09-21T23:02:13", "url": "https://files.pythonhosted.org/packages/0d/23/7291368b6a36d0a6165a677e8ec99cacb26e5a1e840035e68268e94695a1/feed2exec-0.5.1-py3-none-any.whl" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "36d90b921b38c63d4601893cfe20afa9", "sha256": "8c9279da43054962281c0bb7c144a78c36abea1c151dd1d623c25df6801de221" }, "downloads": -1, "filename": "feed2exec-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "36d90b921b38c63d4601893cfe20afa9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 83766, "upload_time": "2017-10-05T18:24:09", "url": "https://files.pythonhosted.org/packages/79/12/6688e46275e9087853852147e2e27087a6e8be1f2eb01d39e744132389be/feed2exec-0.6.0-py3-none-any.whl" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "e2d9913b8b54e398cba17f1db62b5ccc", "sha256": "d79fc935de22940dd1cb5f051935767f07a3a439fdb1a16d38b33228c45647ac" }, "downloads": -1, "filename": "feed2exec-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e2d9913b8b54e398cba17f1db62b5ccc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 86387, "upload_time": "2017-10-12T20:27:51", "url": "https://files.pythonhosted.org/packages/3a/06/41382afcf0ad97600bd8413dd4cba21cfc55dd67b868aae1bb800e8ff8ec/feed2exec-0.7.0-py3-none-any.whl" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "e5be16daf8bd91026a1582d7990737a7", "sha256": "40629bf6eace7aab47bc14fde0d048d6bcb1f194fc44e1237fd4ac55e2b9bb29" }, "downloads": -1, "filename": "feed2exec-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e5be16daf8bd91026a1582d7990737a7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 92336, "upload_time": "2017-10-18T19:04:06", "url": "https://files.pythonhosted.org/packages/c3/8c/6c4c6ceebf70e09e9a280d276eae994a991dc63fe77bab83a2b3c2ad838c/feed2exec-0.8.0-py3-none-any.whl" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "1cf55e02896716aadc65d7a3f5e6d5ec", "sha256": "6fe762d8b723e17fe6dc0bc07f18e59fc1ea3161fadf660b9c1f6f27a677f2e4" }, "downloads": -1, "filename": "feed2exec-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1cf55e02896716aadc65d7a3f5e6d5ec", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 93330, "upload_time": "2017-10-24T19:55:24", "url": "https://files.pythonhosted.org/packages/d0/ff/30e5ae804fa3c6bdf4ddf9b606c8df74b06294da0764ecb828d6836a6e34/feed2exec-0.9.0-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "daf1cf6ff5805a9ef6e48212c3039cb8", "sha256": "2ea95f579808820775ea4f872ebdce225544d4617adb962011273fd724a912f4" }, "downloads": -1, "filename": "feed2exec-0.15.0-py3-none-any.whl", "has_sig": false, "md5_digest": "daf1cf6ff5805a9ef6e48212c3039cb8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 113231, "upload_time": "2019-10-03T17:02:33", "url": "https://files.pythonhosted.org/packages/26/f6/bc4df4afa51a0a6fe2260278506dc6c033c8b47571e34e5117199de2f142/feed2exec-0.15.0-py3-none-any.whl" } ] }