Импорт изображения из Python (raspberry pi) в Firebase

Для проекта, в котором мы создали приложение, которое записывает определенные результаты в течение дня, мы также создали несколько графиков в R, которые мы сохранили в формате jpeg на Raspberry.

Мы хотим загрузить jpg в Firebase через Python (мы загрузили переменную в Firebase, и она сработала)

Сначала мы попробовали этот код:

from google.cloud import storage
client = storage.Client()
bucket = client.get_bucket('teddy-aztech-ehealth.appspot.com') 
graphicBlob = bucket.get_blob('graph.jpeg')
graphBlob.upload_from_filename(filename='/home/pi/graph.jpeg')

Но мы получаем длинную ошибку из части клиентского сегмента, в которой говорится, что имя сегмента должно начинаться и заканчиваться числом.

Мы также пробовали этот код:

import sys
import requests
import firebase_admin
from firebase_admin import credentials
from firebase_admin import storage
sys.argv = "/home/pi/graph.jpeg"
image_url = sys.argv

cred = credentials.Certificate('teddy-aztech-ehealth-firebase-adminsdk-t0iz1-61f49237f4.json')
firebase_admin.initialize_app(cred, {
   'storageBucket': 'https://teddy-aztech-ehealth.appspot.com'
})
bucket = storage.bucket()

image_data = requests.get(image_url).content
blob = bucket.blob('graph.jpg')
blob.upload_from_string(
    image_data,
    content_type='image/jpg'
)
print(blob.public_url)

Но получить ошибку в части с initializeapp (опять же, из-за ведра ...) Нужно ли нам активировать / предоставлять доступ из Firebase?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
729
1

Ответы 1

Ваша первая попытка близка к тому, что вам нужно.

import io
from google.cloud import storage

# Google Cloud Project ID. This can be found on the 'Overview' page at
# https://console.developers.google.com
PROJECT_ID = 'your-project-id'
CLOUD_STORAGE_BUCKET = 'your-bucket-name'

filename = "graph-filename.jpeg"

# Create unique filename to avoid name collisions in Google Cloud Storage
date = datetime.datetime.utcnow().strftime("%Y-%m-%d-%H%M%S")
basename, extension = filename.rsplit('.', 1)
unique_filename = "{0}-{1}.{2}".format(basename, date, extension)

# Instantiate a client on behalf of the project
client = storage.Client(project=PROJECT_ID)
# Instantiate a bucket
bucket = client.bucket(CLOUD_STORAGE_BUCKET)
# Instantiate a blob
blob = bucket.blob(unique_filename)

# Upload the file
with open(filename, "rb") as fp:
    blob.upload_from_file(fp)

# The public URL for this blob
url = blob.public_url

Другие вопросы по теме