Asynchronous API client for rentry.co (mirror: rentry.org)
This package allows you to interact with the rentry.co (or rentry.org) service.
Rentry.co is a markdown pastebin and publishing service that offers features such as previews, custom URLs, and editing.
Please note that this library is not developed by the official authors of rentry.co. It replicates the functionality of the official console utility, but provides it as an asynchronous API client. With this package you can manage your pages: create, edit and delete, as well as get data in text, PNG or PDF formats. All directly from your asynchronous Python application.
pip install aiorentry
You can setup client in 2 ways:
Caution
If you prefer the classic way, you should call await client.setup()
during initialization and await client.close()
during completion
import asyncio
from aiorentry.client import Client
async def main():
client = Client('https://rentry.co')
await client.setup()
# Your code here
await client.close()
asyncio.run(main())
import asyncio
from aiorentry.client import Client
async def main():
async with Client('https://rentry.co') as client:
# Your code here
asyncio.run(main())
...
# Create new page
page = await client.new_page(
'## Hello world from awesome API',
)
print(page)
...
Page(url='m2e2wpe8', edit_code='hUHeRUei', text='## Hello world from awesome API')
...
# Create new page with custom url and edit_code
awesome_page = await client.new_page(
'## Hello world from awesome API',
url='awesome-url',
edit_code='qwerty=)'
)
print(awesome_page)
...
Page(url='awesome-url', edit_code='qwerty=)', text='## Hello world from awesome API')
...
# Edit page
await client.edit_page(
'### Updated Hello world',
url='awesome-url',
edit_code='qwerty=)',
)
...
...
# Delete page
await client.delete_page(
url='awesome-url',
edit_code='qwerty=)',
)
...
...
# Get raw content
content = await client.raw('awesome-url')
print(content)
...
### Updated Hello world
...
# Get PDF
with open('page.pdf', mode='wb') as fp:
fp.write(await client.pdf(page.url))
...
...
with open('page.png', mode='wb') as fp:
fp.write(await client.png(page.url))
...
Note
By default, a new instance of aiohttp.ClientSession
will be created automatically. So normally you don't need to worry about this.
If you don't want to automatically create the session object inside the client, you can pass an existing aiohttp.ClientSession
to the client constructor.
Caution
If you pass an existing session object to the client constructor, then you should care about releasing resources yourself.
The session will not be closed automatically! Even if the asynchronous context manager was used.
from aiohttp import ClientSession, TCPConnector
from aiorentry.client import Client
connector = TCPConnector(
limit=5, # Just for example
)
session = ClientSession(
connector=connector,
)
async with Client('https://rentry.co', session=session) as client:
# Your code here
async with session.get(...) as response:
# You can still use this session object