#!/usr/bin/python # # This python script illustrates fetching information from a CGI program # that typically gets its data via an HTML form using a POST method. # # Copyright (c) 2023, Carnegie Mellon University. All Rights Reserved. import requests import os import sys userId = 'id@andrew.cmu.edu' password = 'XXXXXXXX' hwid = 'HW1' qrel = 'cw09a.adhoc.1-200.qrel.indexed' logtype = 'Detailed' leaderboard = 'Yes' def filter_response(response): # Replace the
with \n for clarity content = response.text.replace ('
', '\n') for line in content.split('\n'): if line.startswith('map'): score = float(line.split()[2]) print(line.split()[1], 'map', score) if(line.startswith('P10') and not line.startswith('P100') and not line.startswith('P1000')): score = float(line.split()[2]) print(line.split()[1], 'p@10', score) if(line.startswith('P20')) and not line.startswith('P200'): score = float(line.split()[2]) print(line.split()[1], 'p@20', score) if(line.startswith('P30')): score = float(line.split()[2]) print(line.split()[1], 'p@30', score) def create_request(): # Form parameters - these must match form parameters in the web page request = {} request['userId'] = userId request['password'] = password request['url'] = 'https://boston.lti.cs.cmu.edu/classes/11-642/HW/HTS/tes.cgi' request['values'] = { 'hwid' : hwid, # cgi parameter 'qrel' : qrel, # cgi parameter 'logtype' : logtype, # cgi parameter 'leaderboard' : leaderboard # cgi parameter } return request def post_request(request, teInFileName): files = {'infile' : (teInFileName, open(teInFileName, 'rb')) } # cgi parameter result = requests.post(request['url'], data=request['values'], files=files, auth=(request['userId'], request['password'])) return result def trec_eval(teInFileName): request = create_request() response = post_request(request, teInFileName) print (response.text.replace('
', '\n')) filter_response(response) if __name__=="__main__": teInFileName = sys.argv[1] trec_eval(teInFileName)