Code Monkey home page Code Monkey logo

python-seafile's Introduction

Quick start of Seafile Python SDK

Seafile Python SDK provides functions to read and write files in Seafile server.

Setups

pip install seafileapi2

Basic objects

Two basic objects are used in Seafile Python SDK.

SeafileAPI

You can initialize a SeafileAPI object with user's login name and password. After authentication, you can get library objects for specific libraries to manipulate on libraries.

Repo

A repo object represents a library in Seafile. You can use it to manipulate files and folders inside a library.

Hints: In Seafile project, "Repo" is the short for "Repository". It has a same meaning of the term "library".

SeafileAPI authentication

SeafileAPI object can be authenticated by using user's username and password.

from seafileapi import SeafileAPI
server_url = "https://cloud.seafile.com/"
login_name = "[email protected]"
pwd = "password"
seafile_api = SeafileAPI(login_name, pwd, server_url)
seafile_api.auth()

Repo authentication

There are two ways to get an authenticated repo object:

By username and password

from seafileapi import SeafileAPI
server_url = "https://cloud.seafile.com/"
login_name = "[email protected]"
pwd = "password"
seafile_api = SeafileAPI(login_name, pwd, server_url)
seafile_api.auth()
repo_id = "xxxxxxxxxxxx"
repo = seafile_api.get_repo(repo_id) # return <Repo> object

By Repo API-Token

You can generate API-Token for a repo in Seafile Web interface (In the "Advanced" --> "API Token" in the dropdown menu of a library). Every API-Token can have different read or write permissions. This token is valid until you delete them.

from seafileapi import SeafileAPI
server_url = "https://cloud.seafile.com/"
api_token = '6de40d8456b06bdb4c9eabbf658175bdc4084050'
api_repo = Repo(api_token, server_url)
api_repo.auth()

Repo operations

You can use SeafileAPI object to list/add/delete repos.

List repos

seafile_api.list_repos()

Return the list of repos accessible by the current user.

Example

seafile_api.list_repos()

A list of repos in plain objects is returned:

[
    {
	'type': 'repo',
	'id': '83066b00-67ef-4068-b738-7a7381558d1b',
	'owner': '[email protected]',
	'owner_name': 'Jiwei',
	'owner_contact_email': '[email protected]',
	'name': 'My files',
	'mtime': 1712741554,
	'modifier_email': '[email protected]',
	'modifier_contact_email': '[email protected]',
	'modifier_name': 'Jim',
	'mtime_relative': '<time datetime="2024-04-10T17:32:34" is="relative-time" title="Wed, 10 Apr 2024 17:32:34 +0800" >1 day ago</time>',
	'size': 44219022,
	'size_formatted': '42.2\xa0MB',
	'encrypted': False,
	'permission': 'rw',
	'virtual': False,
	'root': '',
	'head_commit_id': 'e27451a9c3e4a9f558bc15eacbf9e33a7b3f3ab5',
	'version': 1,
	'salt': ''
    },
    .....
]

Create repo

seafile_api.create_repo(repo_name, passwd=None)

Create a repo and return the repo object.

Parameters:

  • repo_name: the name of the library.
  • passwd: if specified, an encrypted library is created.

Example

seafile_api.create_repo("My new repo")

The newly created repo object is returned:

<seafileapi.main.Repo object at 0x7f9417360fa0>

Delete repo

seafile_api.delete_repo(repo_id)

Parameters:

  • repo_id: unique identifier of a library

Example:

repo_id = "83066b00-67ef-4068-b738-7a7381558d1b"
seafile_api.delete_repo(repo_id)

File / folder operation

You can use Repo object to manipulate files and folders.

List folder items

repo.list_dir(dir_path = '/')

Return the list of items in plain objects showed in a specific folder.

Example:

repo.list_dir('/root') 

A list of folder items in plain objects is returned:

[{
	'type': 'dir',
	'id': '431b66c52e4865d7757fca76fb358f8eb3e7e8d5',
	'name': 'auto-upload',
	'mtime': '2023-03-14T14:36:49+08:00',
	'permission': 'rw',
	'parent_dir': '/root',
	'starred': False
}, {
	'type': 'file',
	'id': '9669d47f26f709148e1b36917a90b9eecb167167',
	'name': '6613.txt',
	'mtime': '2020-12-26T10:14:52+08:00',
	'permission': 'rw',
	'parent_dir': '/root',
	'size': 14,
	'modifier_email': '[email protected]',
	'modifier_name': 'Jiwei',
	'modifier_contact_email': '[email protected]',
	'is_locked': False,
	'lock_time': 0,
	'lock_owner': '',
	'lock_owner_name': '',
	'lock_owner_contact_email': '',
	'locked_by_me': False,
	'starred': False
}, ...]

Create a folder

repo.create_dir(path)

Create a folder and return a plain object.

Example:

repo.create_dir('/A new')

A folder in plain object is returned

{
	'type': 'dir',
	'repo_id': '83066b00-67ef-4068-b738-7a7381558d1b',
	'parent_dir': '/',
	'obj_name': 'A new',
	'obj_id': '0000000000000000000000000000000000000000',
	'mtime': '2024-04-12T12:18:18+08:00'
}

Rename a folder

repo.rename_dir(path, new_name)

Change the folder name and return a plain object.

Example:

repo.rename_dir('/A new', 'new file')

A folder in plain object is returned:

{
	'type': 'dir',
	'repo_id': '83066b00-67ef-4068-b738-7a7381558d1b',
	'parent_dir': '/',
	'obj_name': 'new file',
	'obj_id': '0000000000000000000000000000000000000000',
	'mtime': '2024-04-12T12:18:18+08:00'
}

Delete a folder

repo.delete_dir(path)

A folder in a specific path will be deleted.

Example:

repo.delete_dir('/new file')

Get a file

repo.get_file(path)

Get details of a file and return a plain object

Example

repo.get_file('/file/readme.txt')

A file in plain object is returned:

{
	'type': 'file',
	'repo_id': '83066b00-67ef-4068-b738-7a7381558d1b',
	'parent_dir': '/file',
	'obj_name': '7713.txt',
	'obj_id': 'f8da2b1f7562988bf7bc9b9760a1a4b687d897b2',
	'size': 14,
	'mtime': '2020-12-26T10:14:52+08:00',
	'can_preview': True,
	'can_edit': True
}

Create a file

repo.create_file(path)

Create a file and return a plain object.

Example

repo.create('/file/d.txt')

A file in plain object is returned:

{
	'type': 'file',
	'repo_id': '83066b00-67ef-4068-b738-7a7381558d1b',
	'parent_dir': '/file',
	'obj_name': d.txt',
	'obj_id': '9484a2b1f756381b9760a1a4b687d897b2',
	'size': 12,
	'mtime': '2020-12-26T10:14:52+08:00',
	'can_preview': True,
	'can_edit': True
}

Rename a file

repo.rename_file(path, new_name)

Change the file name and return a plain object.

Parameters:

  • path: a path with old file name.

Example

repo.rename_file('/file/readme.txt', 'readme1.txt')

A file in plain object is returned:

{
	'type': 'file',
	'repo_id': '83066b00-67ef-4068-b738-7a7381558d1b',
	'parent_dir': '/file',
	'obj_name': 'readme1.txt',
	'obj_id': '0000000000000000000000000000000000000000',
	'size': 0,
	'mtime': '2024-04-12T12:32:26+08:00',
	'can_preview': True,
	'can_edit': True
}

Delete a file

repo.delete_file(path)

A file in a specific path will be deleted.

Example

repo.delete_file('/file/readme.txt')

Get repo details

repo.get_repo_details()

A repo info in plain object is returned:

{
	'repo_id': '83066b00-67ef-4068-b738-7a7381558d1b',
	'repo_name': 'My files',
	'size': 44219022,
	'file_count': 126,
	'last_modified': '2024-04-12T12:35:42+08:00'
}

python-seafile's People

Contributors

lins05 avatar freeplant avatar r350178982 avatar kklein33 avatar skywalkerspace avatar dongsupark avatar awu0403 avatar mainboarder avatar likesclever avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.