Manage research data in cloud services.
Project description
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')
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for rdmhelper-1.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8543a33490dd3a574293650a2c7e86d2687e1eaeff5a054f06e583d02bc8ba95 |
|
MD5 | a4f7168b4233da93568737673c5b0e2b |
|
BLAKE2b-256 | 2d225877553b36897c9158a61d1b4f62a1ea9444cb223cf696d79c544240ee08 |