PythonからCloudinaryを操作してみた

2019.08.31

画像最適化SaaSのCloudinaryをPython SDKから操作する方法を紹介します。

ライブラリのインストール

Cloudinary社がPython SDKを提供し、 GitHub で公開されています。

GitHub - cloudinary/pycloudinary: Python package for cloudinary

pip でインストールします。

$ pip install cloudinary

クレデンシャル設定

Cloudianry API を利用するためのクレデンシャルを設定します。

コンソールのアカウント詳細ページから以下の情報を確認します。

  • Cloud name
  • API Key
  • API Secret

取得した情報を cloudinary.config で設定します。

import cloudinary

cloudinary.config(
  cloud_name = "demo",
  api_key = "123",
  api_secret = "***"
)

画像をアップロード

uploader.upload API で手元にある画像を Cloudinary に登録します。

import cloudinary
import cloudinary.uploader
from pprint import pprint

cloudinary.config(
  cloud_name = "demo",
  api_key = "123",
  api_secret = "***"
)

res = cloudinary.uploader.upload(file="test.png", public_id="test")
pprint(res)

ローカルファイルのパスは file 引数で指定し、Cloudinaryでの ID は public_id で指定します。

public_id を省略すると、y5q56yvkwrv6s5r6kgse.png のようなランダムな ID を Cloudinary が自動採番します。採番された ID は、レスポンスの public_id を確認して下さい。

Cloudinary のアップロードは、ローカルファイル以外のデータソースも指定可能です。

S3 にあるオブジェクトを Cloudinary に登録する場合、ユーザーが管理する S3 バケットで設定をおこないfile 引数に S3 パスを指定します。

res = cloudinary.uploader.upload(
  file="s3://BUCKET-NAME/path/to/img.png",
  public_id="path/to/img.png")

アップロードした画像一覧を確認

Cloudinary に登録したリソースは resources でアクセスします。

import cloudinary

cloudinary.config(
  cloud_name = "demo",
  api_key = "123",
  api_secret = "***"
)

res = cloudinary.api.resources(type="upload", prefix="test/")
for img in res["resources"]:
    print(img)

prefix="test/" とすることで testフォルダ以下にアップロードされたリソース一覧を取得できます。

全リソースを取得したい場合は cloudinary.api.resources() とします。

画像変換用 URL を生成

import cloudinary

cloudinary.config(
  cloud_name = "demo",
  api_key = "123",
  api_secret = "***"
)

url = cloudinary.CloudinaryImage("test/dog").image(
  width=250,
  height=250,
  quality="auto",
  fetch_format="auto",
  secure=True, # HTTPS
)
print(url) # <img height="250" src="https://res.cloudinary.com/demo/image/upload/f_auto,h_250,q_auto,w_250/v1/test/dog" width="250"/>

CloudinaryImage に public ID を渡し、image関数に変換パラメーターを渡します。

最後に

Cloudinary SDK を利用すると、画像の管理から変換用 URL の生成までプログラマブルに行えます。

今回利用した API の詳細は以下のリンクを参照ください。

Cloudinary は Python 以外にも、多くの言語・フレームワーク向けに SDK を提供しています。

Cloudinary Image & Video Management - Documentation Home | Cloudinary

PHP SDK は次の過去記事を参照ください。

CloudinaryのPHP SDKを使ってAPIから画像をアップロードしてみた