Я настроил экземпляр nextcloud и хотел бы загружать файлы оттуда, используя скрипт python. Мой экземпляр nextcloud обеспечивает двухфакторную аутентификацию для всех пользователей, и я хочу, чтобы она оставалась такой.
Мой сценарий мечты - использовать библиотеку requests
, поэтому, следуя документам здесь https://docs.nextcloud.com/server/15/developer_manual/client_apis/WebDAV/basic.html, я попытался сделать что-то вроде этого:
from requests.auth import HTTPBasicAuth
r = requests.request(
method='get',
url='https://mycloudinstance/index.php/apps/files/?dir=/Test&fileid=431',
auth=('username', 'pass')
)
print(r.status_code)
print(r.text)
Это дает мне ошибку 401, говорящую {"message": "Текущий пользователь не вошел в систему"}.
Когда я изменяю вышеуказанный URL-адрес на https://remote.php/dav/myinstance/index.php/apps/files/?dir= / Test & fileid = 431 Я получаю
ConnectionError (': не удалось установить sh новое соединение : [Errno 8] nodename или servname предоставлены или неизвестны '))
В качестве альтернативы я пытался использовать попытку использовать эту библиотеку https://github.com/owncloud/pyocclient просто чтобы увидеть если я могу создать тестовую папку с ней (она принадлежит owncloud, но должна работать и с nextcloud):
import owncloud
oc = owncloud.Client('https://mycloudinstance')
oc.login('username', 'pass')
oc.mkdir('cooldir')
Это приводит к ошибке owncloud.owncloud.HTTPResponseError: HTTP error: 401
. Я думаю, что это может быть либо потому, что я просто использую его неправильно, либо из-за двухфакторной аутентификации.
Я не уверен, как использовать протокол webdav в сочетании с библиотекой запросов python, а также я не уверен, как получить двухфакторную авторизацию для работы с ней. Кто-нибудь когда-нибудь делал это?
Помощь очень ценится, заранее большое спасибо.