Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
#!/usr/bin/env python3
import json , sys
input_range = []
output_files_list = []
lumi_ranges  = sys.argv[1].split(':')
for lumi_range in lumi_ranges:
  input_range.append(tuple(lumi_range.split(',')))

jdata = sys.stdin.read()
try:
  lumi_data = json.loads(jdata) 
except:
  print(jdata)
  exit (1)
lumi_data = lumi_data['data']

def match_in(sub_list,lumi_list):
  for i in range(int(sub_list[0]),int(sub_list[1])+1):
    if len(lumi_list) == 1:
      if i == int(lumi_list[0]): return True
    else:
      if i >= int(lumi_list[0]) and i <= int(lumi_list[1]): return True
  return False

def check_lumi_ranges(given_lumi_list , sub_range):
  for lumi_r in given_lumi_list:
    if match_in(sub_range, lumi_r):
      return True 
  return False

def process_lumi(data):
  for lumi_info in data:
    if isinstance(lumi_info['lumi'], list):
      lumi_nums = lumi_info['lumi'][0]['number']
      lumi_file = lumi_info['file'][0]['name']
    else:
      lumi_nums = lumi_info['lumi']['number']
      lumi_file = lumi_info['file']['name']
    if not isinstance(lumi_nums[0], list): lumi_rang = [ [n,n] for n in lumi_nums ]
    else: lumi_rang = lumi_nums
    for sub_list in lumi_rang:
      if check_lumi_ranges(input_range,tuple(sub_list)):
        output_files_list.append(lumi_file)
        break
  for out_file_name in output_files_list:
    print(out_file_name)

#Get file names for desired lumi ranges
process_lumi(lumi_data)