Skip to main content

A python wrapper for rclone.

Project description

MIT License PyPI version

rclone-python ☁️

A python wrapper for rclone that makes rclone's functionality usable in python. rclone needs to be installed on the system for the wrapper to work.

demo gif

Features ⚒️

  • Copy, move and sync files between remotes
  • Delete and prune files/directories
  • List files in a directory including properties of the files.
  • List available remotes.
  • Generate hashes from files or validate them with their hashsum.
  • Create new remotes
  • Check available remotes
  • Create and manage public links.
  • Check the currently installed rclone versions and if updates are available.

Installation 💾

rclone_python can be installed using pip

pip install rclone-python

or by cloning this repository and running from within the root of the project

pip install .

How to use 💡

All functionally of this wrapper is accessible through rclone. The following example checks if rclone is installed.

from rclone_python import rclone

print(rclone.is_installed())
True

Create new remote

Create a new rclone remote connection with rclone's default client-id and client-secret.

from rclone_python import rclone
from rclone_python.remote_types import RemoteTypes

rclone.create_remote('onedrive', RemoteTypes.onedrive)

Additionally, client-id and client-secret can be used with many cloud providers.

from rclone_python import rclone
from rclone_python.remote_types import RemoteTypes

rclone.create_remote('onedrive', RemoteTypes.onedrive, client_id='YOUR_CLIENT_ID', client_secret='YOUR_CLIENT_SECRET')

Copy

from rclone_python import rclone

# copy all file in the test_dir on OneDrive to the local data folder.
rclone.copy('onedrive:data', 'data', ignore_existing=True, args=['--create-empty-src-dirs'])
Copying onedrive:data to data ⠸ ━━━━━━━━━━━━━━━━━━╸━━━━━━━━━━━━━━━━━━━━━  47% 110.0/236.5 MiB 0:00:04
 ├─video1.webm                ⠸ ━━━━━━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━  31% 24.4/78.8 MiB   0:00:06
 ├─video2.webm                ⠸ ━━━━━━━━━━━━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━  45% 35.5/78.8 MiB   0:00:03
 └─video3.webm                ⠸ ━━━━━━━━━━━━━╸━━━━━━━━━━━━━━━━━━━━━━━━━━  35% 27.6/78.8 MiB   0:00:05

Delete

Delete a file or a directory. When deleting a directory, only the files in the directory (and all it's subdirectories) are deleted, but the folders remain.

from rclone_python import rclone

# delete a specific file on onedrive
rclone.delete('onedrive:data/video1.mp4')

Prune

from rclone_python import rclone

# remove the entire test_dir folder (and all files contained in it and it's subdirectories) on onedrive
rclone.purge('onedrive:test_dir')

Get Hash

from rclone_python import rclone
from rclone_python.hash_types import HashTypes

print(rclone.hash(HashTypes.sha1, "box:data")
{'video1.webm': '3ef08d895f25e8b7d84d3a1ac58f8f302e33058b', 'video3.webm': '3ef08d895f25e8b7d84d3a1ac58f8f302e33058b', 'video2.webm': '3ef08d895f25e8b7d84d3a1ac58f8f302e33058b'}

Check

Checks the files in the source and destination match.

  • "=" path means path was found in source and destination and was identical
  • "-" path means path was missing on the source, so only in the destination
  • "+" path means path was missing on the destination, so only in the source
  • "*" path means path was present in source and destination but different.
  • "!" path means there was an error reading or hashing the source or dest.
from rclone_python import rclone

print(rclone.check("data", "box:data"))
(False, [('*', 'video1.webm'), ('=', 'video2.webm'), ('=', 'video2.webm')])

Custom config file

You can define a custom file which rclone shall use by setting it up before running any command. Example with a config file named ".rclone.conf" in current working directory:

import pathlib
from rclone_python import rclone

CONFIG_FILE = pathlib.Path(__file__).parent / ".rclone.conf"

rclone.set_config_file(CONFIG_FILE)
# All upcoming rclone commands will use custom config file

Custom Progressbar

You can use your own rich progressbar with all transfer operations. This allows you to customize the columns to be displayed. A list of all rich-progress columns can be found here.

from rclone_python import rclone

from rich.progress import (
    Progress,
    TextColumn,
    BarColumn,
    TaskProgressColumn,
    TransferSpeedColumn,
)

pbar = Progress(
    TextColumn("[progress.description]{task.description}"),
    BarColumn(),
    TaskProgressColumn(),
    TransferSpeedColumn(),
)
rclone.copy("data", "box:rclone_test/data1", pbar=pbar)
Copying data to data1 ━━━━━━╸━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  17% 5.3 MB/s                                                                                                            
 ├─video1.mp4         ━━━━━━━━━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━  38% 4.2 MB/s                                                                                                            
 ├─video2.mp4         ━╸━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   5% 1.6 MB/s
 └─another.mp4        ━╸━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   4% 1.4 MB/s

Set the log level

The log level can be set using:

rclone.set_log_level(logging.DEBUG)

This will make the wrapper print the raw rclone progress.

Star History

Star History Chart

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

rclone_python-0.1.25.tar.gz (24.2 kB view details)

Uploaded Source

Built Distribution

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

rclone_python-0.1.25-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file rclone_python-0.1.25.tar.gz.

File metadata

  • Download URL: rclone_python-0.1.25.tar.gz
  • Upload date:
  • Size: 24.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rclone_python-0.1.25.tar.gz
Algorithm Hash digest
SHA256 8f4ff961ccd51db5c5ab2cd528448f450ea2ba472b44f83346728e832bc15c4e
MD5 f7137ef37a7123186deffec5b65bfe81
BLAKE2b-256 9ac20a1083f121446a3b847263d23d02cd63ef88182d4883e98b48a31365131c

See more details on using hashes here.

File details

Details for the file rclone_python-0.1.25-py3-none-any.whl.

File metadata

  • Download URL: rclone_python-0.1.25-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rclone_python-0.1.25-py3-none-any.whl
Algorithm Hash digest
SHA256 d0966d599adcff3574655eb71678db3625d00f92160ed6ba4291bd0f9d61175d
MD5 ca172579909c8ec413af41ebfa258e2b
BLAKE2b-256 d381cf1c32b9a040d73b859dd0ec96eb11186084cb8d7107eb31c94ee2a420f8

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