Как загрузить изображения из GitLab с токеном), используя Pythons urllib.urlretrieve - PullRequest
1 голос
/ 12 мая 2019

Я работаю над сценарием для постоянного сохранения GitLab Issues (в моем случае требования) в виде файлов Markdown в репозитории с тегами и в виде скомпилированного документа требований в PDF через GitLab CI.Кроме того, сценарию необходимо загрузить все подключенные источники (изображения, диаграммы, файлы PDF и т. Д.), Чтобы они также могли иметь контроль версий.

Сценарий написан на Python 3.6 и использует python-gitlab для использования GitLab API v4 .

После запроса текста с описанием проблемы он сканирует URL-адреса изображений этой формы: ![...](/uploads/<hash>/<filename>.<ext>).Каждый относительный путь дополняется URL-адресом хоста GitLab и передается на urllib.urlretrieve.

При выполнении запроса я получаю ошибки HTTP 401, потому что я не аутентифицирован.

    for image in images:
        downloadURL = URL + image
        imagePath =   "" + image
        print("  downloading '{fromURL}' to '{toPath}'".format(fromURL=downloadURL, toPath=imagePath))
        try:
            urlretrieve(downloadURL, imagePath)
        except HTTPError as ex:
            print(ex)
        except FileNotFoundError as ex:
            print(ex)

GitLab использует аутентификацию через токены.Как я могу использовать этот метод аутентификации с urllib?

Например, когда я использую Insomnia для выполнения запросов JSON непосредственно к API GitLabs, я использую HTTP-заголовок Private-Token для аутентификации.Могу ли я добавить этот заголовок к вызову urllib?

...