Skip to main content

dropboxdol

dropbox with a simple (dict-like or list-like) interface

To install: pip install dropboxdol

Setup

Note: To use dropboxdol, you'll need to have a dropbox access token. Additionally, that token should be allowed to do the operation that you are doing. For example, you only need the "sharing.write" permission to CREATE a (new) shared link.

See more information in Dropbox's Auth Guide.

By default, dropboxdol looks for the access tokens and other information is (well, really, the dropbox API) needs) in the "default_dropbox_config.json" file of the dropboxdol app data. You can interact with those files via dropboxdol.config_store, which has a dict-like interface to the files in that folder.

If you don't have a "default_dropbox_config.json" file, you'll need to specify the connection config explicitly (by specifying a config dict, a filepath, filename of the config_store).

Note that at this point, dropbox only dishes out temporary access tokens. This means you can't just save an access token once and be over with it. So to get the convenience of automatic connections, you'll need to specify not only a oauth2_access_token, but also a oauth2_refresh_token, an app_key and an app_secret.

You can read all about that annoying stuff in the Dropbox's Auth Guide.

But here's a few things to make it a bit less painful:

  • make an "app" in the app console
  • specify scope and permissions you want on it
  • note down the app key and the app secret

then use the following, which will walk you through the steps to get your access and refresh tokens.

These will then be stored in the config_file of your choice, so that all you have to do is mention the file to get the connection.

from dropboxdol import create_config_file

create_config_file(
    config_file="NAME_OF_YOUR_APP_OR_WHATEVER_NAME_YOU_WILL_REMEMBER.json",
    app_key="YOUR_APP_KEY",
    app_secret="YOUR_APP_SECRET",
)

If you already have a config file for this app, with app_key and app_secret, you can update the tokens by doing this:

from dropboxdol import complete_config_file_with_refresh_token

complete_config_file_with_refresh_token(
    config_file="NAME_OF_YOUR_APP_OR_WHATEVER_YOU_CALLED_THAT_CONFIG.json",
)

If you want to edit some configs, you can do so by editing the file directly, or use create_or_edit_config_file.

from dropboxdol import create_or_edit_config_file

create_or_edit_config_file(
    config_file="CONFIG_FILE.json",
    # whatever edits you want to make... (specifying None will skip that config, leaving it unchanged)
    oauth2_access_token=None,
    oauth2_refresh_token=None,
    app_key=None,
    app_secret=None,
)

Examples

Get a dropbox "store"

from dropboxdol import DropboxLinkReaderWithToken

s = DropboxLinkReaderWithToken(
    url="https://www.dropbox.com/sh/0ru09jmk0w9tdnr/AAA-PPON2sYmwUUoGQpBQh1Ia?dl=0"
)
keys = list(s)
keys
['inner_folder',
'b1467f55540c4695bf483bc542e43256',
'0b98e2af76c94a0a9cc2808866dd62de',
'3372aa35ea444c758bfa2e4599b2576d',
'9de9d98a4c4648cca1bc1131c307a365',
'91c744890d374dd8bc914f1153311b0c',
'57af886dd22f4a23a678a3de3eb996a0',
'43ba127e5e9245ec983c9f39e4ed7306']

From a local path (but talking to the remote files)

from dropboxdol import DropboxFiles
from i2 import Sig

t = DropboxFiles("/Apps/py2store/py2store_data")
list(t)
['/test', '/test.txt', '/another_test.txt']
t["/test.txt"]
b'This is a test.\nSee it work.\nAnd what about unicode? \xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\xc4\x93\xc4\x97\xc4\x99?'

(Your token needs the "sharing.write" permission to CREATE a (new) shared link.)

>>> from dropboxdol import dropbox_link
>>> local_file = '/Users/thorwhalen/Dropbox/Apps/py2store/py2store_data/test.txt'
>>> dropbox_url = dropbox_link(local_file)
>>> print(dropbox_url)
https://www.dropbox.com/scl/fi/3o8ooqje4f497npxdeiwg/test.txt?rlkey=x9jsd8u7k147x6fzc7stxozqe&dl=0

If you want to talk "relative" to the dropbox root dir, do this:

>>> from functools import partial
>>> my_dropbox_link = partial(dropbox_link, dropbox_local_rootdir='/Users/thorwhalen/Dropbox')

If you want a "direct (download) link", do this:

>>> dl1_link = my_dropbox_link('Apps/py2store/py2store_data/test.txt', dl=1)
'https://www.dropbox.com/scl/fi/3o8ooqje4f497npxdeiwg/test.txt?rlkey=x9jsd8u7k147x6fzc7stxozqe&dl=1'

Easy read/write access to your dropbox files

A persister for dropbox.

>>> import json
>>> import os
>>> from dropboxdol import DropboxPersister
>>> configs = json.load(open(os.path.expanduser('~/.py2store_configs.json')))
>>> s = DropboxPersister('/py2store_data/test/', **configs['dropbox']['__init__kwargs'])
>>> if '/py2store_data/test/_can_remove' in s:
...     del s['/py2store_data/test/_can_remove']
...
>>>
>>> n = len(s)
>>> if n == 1:
...     assert list(s) == ['/py2store_data/test/_can_remove']
...
>>> s['/py2store_data/test/_can_remove'] = b'this is a test'
>>> assert len(s) == n + 1
>>> assert s['/py2store_data/test/_can_remove'] == b'this is a test'
>>> '/py2store_data/test/_can_remove' in s
True
>>> del s['/py2store_data/test/_can_remove']

Metadata

Release files for dropboxdol 0.0.16

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dropboxdol 0.0.16
File Size Uploaded
dropboxdol-0.0.16.tar.gz 28.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dropboxdol 0.0.16
File Interpreter ABI Platform
dropboxdol-0.0.16-py3-none-any.whl Python 3 none any Details

Total release size: 49.7 kB

Release files / dropboxdol-0.0.16.tar.gz

Download URL dropboxdol-0.0.16.tar.gz
Size 28.7 kB
Tags Source
SHA-256 checksum
How to use checksums
846e95e3016e75cb4e0f9023aea44f889f0bd09cdbc3cbebef7502ffeb2cf2e6
BLAKE2b-256 checksum
How to use checksums
e00e78d80ccf8bdb6385b5666787bb8a6c93601b8031adf870db39cbbd10f37f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / dropboxdol-0.0.16-py3-none-any.whl

Download URL dropboxdol-0.0.16-py3-none-any.whl
Size 21.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c1f248a382c59eac87bec1f747487604112a739bebf9f5c858dd2a04225dfc6c
BLAKE2b-256 checksum
How to use checksums
2646e49dee6738492eaf66b023d9cf4effb4f91754a043394df992b1ba03d295
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.0.17

2 release files

This release

0.0.16 This release

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page