Skip to content

Instantly share code, notes, and snippets.

@laiso
Last active July 27, 2025 10:46
Show Gist options
  • Save laiso/3c6ce0d02da9706e44e19600e3fa9566 to your computer and use it in GitHub Desktop.
Save laiso/3c6ce0d02da9706e44e19600e3fa9566 to your computer and use it in GitHub Desktop.
import csv
import json
import sys
import ast
def find_task_by_id(filename, task_id):
with open(filename, 'r', encoding='utf-8') as file:
reader = csv.DictReader(file)
fieldnames = reader.fieldnames
id_columns = [col for col in fieldnames if 'id' in col.lower()]
id_column = id_columns[0] if id_columns else fieldnames[0]
for row in reader:
if row.get(id_column) == task_id:
return row
return None
def list_all_tasks(filename):
with open(filename, 'r', encoding='utf-8') as file:
reader = csv.DictReader(file)
fieldnames = reader.fieldnames
id_columns = [col for col in fieldnames if 'id' in col.lower()]
id_column = id_columns[0] if id_columns else fieldnames[0]
for i, row in enumerate(reader, 1):
print(f" {row.get(id_column, 'N/A')}")
if i >= 10:
print(" ...")
break
def format_quiz_output(task_data):
manager_data_str = task_data.get('manager_data', '{}')
manager_data = ast.literal_eval(manager_data_str)
title = task_data.get('title', 'No Title')
description = task_data.get('description', 'No Description')
print("=" * 80)
print("Issue")
print("=" * 80)
print(f"Question: {title}")
print()
print("Details of the question:")
print(description)
print()
# メタ情報を表示
if task_data.get('manager_commit'):
print(f"manager_commit: {task_data['manager_commit']}")
print()
print("Please select the most appropriate fix from the proposals below.")
print()
print("-" * 80)
print("Proposals:")
print("-" * 80)
proposals = manager_data.get('game', {}).get('all_formal_proposals', [])
for i, proposal in enumerate(proposals):
print(f"Proposal {i}:")
print(f"Content: {proposal.get('content', 'No Content')}")
print(f"Explanation: {proposal.get('explanation', 'No Explanation')}")
print()
correct_proposal = manager_data.get('game', {}).get('correct_proposal', {})
correct_id = correct_proposal.get('id', 'Unknown')
correct_explanation = correct_proposal.get('explanation', 'No Explanation')
print("-" * 80)
print("Answer:")
print("-" * 80)
print(f"Correct ID: {correct_id}")
print(f"Explanation of the correct answer: {correct_explanation}")
print()
if proposals and isinstance(correct_id, int) and 0 <= correct_id < len(proposals):
correct_proposal_detail = proposals[correct_id]
print("Details of the correct proposal:")
print(f"Content: {correct_proposal_detail.get('content', 'No Content')}")
print(f"Explanation: {correct_proposal_detail.get('explanation', 'No Explanation')}")
print("=" * 80)
def load_json_task(filename):
with open(filename, 'r', encoding='utf-8') as file:
return json.load(file)
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: python get_task.py <filename> [task_id]")
print(" If you omit task_id, a list of available task IDs will be shown.")
print(" If the file is a JSON file, it will be output in Issue format directly.")
sys.exit(1)
filename = sys.argv[1]
if filename.endswith('.json'):
result = load_json_task(filename)
if result:
format_quiz_output(result)
elif len(sys.argv) > 2:
task_id = sys.argv[2]
result = find_task_by_id(filename, task_id)
if result:
format_quiz_output(result)
else:
list_all_tasks(filename)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment