Декодирование содержимого base64 из API Github

77
10

Привет Я в настоящее время пытаюсь декодировать base64, возвращенный из API Github API /:username/:repo/contents/:filepath

который возвращает объект json

{ "type": "file", "encoding": "base64", "size": 5362, "name": "README.md", "path": "README.md", "content": "encoded content...", "sha": "3d21ec53a331a6f037a91c368710b99387d012c1", "url": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", "git_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6>f037a91c368710b99387d012c1", "html_url": >"https://github.com/octokit/octokit.rb/blob/master/README.md", "download_url": >"https://raw.githubusercontent.com/octokit/octokit.rb/master/README.md", "_links": { "git": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1", "self": "https://api.github.com/repos/octokit/octokit.rb/contents/README.md", "html": "https://github.com/octokit/octokit.rb/blob/master/README.md" }

Содержимое кодируется как base64, но когда я пытаюсь его декодировать - он дает мне случайные символы

from googleapiclient import discovery from goйɽ́Ё!ɽ)ɽwWF&6ƖVB6W'f6U66VB'B6W'f6T66[ܙY[X[[\ܝX]QgTS_DISCOVERY_URL='https://sheets.googleapis.c͍ٕɕٕͥМ)M.....

вот мой код:

   try:
result = urlfetch.fetch(url, headers={"accept": >"application/vnd.github.v3+json"})
if result.status_code == 200:
decoded_content = base64.b64decode(result.content)
print(decoded_content)
else:
self.response.status_code = result.status_code

спросил(а) 2021-01-25T18:11:56+03:00 5 месяцев назад
1
Решение
63

Разберите json-ответ с помощью json.loads(result.content) и получите поле content после этого:

import base64
import urlfetch
import json

result = urlfetch.fetch(
"https://api.github.com/repos/octokit/octokit.rb/contents/README.md",
headers={"accept": "application/vnd.github.v3+json"})

if result.status_code == 200:
data = json.loads(result.content)
decoded_content = base64.b64decode(data["content"])
print(decoded_content)
else:
print(result.status_code)

Вы можете проверить это здесь

ответил(а) 2021-01-25T18:11:56+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема