Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv
- import json
- import os
- import sys
- import time
- from panoptes_client import Panoptes, Subject
- # Remove admin=True if you're a project collaborator/owner
- Panoptes.connect(
- username='',
- password='',
- admin=True,
- )
- with open('images_to_id.json') as images_to_id_f:
- images_to_id = json.load(images_to_id_f)
- unknown_entries = []
- for (dirpath, dirnames, filenames) in os.walk('manifests'):
- for filename in filenames:
- if not filename.endswith('.csv'):
- continue
- with open(os.path.join(dirpath, filename)) as manifest_f:
- done = 0
- for metadata in csv.DictReader(manifest_f):
- fixed_metadata = {}
- for key, value in metadata.items():
- fixed_metadata[key.strip()] = value.strip()
- lookup_key = "{};{};{}".format(
- fixed_metadata['image0'],
- fixed_metadata['image1'],
- fixed_metadata['image2'],
- fixed_metadata['image3'],
- )
- try:
- subject_id = images_to_id[lookup_key]
- except KeyError:
- unknown_entries.append(fixed_metadata)
- continue
- subject = Subject.find(subject_id)
- subject.metadata = fixed_metadata
- while True:
- try:
- subject.save()
- break
- except:
- time.sleep(5)
- continue
- done += 1
- print "\rProcessing {} ({})".format(filename, done),
- sys.stdout.flush()
- print ""
- if unknown_entries:
- with open('unknown_entries.csv', 'w') as unknown_f:
- w = csv.DictWriter(unknown_f, unknown_entries[0].keys())
- w.writeheader()
- map(w.writerow, unknown_entries)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement