OneDriveからのファイルダウンロード

Pythonを使用してOneDriveからファイルをダウンロードするための手順を以下に示します。

Azure アプリの登録

まず、OneDriveへ自動アクセスするためにAzure アプリを登録します。

  1. Azure Portalから操作を行います。
  2. リダイレクトURLには http://localhost:4200/ を入力します。
  3. 概要を選択し、クライアントIDを取得します。
  4. 証明書とシークレットを選択し、新しいクライアントシークレットを選択します。
  5. 任意の有効期限を指定します。
  6. クライアントシークレットを取得します。

OneDriveへのログインと認証コードの取得

次に、OneDriveへログインし、認証コードを取得します。

  1. トークン取得用URLを作成し、ブラウザへ貼り付けます。
  2. サインインが完了すると認証コードが発行されるので取得します。

認証コードからアクセストークンを取得

認証コードからアクセストークンを取得します。

import urllib.parse
import urllib.request
import json

def get_onedrive_token(code: str):
    apl_client_id= "bbbbbbbbbbbbbbbbb"
    client_secret = "ccccccccccccccccccc"
    redirect_url = "http://localhost:4200/"
    url = "https://login.microsoftonline.com/common/oauth2/v2.0/token"
    method = "POST"
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded'
    }
    params = {
        "client_id": apl_client_id,
        "redirect_uri": redirect_url,
        "client_secret": client_secret,
        "code": code,
        "grant_type": "authorization_code"
    }
    encoded_param = urllib.parse.urlencode(params).encode()
    request = urllib.request.Request(url, data=encoded_param, method=method, headers=headers)
    with urllib.request.urlopen(request) as res:
        body = res.read()
        dat = json.loads(body)
        print(dat)

if __name__ == '__main__':
    code = "aaaaaaaaaaaaaaaaaaaaaaaa"
    get_onedrive_token(code)

ファイルのダウンロード

最後に、アクセストークンを使用してOneDriveからファイルをダウンロードします。

import urllib.parse
import urllib.request
import json

def download_file(access_token: str, item_id:str):
    url = "https://graph.microsoft.com/v1.0/me/drive/items/" + urllib.parse.quote(item_id)
    method = "GET"
    headers = {
        'Authorization': 'bearer ' + access_token
    }
    request = urllib.request.Request(url, method=method, headers=headers)
    with urllib.request.urlopen(request) as res:
        body = res.read()
        dat = json.loads(body)
        item_name = dat["name"]
        download_url = dat["@microsoft.graph.downloadUrl"]
        print("download_url:" + download_url)
        save_name = "c:/tmp/" + item_name
        urllib.request.urlretrieve(download_url, save_name)

if __name__ == '__main__':
    access_token = "aaaaaaaaaaaaaaaaaaaaaaaaaaa"
    item_id = "bbbbbbbbbbbbbbbbbbbbbbb"
    download_file(access_token,item_id)

以上がPythonを使用してOneDriveからファイルをダウンロードする手順です。この情報が役立つことを願っています。

投稿者 admin

コメントを残す

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