Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/educationwarehouse/edwh-ghost
Python Client for Ghost CMS v3/v4/v5
https://github.com/educationwarehouse/edwh-ghost
ghost ghost-cms python
Last synced: about 1 month ago
JSON representation
Python Client for Ghost CMS v3/v4/v5
- Host: GitHub
- URL: https://github.com/educationwarehouse/edwh-ghost
- Owner: educationwarehouse
- Created: 2022-04-11T14:29:19.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-06-17T15:14:43.000Z (7 months ago)
- Last Synced: 2024-12-08T15:52:23.326Z (about 1 month ago)
- Topics: ghost, ghost-cms, python
- Language: Python
- Homepage: https://pypi.org/project/edwh-ghost
- Size: 156 KB
- Stars: 7
- Watchers: 2
- Forks: 2
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# EDWH Ghost Client
This Client is compatible with v3 and v4 of the Ghost CMS [Admin](https://ghost.org/docs/admin-api)
and [Content](https://ghost.org/docs/content-api/) API's.### Installation
```bash
pip install edwh-ghost
```### Usage
The `GhostAdmin` class can be instantiated as follows:
```python
from ghost import GhostAdmin
from dotenv import dotenv_valuesconfig = dotenv_values(".env")
# .env can be used, but config values can also be simply hardcoded
ga = GhostAdmin(
config["GHOST_SITE"],
adminAPIKey=config["GHOST_ADMIN_KEY"],
contentAPIKey=config["GHOST_CONTENT_KEY"],
api_version="v4", # works like a train
)
print(ga.site())
```If no admin API key is available, the `GhostContent` class can be used, which has read-only access to public endpoints.
After creating a `GhostClient` instance, the different Resources can be used:
```python
from ghost.resources import *posts: PostResource = ga.posts
# READ
multiple = posts(limit=5) # Ghost Result Set
# alias for
posts.get(limit=5) # Ghost Result Setsome_post = posts.get("some_id") # Ghost Result
for post in posts.paginate():
# iterate without limit
print(post) # Ghost Result# UPDATE
some_post.update({...}) # response dict
# alias:
posts.update("some_id", {...}) # response dict
# bulk:
multiple.update({...}) # response dict# DELETE
some_post.delete() # bool of success
# alias:
posts.delete("some_id") # bool of success
# bulk:
multiple.delete() # list of bools of success# CREATE
# one:
posts.create(title="...", etc="...") # response dict
# bulk:
posts.create({...}, {...}) # list of response dicts# some resources are read only:
authors: AuthorResource = ga.authorsauthors() # Ghost Result Set
authors.delete() # error
```# Available Resources:
| Resource Class[^1] | Ghost Path | Method[^2] | Related Tests | Admin? | Content? |
|--------------------|------------|------------------------------------------------|-------------------------------------------------------------|---------|----------|
| Posts | /posts | ghost.posts(), ghost.post() | test_1_posts, test_10_ghost_content, test_11_ghost_paginate | ✓ | ✓ |
| Pages | /pages | ghost.pages(), ghost.page() | test_2_pages | ✓ | ✓ |
| Authors | /authors | ghost.authors(), ghost.author() | test_4_authors | ~[^3] | ✓ |
| Tags | /tags | ghost.tags(), ghost.tag() | test_3_tags | ✓ | ✓ |
| Members | /members | ghost.members(), ghost.member() | test_9_members | ✓ | ✗ |
| Images | /images | ghost.images.upload() | test_6_images | ✓ | ✗ |
| Themes | /themes | ghost.themes.upload(), ghost.themes.activate() | test_7_themes | ✓ | ✗ |
| Site | /site | ghost.site() | test_8_site_and_settings | ✓ | ✗ |
| Settings | /settings | ghost.settings() | test_8_site_and_settings | ~[^3] | ✓ |
| Users | /users | ghost.user(), ghost.users() | test_12_users, test_13_users_content | ✓ | ✗ |[^1]: these classes live in `ghost.resources`
[^2]: where `ghost` is an instance of a `GhostClient` subclass (`GhostContent` or `GhostAdmin`)
[^3]: Content APIs are also accessible through the `GhostAdmin` client, they are however read-only## Unavailable Resources:
| Resource Name | Ghost Path | Admin? | Content? | Reason |
|---------------|------------|---------|----------|----------------|
| Tiers | /tiers | ✓ | ✓ | Testing Failed |
| Offers | /offers | ✓ | ✗ | Testing Failed |
| Webhooks | /webhooks | ✓ | ✗ | TODO |