Metadata-Version: 2.1
Name: mpg-cloud
Version: 1.0.1
Summary: Manage files in MPG Cloudservices.
Home-page: https://gitlab.gwdg.de/hbenne/mpg_cloud.git
Author: Hannes Benne
Author-email: hbenne@mpiwg-berlin.mpg.de
License: MIT
Description: - [Installing](#installing)
        - [Seafile](#seafile)
          * [Usage](#usage)
            + [View Account details](#view-account-details)
            + [List repositories](#list-repositories)
            + [Make dir](#make-dir)
            + [Upload Folder](#upload-folder)
            + [List folder content](#list-folder-content)
            + [Show Folder Detail](#show-folder-detail)
            + [Delete folder](#delete-folder)
            + [Rename folder](#rename-folder)
            + [Download folder](#download-folder)
            + [Share repository](#share-repository)
            + [Show file details](#show-file-details)
            + [Search file](#search-file)
            + [Read file](#read-file)
            + [Download file](#download-file)
            + [Delete file](#delete-file)
        - [Nextcloud](#nextcloud)
          * [App password](#app-password)
          * [Usage](#usage-1)
            + [List files/folders](#list-files-folders)
            + [Make Dir](#make-dir)
            + [Upload file](#upload-file)
            + [Upload folder](#upload-folder)
            + [Download file](#download-file-1)
            + [Read file](#read-file-1)
            + [Delete file/ folder](#delete-file--folder)
          * [Known issues](#known-issues)
        
        
        
        # Installing
        
        ```
        pip install mpg-cloud
        ```
        
        # Seafile 
        
        API documentation: https://download.seafile.com/published/web-api/home.md
        
        ## Usage
        
        ```python
        from mpg_cloud import Seafile
        sf = Seafile(
            server=server, 
            username=username, 
            password=password)
        ```
        
        ### View Account details
        
        ```python
        sf.account_info()
        ```
        
        ### List repositories
        Seafile is organized in repositories. You need to pass a reposirory id to most functions
        
        ```python
        sf.repo_list()
        repo = sf.repo_list()[0].get('id')
        ```
        
        ### Make dir 
        
        ```python
         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.
        
        ```python
        sf.folder_upload(
            repo, 
            local_dir='data/',
            remote_dir='/testfolder',
            add_date=True,
            add_date_recursive=False
        )
        ```
        
        ### List folder content
        
        ```python
        content_json = sf.folder_list_content(repo, '/testfolder')
        ```
        
        ### Show Folder Detail
        
        ```python
        detail_json = sf.folder_detail(repo, 'testfolder/data_2021_07_14/subfolder')
        ```
        
        ### Delete folder
        
        ```python
        resp = sf.folder_delete(repo, 'testfolder2')
        ```
        
        ### Rename folder
        
        ```python
        sf.folder_rename(repo, path='testfolder/data_2021_07_14/subfolder', new_name='subfolder_renamed')
        ```
        
        ### Download folder
        
        ```python
        sf.folder_download(repo, remote_dir='testfolder/data_2021_07_14/subfolder', local_dir='downloads')
        ```
        
        ### Share repository
        
        ```python
        resp = sf.repo_share(repo, userlist=['hbenne@gmx.at', 'existiertnicht@gmail.com'], permissions='rw')
        ```
        
        Revoke permissions:
        ```python
        resp = sf.repo_unshare(repo, user='hbenne@gmx.at')
        ```
        
        ### Show file details
        
        ```python
        sf.file_info(repo, file='/testfolder/data_2021_07_14/test.csv')
        ```
        
        ### Search file
        
        ```python
        results_json = sf.file_search(repo,file='data.txt')
        ```
        
        ### Read file
        
        
        ```python
        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
        
        ```python
        sf.file_download(repo, file='/testfolder/data_2021_07_14/test.csv', local_dir='downloads/data/')
        ```
        
        ### Delete file
        
        ```python
        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
        
        ```python
        from mpg_cloud 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
        ```python
        cloud.list('')
        ```
        
        list https://SERVERNAME/apps/files/?dir=/WebdavTest/subfolder
        ```python
        cloud.list_dir('WebdavTest/subfolder')
        ```
        
        ### Make Dir
        
        Create directory named New in WebdavTest
        
        ```python
        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.
        
        ```python
        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.
        
        ```python
        cloud.upload_folder(
            local_folder='Testfolder', 
            target_folder='WebdavTest', 
            add_date=True, 
            add_date_recursive=False)
        ```
        
        ### Download file
        
        
        ```python
        cloud.download_file(
            path='WebdavTest/', 
            filename='kwg_mpg.xlsx', 
            target_dir='data/'
            )
        ```
        
        ### Read file
        
        Read Excel file from Nextcloud.
        
        ```python
        import pandas as pd
        df = pd.read_excel(
            cloud.read_file(path='WebdavTest/', filename='kwg_mpg.xlsx'), engine='openpyxl'
            )
        ```
        
        Read CSV
        
        ```python
        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
        ```python
        cloud.delete_file(path='WebdavTest/subfolder/Datei.md')
        ```
        
        Delete folder
        ```python
        cloud.delete_file(path='WebdavTest/subfolder/Datei.md')
        ```
        
        ## Known issues
        
        Currently lxml must be installed manually.
        ```
        pip install lxml
        ```
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Description-Content-Type: text/markdown
