57 lines
1.9 KiB
Python
Executable File
57 lines
1.9 KiB
Python
Executable File
#! /usr/bin/env python3
|
||
|
||
import argparse
|
||
import json
|
||
import os
|
||
|
||
import requests
|
||
|
||
user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) " \
|
||
"Chrome/74.0.3729.169 Safari/537.36"
|
||
|
||
header = {"User-Agent": user_agent}
|
||
|
||
|
||
def lims_login():
|
||
postUrl = "https://dna.jmdna.com/user/login/auth"
|
||
postData = {"userName": "zlseq2", "password": "seq345@JM"}
|
||
try:
|
||
response = requests.post(postUrl, params=postData, headers=header)
|
||
token = json.loads(response.text)["data"]["accessToken"]
|
||
except Exception as e:
|
||
raise UserWarning('lims连接失败!请查看', e)
|
||
return token
|
||
|
||
|
||
def lims_search(barcode):
|
||
token = lims_login()
|
||
payload = {'search[barcode][value]': barcode, "accessToken": token, 'search[report][value]': 0,
|
||
'format': '2', 'size': '1000', 'search[barcode][query]:': "eq"}
|
||
try:
|
||
sample_msg = requests.get("https://dna.jmdna.com/sample/sample/search?", params=payload,
|
||
timeout=20, headers=header).text
|
||
except Exception as e:
|
||
raise UserWarning(f'获取lims系统请求失败 {e}')
|
||
|
||
lims_infos = json.loads(sample_msg)
|
||
code = lims_infos['code']
|
||
if code != '-1':
|
||
msg = lims_infos['message']
|
||
raise UserWarning(f'获取lims系统请求失败 {msg}')
|
||
return lims_infos
|
||
|
||
|
||
if __name__ == '__main__':
|
||
parser = argparse.ArgumentParser(description="JM get sampleinfo from lims ")
|
||
|
||
parser.add_argument('-s', '--barcode', help="sample's barcode", required=True)
|
||
parser.add_argument('-o', '--output_dir', help="Output directory, default ./", default='')
|
||
args = parser.parse_args()
|
||
|
||
barcorde = args.barcode
|
||
sample_data = lims_search(barcorde)
|
||
|
||
json_out = os.path.join(args.output_dir, 'qc', f'{barcorde}_post.json')
|
||
with open(json_out, 'w', encoding='utf8') as ff:
|
||
json.dump(sample_data, ff, ensure_ascii=False, indent=4)
|