8000 GitHub - rycus86/ghost-client: Unofficial Ghost API client
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

rycus86/ghost-client

Repository files navigation

Unofficial Ghost API client

Travis PyPI PyPI Coverage Status Maintainability

This is a client library for the Ghost blogging platform API.

Installation

$ pip install ghost-client

Usage

See https://api.ghost.org for documentation on the REST endpoints and available fields and parameters.

from ghost_client import Ghost

# to read the client ID and secret from the database
ghost = Ghost.from_sqlite(
    '/var/lib/ghost/content/data/ghost.db',
    'http://localhost:2368'
)

# or to use a specific client ID and secret
ghost = Ghost(
    'http://localhost:2368',
    admin_key=='admin API key'
)


# print the server's version
print(ghost.version)

# create a new tag
tag = ghost.tags.create(name='API sample')

# create a new post using it
post = ghost.posts.create(
    title='Example post', slug='custom-slug',
    markdown='',  # yes, even on v1.+
    custom_excerpt='An example post created from Python',
    tags=[tag]
)

# list posts, tags and users
posts = ghost.posts.list(
    status='all',
    fields=('id', 'title', 'slug'),
    formats=('html', 'mobiledoc', 'plaintext'),
)
tags = ghost.tags.list(fields='name', limit='all')
users = ghost.users.list(include='count.posts')

# use pagination
while posts:
    for post in posts:
        print(post)
        posts = posts.next_page()

print(posts.total)
print(posts.pages)

# update a post & tag
updated_post = ghost.posts.update(post.id, title='Updated title')
updated_tag = ghost.tags.update(tag.id, name='Updated tag')

# note: creating, updating and deleting a user is not allowed by the API

# access fields as properties
print(post.title)
print(post.markdown)     # needs formats='mobiledoc'
print(post.author.name)  # needs include='author'

# delete a post & tag
ghost.posts.delete(post.id)
ghost.tags.delete(tag.id)

# upload an image
ghost.upload(file_obj=open('sample.png', 'rb'))
ghost.upload(file_path='/path/to/image.jpeg', 'rb')
ghost.upload(name='image.gif', data=open('local.gif', 'rb').read())

The logged in credentials will be saved in memory and on HTTP 401 errors the client will attempt to re-authenticate once automatically.

Responses are wrapped in models.ModelList and models.Model types to allow pagination and retrieving fields as properties.

License

MIT

About

Unofficial Ghost API client

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  
0