PyYaDisk
PyYaDisk is a wrapper over Yandex Disk Rest API V1.
The library is in creation process. You can check realized features with our roadmap below.
Installation
Install and update using pip:
pip install -U pyyadisk
Usage
0. Get Oauth-token
Before you start using YandexDisk API, you need to get a token for Oauth authorization.
You can get it from Yandex Poligon.
1. Yandex Disk instance
Let's start. At first we need to make an YandexDisk instance:
from pyyadisk import YandexDisk
token = 'ya_oauth_token'
disk = YandexDisk(token=token, proxy=proxy, ssl_verify=True, max_retries=5)
token
: Oauth token (get it at https://yandex.ru/dev/disk/poligon/)
proxy
: (optional) Proxy address for http and https
ssl_verify
: (optional) Flag of connection ssl verification check
max_retries
: (optional) Number of maximum connection retries
2. Set Path
Now we ready to make some operations. Let's set the path for operations:
disk.path(path='path/to/directory')
path
: full path to directory or file
3. Upload a file
3.1. Upload local file
Ok. We ready to upload a file from computer.
If file exists it will be overwritten with flag overwrite=True
disk = YandexDisk(token=token)
disk.path(path='path/to/directory')
response = disk.upload(filepath='home/computer/path/to/the/file.pdf', overwrite=True)
filepath
: Path to the file
overwrite
: (optional) Enable overwriting for uploaded item
Or in one line
disk.path('path/to/directory').upload('home/computer/path/to/the/file.pdf', overwrite=True)
3.2. Upload file by URL
disk = YandexDisk(token=token)
disk.path(path='path/to/directory')
operation_id = disk.upload_by_url(filename='file.pdf', url='https://example.com/file_1.pdf', disable_redirects=False)
Uploading file by url working at serverside in async mode. upload_by_url()
returns operation_id
.
filename
: name of the file
url
: url of the file
disable_redirects
: Disable redirects
4. Uploading status
By operation_id
we can get status of uploading:
status = disk.operations(self, operation_id: str)
5. File or Directory operations
Now when file or directory was uploaded we can make some operations with it.
-
get(limit: int = None, offset: int = None)
: Get stats of file or directory
limit
: The number of items to return
offset
: Offset from the beginning
-
create(self, subdir: str = None)
: Create directory
subdir
: Name of subdirectory. If 'subdir = None' the directory will be created by path-data
-
delete(self, force_async: bool = None, md5_hash: str = None, permanently: bool = False)
: Delete file or directory
force_async
: Execute asynchronously (True or False).
md5_hash
: md5 hash of file
permanently
: Flag of permanently delete
-
copy_to(self, destination: str, force_async: bool = None, overwrite: bool = None)
: Copy file or directory
-
move_to(self, destination: str, force_async: bool = None, overwrite: bool = None)
: Move file or directory
destination
: Destination path
force_async
: Execute asynchronously (True or False).
overwrite
: Flag of overwrite enable
disk = YandexDisk(token=token)
create_ = disk.path('path/to/directory').create()
info = disk.path('path/to/directory').get()
copy_ = disk.path('path/to/directory').copy_to('path/to/new/directory')
move_ = disk.path('path/to/directory').move_to('path/to/new/directory')
disk.path('path/to/directory').delete()
6. Share
share()
: Share file or directory which set by YandexDisk.path('path/to/the/file'). Returns tuple(response_code, public_url)
unshare()
: Unshare file or directory
public_url()
: Get public url of file or directory
public_key()
: Get public key of file or directory
Example:
disk = YandexDisk(token=token)
link = disk.path('path/to/directory').share()
link = disk.path('path/to/directory').public_url()
public_key = disk.path('path/to/directory').public_key()
disk.path('path/to/directory').unshare()
Roadmap
/v1/disk
/v1/disk/resources
/v1/disk/resources/save-to-disk