#!/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)