🐍 📓 Python API for Wallabag
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
FoxMaSk 9a8a12219b upd repo 4 months ago
wallabagapi upd repo 4 months ago
.gitignore v1.3.2 2 years ago
.gitlab-ci.yml drop complexity 1 year ago
CHANGELOG Add CHANGELOG 2 years ago
CONTRIBUTING.md Update CONTRIBUTING.md 2 years ago
LICENSE upd requirements.txt 2 years ago
MANIFEST.in upd repo 4 months ago
README.rst upd repo 4 months ago
VERSION.txt upd repo 4 months ago
requirements-dev.txt upd repo 4 months ago
requirements.txt upd repo 4 months ago
setup.cfg upd repo 4 months ago
setup.py upd repo 4 months ago
wallabag.png wallabag post 7 years ago
wallabag_api_key.png create api client 7 years ago

README.rst

Wallabag API

Python API for Wallabag v2.4.2

Requirements :

  • httpx

Installation:

to get the project, from your virtualenv, do :

git clone https://git/afpy.org/foxmask/wallabagapi/

or

pip install wallabagapi

Creating a post :

  1. request the token, if you don't have it yet
  2. create the post
#!/usr/bin/env python

import httpx

from wallabagapi.wallabag import Wallabag
# settings
my_host = 'http://localhost:8080'


async def main(loop):

    params = {'username': 'foxmask',
              'password': 'mypass',
              'client_id': 'myid',
              'client_secret': 'mysecret',
              'extension': 'pdf'}

    # get a new token
    token = await Wallabag.get_token(host=my_host, **params)

    wall = Wallabag(host=my_host,
                    client_secret=params.get('client_secret'),
                    client_id=params.get('client_id'),
                    token=token,
                    extension=params['extension'],
                    aio_sess=session)

    # initializing
    async with httpx.AsyncClient() as client:

        url = 'https://foxmask.trigger-happy.eu'
        title = 'foxmask\'s  blog'

        await client.post_entries(url, title, '', 0, 0)

        url = 'https://trigger-happy.eu'
        title = 'Project TrigerHappy'

        await wall.post_entries(url, title, '', 0, 0)

        # get all the articles
        my_wallabag = await wall.get_entries()

        all_article = my_wallabag['_embedded']['items']

        for article in all_article:
            print(article['id'], article['title'])

        # get the version of wallabag
        version = await wall.version
        print(f"version {version}")

        # export one article into PDF
        my_wallabag = await wall.get_entry_export(entry=1)
        with open("foobar.pdf", "wb") as f:
            f.write(my_wallabag)

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main(loop))

this will give you something like this :

image

Testing :

Install Wallabag V2 on your own host like explain here http://doc.wallabag.org/en/v2/user/installation.html

Then run the development version (with make run)

Then create a client API like explain here http://doc.wallabag.org/en/v2/developer/api.html

this will give you something like this

![Wallabag](https://gitlab.com/foxmask/wallabagapi/-/raw/master/wallabag_api_key.png)

Then replace the client_id / client_secret / login / pass to wallabag_test.py and run

python wallabag_test.py