Skip to main content

Python module implementing the Hydrus API

Project description

Hydrus API

Python module implementing the Hydrus API.

Requirements

  • Python >= 3.9 (I think; Let me know if you can use this with an older Python version)
  • requests library (pip install requests)

Installation

$ pip install hydrus-api

If you want to use the package in your own (installable) Python project, specify it in your setup.py using: install_requires=['hydrus-api'].

Contributing

Please feel free to contribute in the form of a pull request when the API changes (keep close to the existing code style or you'll create more work than help); I've been bad about merging these until now, I'll try to be more conscientious of them.

Try to avoid checking in your modifications to .vscode/settings.json and .env please.

I can't guarantee any fixed timespan in which I'll update this module myself when the API changes -- the only reason it was updated now is because prkc kept bugging me; So if you desperately need this module to be updated, please create a pull request.

Description

Read the (latest) official documentation here.

When instantiating hydrus_api.Client the acccess_key is optional, allowing you to initially manually request permissions using request_new_permissions(). Alternatively there is hydrus_api.utils.request_api_key() to make this easier. You can instantiate a new Client with the returned access key after that.

If the API version the module is developed against and the API version of the Hydrus client differ, there is a chance that using this API module might have unintended consequences -- be careful.

If something with the API goes wrong, a subclass of APIError (MissingParameter, InsufficientAccess, DatabaseLocked, ServerError) or APIError itself will be raised with the requests.Response object that caused the error. APIError will only be raised directly, if the returned status code is unrecognized.

The module provides Permission, URLType, ImportStatus, TagAction, TagStatus, PageType, PageState, FileSortType, ServiceType, NoteConflictResolution and DuplicateStatus Enums for your convenience. Due to a limitation of JSON, all dictionary keys that are returned by the client will be strings, so when using Enum members to index a dictionary that was returned by the client, make sure to use the string representation of its value. Usually you would have to do this: str(Enum.member.value), but the listed Enums allow you to just do str(Enum.member) instead to get the string representation of the member's value directly.

The module provides convenience functions in hydrus_api.utils that are not strictly part of the API, e.g. add_and_tag_files() and get_page_list(); read their docstrings to figure out what they do.

The client methods add_file() and add_and_tag_files() accept str, pathlib.Path and objects that implement the internal BinaryFileLike protocol (i.e. all objects that provide a read()-method that returns bytes).

The function hydrus_api.utils.parse_hydrus_metadata_file behaves similarly, except that it accepts objects that implement the internal TextFileLike protocol (i.e. its read()-method returns a string).

Check out examples/ for some example applications. Some of them might be outdated, but they should be good enough to give you an idea how to use the module.

Changes with v5.0.0

To avoid confusion, starting with v5.0.0, responses will be returned unmodified from the API, exactly like described in the official documentation. The previous functionality of automatically indexing a single top-level key has been removed.

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

hydrus_api-5.1.1.tar.gz (25.9 kB view details)

Uploaded Source

Built Distribution

hydrus_api-5.1.1-py3-none-any.whl (37.2 kB view details)

Uploaded Python 3

File details

Details for the file hydrus_api-5.1.1.tar.gz.

File metadata

  • Download URL: hydrus_api-5.1.1.tar.gz
  • Upload date:
  • Size: 25.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.6 Linux/6.10.10-arch1-1

File hashes

Hashes for hydrus_api-5.1.1.tar.gz
Algorithm Hash digest
SHA256 a00dc36dd5fe31166222708a5eeac174a954150e23794fa31ebf4dc4c1074262
MD5 de389c98dda84b33a901a5b8649fc1d1
BLAKE2b-256 d979b888c8f7649b4890bbefc7933ec9c2a0d21624e5aca8a44d8fb587c3454c

See more details on using hashes here.

File details

Details for the file hydrus_api-5.1.1-py3-none-any.whl.

File metadata

  • Download URL: hydrus_api-5.1.1-py3-none-any.whl
  • Upload date:
  • Size: 37.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.6 Linux/6.10.10-arch1-1

File hashes

Hashes for hydrus_api-5.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2317d9cd5f1e0814127ba7b657426dac5214beeb3be6f9b9b95de3532eb47283
MD5 5e5c77e89d588b087049e5069f2aa993
BLAKE2b-256 f16e34f4a2cf28ee5bec42a039000113afd10524d264fb5e44a84c83a481fe33

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page