From 4af5c9aed71191ed1d0756b58dad4f13151ffad0 Mon Sep 17 00:00:00 2001 From: Sunil Patra Date: Mon, 20 Apr 2020 19:53:46 +0530 Subject: [PATCH] pCloud: Added support for interchangeable root folder for pCloud backend - #3957 --- backend/pcloud/pcloud.go | 14 ++++++++++---- docs/content/pcloud.md | 31 +++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/backend/pcloud/pcloud.go b/backend/pcloud/pcloud.go index 08c0e97d8..51c9ec209 100644 --- a/backend/pcloud/pcloud.go +++ b/backend/pcloud/pcloud.go @@ -41,8 +41,7 @@ const ( rcloneEncryptedClientSecret = "ej1OIF39VOQQ0PXaSdK9ztkLw3tdLNscW2157TKNQdQKkICR4uU7aFg4eFM" minSleep = 10 * time.Millisecond maxSleep = 2 * time.Second - decayConstant = 2 // bigger for slower decay, exponential - rootID = "d0" // ID of root folder is always this + decayConstant = 2 // bigger for slower decay, exponential rootURL = "https://api.pcloud.com" ) @@ -89,13 +88,19 @@ func init() { Default: (encoder.Display | encoder.EncodeBackSlash | encoder.EncodeInvalidUtf8), + }, { + Name: "root_folder_id", + Help: "Fill in for rclone to use a non root folder as its starting point.", + Default: "d0", + Advanced: true, }}, }) } // Options defines the configuration for this backend type Options struct { - Enc encoder.MultiEncoder `config:"encoding"` + Enc encoder.MultiEncoder `config:"encoding"` + RootFolderID string `config:"root_folder_id"` } // Fs represents a remote pcloud @@ -265,7 +270,8 @@ func NewFs(name, root string, m configmap.Mapper) (fs.Fs, error) { return err }) - // Get rootID + // Get rootFolderID + rootID := f.opt.RootFolderID f.dirCache = dircache.New(root, rootID, f) // Find the current root diff --git a/docs/content/pcloud.md b/docs/content/pcloud.md index fbd3e124e..9e7f3a94b 100644 --- a/docs/content/pcloud.md +++ b/docs/content/pcloud.md @@ -112,6 +112,28 @@ Deleted files will be moved to the trash. Your subscription level will determine how long items stay in the trash. `rclone cleanup` can be used to empty the trash. +### Root folder ID ### + +You can set the `root_folder_id` for rclone. This is the directory +(identified by its `Folder ID`) that rclone considers to be the root +of your pCloud drive. + +Normally you will leave this blank and rclone will determine the +correct root to use itself. + +However you can set this to restrict rclone to a specific folder +hierarchy. + +In order to do this you will have to find the `Folder ID` of the +directory you wish rclone to display. This will be the `folder` field +of the URL when you open the relevant folder in the pCloud web +interface. + +So if the folder you want rclone to use has a URL which looks like +`https://my.pcloud.com/#page=filemanager&folder=5xxxxxxxx8&tpl=foldergrid` +in the browser, then you use `5xxxxxxxx8` as +the `root_folder_id` in the config. + ### Standard Options @@ -152,4 +174,13 @@ See: the [encoding section in the overview](/overview/#encoding) for more info. - Type: MultiEncoder - Default: Slash,BackSlash,Del,Ctl,InvalidUtf8,Dot +#### --pcloud-root-folder-id + +Fill in for rclone to use a non root folder as its starting point. + +- Config: root_folder_id +- Env Var: RCLONE_PCLOUD_ROOT_FOLDER_ID +- Type: string +- Default: "d0" +