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.14

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.14
File Size Uploaded
dropboxdol-0.0.14.tar.gz 26.0 kB Details

Built distribution (wheel)

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

Total release size: 46.3 kB

Release files / dropboxdol-0.0.14.tar.gz

Download URL dropboxdol-0.0.14.tar.gz
Size 26.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c821a872b9ab85c0299510f70c1006bdac821b9fc045f0f40d097e643177f1fe
BLAKE2b-256 checksum
How to use checksums
5797b109992a7fa2bae5fa1e9a6bccea1ea7ce1a19e698c2faab48256002afc6
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.14-py3-none-any.whl

Download URL dropboxdol-0.0.14-py3-none-any.whl
Size 20.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dcb3a18b55e1b42fabfe6e00120ad0db5b54f7e7afbcdb26d8796ad02a3a19f9
BLAKE2b-256 checksum
How to use checksums
848a7cb36b622d1b537477891b618780309f2446670e48a80dd38f96a272f575
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

0.0.16

2 release files

0.0.15

2 release files

This release

0.0.14 This release

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