2021-07-07 07:22:38 +00:00
|
|
|
import exhausting_mturk.api
|
|
|
|
import argparse
|
|
|
|
import logging
|
|
|
|
import coloredlogs
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
argParser = argparse.ArgumentParser(
|
|
|
|
description='Make and request hits')
|
|
|
|
argParser.add_argument(
|
|
|
|
'--batchdir',
|
|
|
|
'-d',
|
|
|
|
type=str,
|
|
|
|
default="batches",
|
|
|
|
help='directory to read and write from'
|
|
|
|
)
|
|
|
|
argParser.add_argument(
|
|
|
|
'--config',
|
|
|
|
'-c',
|
|
|
|
required=True,
|
|
|
|
type=str,
|
|
|
|
help='The yaml config file to load'
|
|
|
|
)
|
|
|
|
argParser.add_argument(
|
|
|
|
'--verbose',
|
|
|
|
'-v',
|
|
|
|
action='store_true',
|
|
|
|
help='Increase log level'
|
|
|
|
)
|
|
|
|
argParser.add_argument(
|
|
|
|
'--publish',
|
|
|
|
'-p',
|
|
|
|
type=str,
|
|
|
|
help='Publish a batch to MTurk'
|
|
|
|
)
|
|
|
|
argParser.add_argument(
|
|
|
|
'--update',
|
|
|
|
'-u',
|
|
|
|
action='store_true',
|
|
|
|
help='fetch HIT status and assignments from MTurk'
|
|
|
|
)
|
2021-08-10 09:49:31 +00:00
|
|
|
argParser.add_argument(
|
|
|
|
'--list-hits',
|
|
|
|
'-lh',
|
|
|
|
action='store_true',
|
|
|
|
help='For debugging: list all hits using API'
|
|
|
|
)
|
2021-07-07 07:22:38 +00:00
|
|
|
argParser.add_argument(
|
|
|
|
'--for-real',
|
|
|
|
action='store_true',
|
|
|
|
help='run on live MTurk instead of sandbox'
|
|
|
|
)
|
|
|
|
args = argParser.parse_args()
|
|
|
|
|
|
|
|
loglevel = logging.DEBUG if args.verbose else logging.INFO
|
|
|
|
coloredlogs.install(
|
|
|
|
level=loglevel,
|
|
|
|
fmt="%(asctime)s %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s"
|
|
|
|
)
|
|
|
|
logger = logging.getLogger("exhausting_mturk")
|
|
|
|
|
|
|
|
logging.getLogger('botocore').setLevel(logging.INFO)
|
|
|
|
|
2021-07-14 15:46:11 +00:00
|
|
|
connection = exhausting_mturk.api.Connection(args.config, args.for_real)
|
2021-07-07 07:22:38 +00:00
|
|
|
|
|
|
|
print(f"{connection}")
|
|
|
|
|
|
|
|
batch_files = exhausting_mturk.api.get_batch_files(args.batchdir)
|
|
|
|
logger.info(f"{batch_files=}")
|
|
|
|
|
|
|
|
# print(exhausting_mturk.api.batch_to_xml(batches[0]))
|
|
|
|
|
|
|
|
if args.update:
|
|
|
|
connection.load_new_submissions()
|
2021-08-10 09:49:31 +00:00
|
|
|
if args.list_hits:
|
|
|
|
connection.list_hits()
|
2021-07-07 07:22:38 +00:00
|
|
|
elif args.publish:
|
|
|
|
if args.publish not in batch_files:
|
|
|
|
raise Exception(f'Not a valid batch. Use one of {batches=}')
|
|
|
|
batch = exhausting_mturk.api.open_batch(args.publish)
|
|
|
|
connection.publish_hit(batch)
|
|
|
|
|
|
|
|
# connection.load_new_submissions()
|