Skip to content

Instantly share code, notes, and snippets.

@ank-everstake
Forked from RealOrangeOne/README.md
Last active January 13, 2023 18:29
Show Gist options
  • Save ank-everstake/1618a5a52b36d15e21d780e75e554497 to your computer and use it in GitHub Desktop.
Save ank-everstake/1618a5a52b36d15e21d780e75e554497 to your computer and use it in GitHub Desktop.
Trello JSON parser

Trello Parser

Parses Trello board contents in stdout in Slack format for fast reporting in text way
Modify if card["list"] == "Backlog": and other lines as needed

Download

Open a terminal, run this:

wget https://gist.githubusercontent.com/ank-everstake/1618a5a52b36d15e21d780e75e554497/raw/trello-parser.py 
chmod +x ./trello-parser.py

Usage

$ trelloparse -h
usage: tp [-h] input output

positional arguments:
  input       JSON File from Trello
  output      File to output to

optional arguments:
  -h, --help  show this help message and exit

Example

$ trelloparse ZRwW5Yyn.json output.json

CSV

To get the output in CSV format, use https://json-csv.com/

#!/usr/bin/env python3
import json
import os
import argparse
import datetime
parser = argparse.ArgumentParser()
parser.add_argument("input", help="JSON File from Trello", type=str)
parser.add_argument("output", help="File to output to", type=str)
parser.add_help = True
args = parser.parse_args()
# Get current week number
WN=datetime.datetime.utcnow().isocalendar()[1]
with open(os.path.abspath(args.input)) as f:
data = json.load(f)
print("Found {} cards in {} lists.".format(len(data['cards']), len(data['lists'])))
print("")
lists = {l['id']: l['name'] for l in data['lists']}
# users = {u['id']: u['fullName'] for u in data['members']}
labels = {l['id']: l['name'] for l in data['labels']}
parsed_cards = [{
"name": c['name'],
# "task": c['name'] if c['name']=='Solana feedback and providers' else '',
# example of how to parse the name field...
#"study": c['name'].split()[1] if c['name'].split()[0]=='study' else '',
#"pkg": c['name'].split()[1] if c['name'].split()[0]=='pkg' else '',
"list": lists[c['idList']],
# "url": c['shortUrl'],
"description": c['desc'],
# "members": [u for k, u in users.items() if k in c['idMembers']],
# "labels": [l for k, l in labels.items() if k in c['idLabels']]
} for c in data['cards'] ]
output = parsed_cards
backlog=[]
in_progress=[]
done=[]
for card in parsed_cards:
# if card["list"] is None:
if card["list"] == "Backlog":
backlog.append(card['name'])
elif card["list"] == "In Progress":
in_progress.append(card['name'])
elif card["list"] == "WN"+str(WN):
done.append(card['name'])
print("*Backlog:*")
for card in backlog:
print(f">~{card}~")
print("")
print("*In Progress:*")
for card in in_progress:
print(f">{card}")
print("")
print("*Done - WN"+str(WN)+":*")
print("")
for card in done:
print(f">{card}")
#with open(os.path.abspath(args.output), 'w') as f:
# json.dump(output, f, indent=4)
#print("Output to {}".format(os.path.abspath(args.output)))
# print("Please visit https://json-csv.com/ to convert the output to CSV.")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment