Python package for parsing and generating JSON feeds.
Project description
jsonfeed
jsonfeed is a Python package for parsing and constructing JSON Feeds. It explicitly supports JSON Feed Version 1.1.
Usage
This package's constructor arguments and class variables exactly match the field names defined in the JSON feed spec. I hope that the code is clear enough that the spec can be its granular documentation.
Installation
Install this package with pip:
$ pip install jsonfeed-util
In your Python code, include the line
import jsonfeed
Parsing a JSON feed
import jsonfeed as jf
import requests
# Requesting a valid JSON feed!
r = requests.get('https://arxiv-feeds.appspot.com/json/test')
# Parse from raw text...
feed_from_text = jf.Feed.parse_string(r.text)
# ...or parse JSON separately.
r_json = r.json()
feed_from_json = jf.Feed.parse(r_json)
Constructing a JSON feed
import jsonfeed as jf
me = jf.Author(
name="Lukas Schwab",
url="https://github.com/lukasschwab"
)
feed = jf.Feed("My Feed Title", authors=[me])
item = jf.Item("some_item_id")
feed.items.append(item)
print(feed.to_json())
jsonfeed exposes constructors for five classes of JSON feed objects:
FeedAuthorHubItemAttachment
Note, jsonfeed is designed to be minimally restrictive. It does not require fields that are not required in the JSON Feed spec. This means it's possible to construct non-meaningful JSON feeds (e.g. with this valid Author object: {}).
Examples
arxiv-feeds: converts Atom to JSON feeds.jsonfeed-wrapper: converts scraped HTML to JSON feeds.pandoc-blog: generates a JSON feed for a static site.
Deprecations
See the spec for an overview of deprecated JSON Feed fields. This project (especially the converters and the parsing functions) will stay backwards-compatible when possible, but using deprecated fields when constructing feeds is discouraged.
JSON Feed 1.1
Feed.authoris deprecated. UseFeed.authors.Item.authoris deprecated. UseItem.authors.
Notes
-
Dictionaries maintain insertion order as of Python 3.6.
jsonfeedtakes advantage of this to retain the order suggested in the JSON Feed spec (namely, thatversionappear at the top of the JSON object). This order may not be enforced in earlier versions of Python, but out-of-order JSON Feeds are not invalid. -
I made a conscious decision to shoot for code that's readable––vis à vis the JSON Feed spec––rather than code that's minimal or performant. Additionally, I opted to avoid dependencies outside of the standard library. Hopefully this makes for easy maintenance.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jsonfeed_util-1.2.0.tar.gz.
File metadata
- Download URL: jsonfeed_util-1.2.0.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8917d46be216f2773124e0e45e6bc72a1a939666a1ee2b010371ac1e3e86770c
|
|
| MD5 |
e3eb30d47e48f99dfc939e75cf4e11fa
|
|
| BLAKE2b-256 |
66d06e3c2efef82e1794c2a27549ed8f72edeb080764570cff6d7b185647095d
|
File details
Details for the file jsonfeed_util-1.2.0-py3-none-any.whl.
File metadata
- Download URL: jsonfeed_util-1.2.0-py3-none-any.whl
- Upload date:
- Size: 6.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ecdb6deacbc5a3979d871d07c17e85e0809f537a451cc2e35d2f8901e0311371
|
|
| MD5 |
294eff25dc26d90b3887c58f7dc4a9e9
|
|
| BLAKE2b-256 |
2594f574bb0e053ffbc49b610de6e35a71ab43e7dff095bcd7504598b250bb55
|