Загрузите актив из частного репозитория github с python - PullRequest
1 голос
/ 09 июля 2020

Я пытаюсь загрузить последнюю версию из моего личного репозитория на github. Я установил токен, я могу получить информацию о выпуске, но не могу загрузить его.

import requests
from requests.auth import HTTPBasicAuth

r = requests.get(
    'https://MYTOKEN:@api.github.com/repos/andrewtquick/releasetest/releases/latest')
d = r.json()['assets'][0]["browser_download_url"]

with open('c:/temp/app.exe', 'wb') as f:
    download = requests.get(d, headers={'Authorization': 'MYTOKEN'})
    f.write(download.content)

Я продолжаю получать 404 ответа .. Я пытался использовать свой токен в заголовках а также пытался использовать мои учетные данные для входа в систему с запросами HTTPBasicAuth .. Кажется, ничего не работает ..

Когда я проверяю принятые заголовки для URL-адреса, я получаю следующее:

{'Server': 'GitHub.com',
'Date': 'Thu,
09 Jul 2020 17:34:47 GMT',
'Content-Type': 'application/json; charset=utf-8',
'Transfer-Encoding': 'chunked',
'Status': '200 OK',
'X-RateLimit-Limit': '5000',
'X-RateLimit-Remaining': '4992',
'X-RateLimit-Reset': '1594318601',
'Cache-Control': 'private,
max-age=60,
s-maxage=60',
'Vary': 'Accept,
Authorization,
Cookie,
X-GitHub-OTP,
Accept-Encoding,
Accept,
X-Requested-With',
'ETag': 'W/"44f010aed319d40ab177528a8f41dc78"',
'X-OAuth-Scopes': 'read:packages,
repo',
'X-Accepted-OAuth-Scopes': 'repo',
'X-GitHub-Media-Type': 'github.v3; format=json',
'Access-Control-Expose-Headers': 'ETag,
Link,
Location,
Retry-After,
X-GitHub-OTP,
X-RateLimit-Limit,
X-RateLimit-Remaining,
X-RateLimit-Reset,
X-OAuth-Scopes,
X-Accepted-OAuth-Scopes,
X-Poll-Interval,
X-GitHub-Media-Type,
Deprecation,
Sunset',
'Access-Control-Allow-Origin': '*',
'Strict-Transport-Security': 'max-age=31536000; includeSubdomains; preload',
'X-Frame-Options': 'deny',
'X-Content-Type-Options': 'nosniff',
'X-XSS-Protection': '1; mode=block',
'Referrer-Policy': 'origin-when-cross-origin,
strict-origin-when-cross-origin',
'Content-Security-Policy': "default-src 'none'",
'Content-Encoding': 'gzip',
'X-GitHub-Request-Id': '4E08:54CB:3CB13C:671519:5F075537'}

I может видеть заголовок авторизации и заголовок принятия. Я пробовал использовать рекомендацию github по настройке заголовка на «application / octet-stream», но это тоже не работает.

1 Ответ

0 голосов
/ 12 июля 2020

Обычно MYTOKEN используется в качестве пароля:

 r = requests.get(
'https://<username>:MYTOKEN@api.github.com/repos/andrewtquick/releasetest/releases/latest')

Как и в этом примере :

url = urljoin(GITHUB_API, 'authorizations')
payload = {}
if note:
    payload['note'] = note
res = requests.post(
    url,
    auth = (username, password),
    data = json.dumps(payload),
    )

За исключением того, что вы замените пароль учетной записи GitHub на PAT (токен персонального доступа) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...