画像取得

要インストール: requests

画像ダウンロード処理のサンプル
codeとaddressという項目を持つCSVを読み込んで、当該のaddress(カンマ区切りで複数定義されている)の画像をダウンロードして、codeの名称をベースとしたファイル名で保存する。
ということをしている。

"""
ファイル名: main.py
作成者: UniqueVisionProductions

ダウンロード動作テスト用 メインファイル

このファイルには、以下の関数が含まれています:
- main: 起点となる関数

変更履歴
- Ver.1.0.0.1 :
"""
import csv
import os
import requests

def main():
    """
    メイン関数

    Parameters:
        None

    Returns:
        None

    Raises:
        None
    """
    # ユーザーのホームディレクトリを取得
    desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")
    # 読み込み元ファイル
    base_filename = "images_01.csv"


    csvfilepath = os.path.join(desktop_path, base_filename)
    # ダウンロード先
    download_dir = os.path.join(desktop_path, "imagedownload")
    # ディレクトリが存在しない場合に作成
    os.makedirs(download_dir, exist_ok=True)

    with open(csvfilepath, newline="", encoding="shift_jis") as f:
        reader = csv.DictReader(f)  # ヘッダー行をキーにして辞書として読み込む
        records = [row for row in reader]  # 各行を辞書としてリストに格納


    for record in records :
        count = 0
        for url in record['address'].split(","):
            filename = f"{record['code']}_{count}.jpg" if count else f"{record['code']}.jpg"
            filepath = os.path.join(download_dir, filename)

            response = requests.get(url)  # 画像を取得

            if response.status_code == 200:
                with open(filepath, "wb") as f:
                    f.write(response.content)  # バイナリデータを書き込み
                # ファイル項番更新
                count+=1
                print(f"{record['code']}: ダウンロード完了")
            else:
                print(f"{record['code']} ダウンロード失敗:", response.status_code)


if __name__ == "__main__":
    try:
        # 引数なし
        main()
    except Exception as e:
        # エラー検出
        print("ERROR : ", e)
    finally :
        # キー入力待ち
        input("Press any key to finish.")
    
   

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です