benten download_file

目的

  • 単一ファイルダウンロードを行います。

Warning

事前にログイン認証を行う必要があります。

Warning

システム負荷軽減のため、一度に2GB以上のファイルをダウンロードすることは禁止しています。

概要

  • 単一ファイルをダウンロードします。
  • ダウンロードできるファイルは認証時のアカウントでアクセスが許可されたファイルのみ対象となります。
  • ダウンロード後はハッシュのチェックを行い、データに矛盾がないことを確認します。

利用例

  • Help
$ benten.py download_file -h
usage: benten download_file [-h] [--out_directory [OUT_DIRECTORY]]
                            [--flag_path] [--flag_subdirectory]
                            [--disable_hash]
                            file

positional arguments:
  file                  file for download

optional arguments:
  -h, --help            show this help message and exit
  --out_directory [OUT_DIRECTORY], -d [OUT_DIRECTORY]
                        directory for output file if the file is available
  --flag_path, -p       download file with path
  --flag_subdirectory, -s
                        download file with subdirectory
  --disable_hash        disable hash check in downloaded file
  • 単一ファイルをダウンロード
$ benten.py download_file  /SPring-8/BL14B2/data2/temp/Cu-K_Cu-foil_Si111_50ms_120613/README.csv
### benten download_file ###
[Repository::authorize] access_token = 579773811dc7401ea1307c99d2a88a82
==> downloaded with file = README.csv
==> check consitency with hash = 04fc584126773205d6b9d18e49cd90f0
  • 単一ファイルをダウンロード (path情報込み)
$ benten.py download_file  -p /SPring-8/BL14B2/data2/temp/Cu-K_Cu-foil_Si111_50ms_120613/README.csv
### benten download_file ###
[Repository::authorize] access_token = 579773811dc7401ea1307c99d2a88a82
==> downloaded with file = ./SPring-8/BL14B2/data2/temp/Cu-K_Cu-foil_Si111_50ms_120613/README.csv
==> check consitency with hash = 04fc584126773205d6b9d18e49cd90f0
  • 単一ファイルをダウンロード (subdirectory情報込み(登録名ディレクトリ以下))
$ benten.py download_file  -s /SPring-8/BL14B2/data2/temp/Cu-K_Cu-foil_Si111_50ms_120613/README.csv
### benten download_file ###
[Repository::authorize] access_token = 579773811dc7401ea1307c99d2a88a82
==> downloaded with file = Cu-K_Cu-foil_Si111_50ms_120613/README.csv
==> check consitency with hash = 04fc584126773205d6b9d18e49cd90f0

Pythonモジュールとの対応

#!/usr/bin/env python
'''
  example: download_file

  usage: python benten_download_file.py ...

'''

import benten_client

import time

import argparse
from logging import getLogger, StreamHandler, DEBUG
logger = getLogger(__name__)
handler = StreamHandler()
handler.setLevel(DEBUG)
logger.setLevel(DEBUG)
logger.addHandler(handler)
logger.propagate = False

# ... parameters
parser = argparse.ArgumentParser(description="example: download_file")
parser.add_argument("file", help="file for download")
parser.add_argument("--out_directory", "-d", nargs="?",
                    help="directory for output file if the file is available")
parser.add_argument("--flag_path", "-p", action="store_const",
                    const=1, help="download file with path")
parser.add_argument("--flag_subdirectory", "-s", action="store_const",
                    const=1, help="download file with subdirectory")
parser.add_argument("--disable_hash", action="store_const",
                    const=1, help="disable hash check in downloaded file")

args = parser.parse_args()


file = args.file
out_directory = args.out_directory
flag_path = args.flag_path
flag_subdirectory = args.flag_subdirectory
disable_hash = args.disable_hash

repo = benten_client.Repository()

logger.debug("# set access token")

repo.authorize(benten_client.access_token())

logger.debug("# download_file")

v = {} 
v["file"] = file
ret_dict = repo.download.file.post(
    v,out_directory=out_directory, flag_path=flag_path, 
    flag_subdirectory=flag_subdirectory, disable_hash=disable_hash)
if ret_dict is not None:
    benten_client.log("==> response")
    benten_client.out_json(ret_dict)