Skip to main content

A Python toolkit to interact with Stingle Photos database and data files

Project description

stingle-photos-toolkit

A Python library to interact with Stingle Photos database and data files. It supports connecting to the MySQL database, either live or a dump restore, and to the file system or a copy of it, either local or S3.

Please note that this library does not interact with the Stingle API, but directly with files and database, so it's suitable only for self-hosted setups.

Project status

This is a work in progress: documentation is still missing. However, it works. You can refer to the example below, it should be pretty clear how to use it.

Installing

The package is published on PyPi so you can install it with your preferred package manager, for example:

pip install stingle-photos-toolkit

Building from source

You need to have uv installed to build the wheel:

uv build

Then, you can install the wheel in the virtualenv you prefer (no uv required) with something like:

pip install dist/*.whl

Using

This is a fairly complete example of everything the library currently supports:

from StinglePhotosToolkit import Client, DataFolderType

# Initialize the client
client = Client(
    mysql_host="localhost",
    mysql_database="stingle_api",
    mysql_username="user",
    mysql_password="mypassword",
    data_folder_type=DataFolderType.S3, # If DataFolderType.Local you need to pass the data_folder_path argument instead of the next 4 ones
    data_folder_bucket="my-bucket",
    data_folder_region="eu-central-1",
    data_folder_access_key="MYACCESSKEY",
    data_folder_secret_key="mySecr3tKey",
    stingle_username="mymail@example.org",
    stingle_key_mnemonic="my key recovery mnemonic words", # Instead, you can pass the stingle_password argument if you backed up the key to the server: the key will be retrieved and decrypted from the database
)

# Opens the MySQL connection and gets some data about the user (id, key if needed)
client.open()

# Get a list of albums available for the users (id and name are returned)
albums = client.get_albums()

# Get a list of files from the first album, get 3 of them
files = client.list_files(album_id=albums[0].id, limit=3)

# Get a list of files that are not in an album, skip the first 6 and get 3 of them
files = client.list_files(skip=6, limit=3)

# Decrypt the files and save them with their original filename
for f in files:
    with open(f.file_name, "wb") as out:
        client.write_file(f, out)
client.close()

License

This is released as GNU AFFERO GENERAL PUBLIC LICENSE, the same license of the Stingle API code.

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

stingle_photos_toolkit-0.1.0.tar.gz (33.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stingle_photos_toolkit-0.1.0-py3-none-any.whl (32.5 kB view details)

Uploaded Python 3

File details

Details for the file stingle_photos_toolkit-0.1.0.tar.gz.

File metadata

File hashes

Hashes for stingle_photos_toolkit-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0f3f27dd103369be5ba54b73cf14dc72cbc4fdc77b117338aa0d3e808425835c
MD5 ca8a0b7687d7560d7a5e96dfebe2a581
BLAKE2b-256 1792fb3c437c58e2b0d2c194835878e7be0c5d6c1ddf3f2c825b0de72c11040c

See more details on using hashes here.

File details

Details for the file stingle_photos_toolkit-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for stingle_photos_toolkit-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 15a51248fbffd5d9b5097aaee94051e2ad1cd5d9b7aa2fe7484831880e93c2ed
MD5 64e6e1207e16c2b28c5f29649c6194e4
BLAKE2b-256 50cc7b8a35fa526995a89b93aa6976c338520f38b6459550b62df7441023f65f

See more details on using hashes here.

Supported by

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