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)

for f in files:
    # Decrypt the file and save it with its original filename
    with open(f.file_name, "wb") as out:
        client.write_file(f, out)
    # You can also get the file content as bytes
    file_data = client.get_file(f)

# Close the connection to MySQL
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.1.tar.gz (33.8 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.1-py3-none-any.whl (32.5 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for stingle_photos_toolkit-0.1.1.tar.gz
Algorithm Hash digest
SHA256 100ea2f3fa928916d221384a38ede80a5533c747f5d6a470f6fc04476079f10f
MD5 e86a9258035588ec564c16e57d5889d8
BLAKE2b-256 b9831af04c014aca40da38297f90dab208663fe2b95dac02ecb30d7d3dc9957b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stingle_photos_toolkit-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d41692f18b833f257d74e44a4a0c16a9e14affc0c08be6460e90b4cddde1995b
MD5 6418c2458b0e63e2672faf9d4fd489eb
BLAKE2b-256 875ccbf707d52d0f0a15839869b09b80ded18914996bf5ad6586f841c856b4de

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