Skip to main content

Installing

pip install rdmhelper

Seafile

API documentation: https://download.seafile.com/published/web-api/home.md

Usage

from rdmhelper.keeper import Seafile
sf = Seafile(
    server=server, 
    username=username, 
    password=password)

View Account details

sf.account_info()

List repositories

Seafile is organized in repositories. You need to pass a reposirory id to most functions

sf.repo_list()
repo = sf.repo_list()[0].get('id')

Make dir

 resp = sf.folder_create(repo, 'testfolder')

Upload Folder

add_date=True will append the current date to the name of the uploaded folder. add_date_recursive = True will append the current date to all files in the uploaded folder and subfolders.

sf.folder_upload(
    repo, 
    local_dir='data/',
    remote_dir='/testfolder',
    add_date=True,
    add_date_recursive=False
)

List folder content

content_json = sf.folder_list_content(repo, '/testfolder')

Show Folder Detail

detail_json = sf.folder_detail(repo, 'testfolder/data_2021_07_14/subfolder')

Delete folder

resp = sf.folder_delete(repo, 'testfolder2')

Rename folder

sf.folder_rename(repo, path='testfolder/data_2021_07_14/subfolder', new_name='subfolder_renamed')

Download folder

sf.folder_download(repo, remote_dir='testfolder/data_2021_07_14/subfolder', local_dir='downloads')

Share repository

resp = sf.repo_share(repo, userlist=['hbenne@gmx.at', 'existiertnicht@gmail.com'], permissions='rw')

Revoke permissions:

resp = sf.repo_unshare(repo, user='hbenne@gmx.at')

Show file details

sf.file_info(repo, file='/testfolder/data_2021_07_14/test.csv')

Search file

results_json = sf.file_search(repo,file='data.txt')

Read file

import pandas as pd
url = sf.downloadlink(repo, '/testfolder/data_2021_07_14/test.csv')
df = pd.read_csv(url)
print(df.head())

If the example above does not run on your mac have a look at: https://stackoverflow.com/questions/50236117/scraping-ssl-certificate-verify-failed-error-for-http-en-wikipedia-org

Download file

sf.file_download(repo, file='/testfolder/data_2021_07_14/test.csv', local_dir='downloads/data/')

Delete file

resp = sf.file_delete(repo, file='/testfolder/data_2021_07_14/test.csv')

Nextcloud

API documentation: https://docs.nextcloud.com/server/latest/developer_manual/client_apis/index.html

App password

It is recommended not to use your login password. You can create app specific passwords: Settings -> security -> new app password.

Usage

from rdmhelper.nextcloud import Nextcloud
cloud = Nextcloud(
    server='https://SERVERNAME/remote.php/dav/files/',
    username=USERNAME, 
    password=PASSWORD, 
    webdav_token=WEBDAV_TOKEN
    )

In the official nextcloud documentation the webdav_token is referred to as "username". But it is different from the login name and can be found in settings -> WebDAV.

List files/folders

list root directory

cloud.list('')

list https://SERVERNAME/apps/files/?dir=/WebdavTest/subfolder

cloud.list_dir('WebdavTest/subfolder')

Make Dir

Create directory named New in WebdavTest

cloud.make_dir('WebdavTest/neu')

Upload file

Upload Datei.md from the local dir data/ to WebdavTest/subfolder. If add_date is True a timestamp will be added to the filename.

cloud.upload_file(
    local_file='data/Datei.md', 
    path='WebdavTest/subfolder', 
    filename='Datei1.md',
    add_date=True
    )

Upload folder

Upload the local folder ./Testfolder into the WebdavTest folder on Nextcloud. Add a timestamp to the foldername if add_date is True. Add a timestamp to all files in the folder if add_date_recursive is True.

cloud.upload_folder(
    local_folder='Testfolder', 
    target_folder='WebdavTest', 
    add_date=True, 
    add_date_recursive=False)

Download file

cloud.download_file(
    path='WebdavTest/', 
    filename='kwg_mpg.xlsx', 
    target_dir='data/'
    )

Read file

Read Excel file from Nextcloud.

import pandas as pd
df = pd.read_excel(
    cloud.read_file(path='WebdavTest/', filename='kwg_mpg.xlsx'), engine='openpyxl'
    )

Read CSV

import pandas as pd
from io import BytesIO
csv = cloud.read_file(path='WebdavTest/Subfolder/', filename='datei.csv')
df = pd.read_csv(BytesIO(csv))

Delete file/ folder

Delete file

cloud.delete_file(path='WebdavTest/subfolder/Datei.md')

Delete folder

cloud.delete_file(path='WebdavTest/subfolder/Datei.md')

Metadata

Release files for rdmhelper 1.0.2

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

Source distribution (sdist)

Source distribution for rdmhelper 1.0.2
File Size Uploaded
rdmhelper-1.0.2.tar.gz 73.5 kB Details

Built distribution (wheel)

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

Total release size: 80.9 kB

Release files / rdmhelper-1.0.2.tar.gz

Download URL rdmhelper-1.0.2.tar.gz
Size 73.5 kB
Tags Source
SHA-256 checksum
How to use checksums
2cc4f807d6062d47642225f6d39324178b94bc81e7a22b21afad8db5109c9cf0
BLAKE2b-256 checksum
How to use checksums
b91c4628d8e59aca34887fa475ed4466b40e125a15929234ea99b94f113b53a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Release files / rdmhelper-1.0.2-py3-none-any.whl

Download URL rdmhelper-1.0.2-py3-none-any.whl
Size 7.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8543a33490dd3a574293650a2c7e86d2687e1eaeff5a054f06e583d02bc8ba95
BLAKE2b-256 checksum
How to use checksums
2d225877553b36897c9158a61d1b4f62a1ea9444cb223cf696d79c544240ee08
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Release history Release notifications | RSS feed

This release

1.0.2 This release

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