diff options
Diffstat (limited to 'backend/hist_data/gen_picked_data.py')
| -rwxr-xr-x | backend/hist_data/gen_picked_data.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/backend/hist_data/gen_picked_data.py b/backend/hist_data/gen_picked_data.py new file mode 100755 index 0000000..7d6071a --- /dev/null +++ b/backend/hist_data/gen_picked_data.py @@ -0,0 +1,62 @@ +#!/usr/bin/python3 + +""" +Adds additional manually-picked events to the database +""" + +# Enable unit testing code to, when running this script, resolve imports of modules within this directory +import os, sys +parentDir = os.path.dirname(os.path.realpath(__file__)) +sys.path.append(parentDir) + +import json, sqlite3 +from gen_imgs import convertImage + +PICKED_DIR = 'picked' +PICKED_EVT_FILE = 'events.json' +DB_FILE = 'data.db' +IMG_OUT_DIR = 'img' + +def genData(pickedDir: str, pickedEvtFile: str, dbFile: str, imgOutDir: str) -> None: + dbCon = sqlite3.connect(dbFile) + dbCur = dbCon.cursor() + # + with open(os.path.join(pickedDir, pickedEvtFile)) as f: + eventsToAdd = json.load(f) + nextId = -1 + for event in eventsToAdd: + row = dbCur.execute('SELECT id from events where title = ?', (event['title'],)).fetchone() + if row is not None: + print(f'WARNING: Event "{event["title"]}" already exists, and will be skipped') + continue + print(f'Adding event {event["title"]}') + print("- Updating 'events'") + dbCur.execute('INSERT INTO events VALUES (?, ?, ?, ?, ?, ?, ?, ?)', + (nextId, event['title'], event['start'], event['start_upper'], event['end'], event['end_upper'], + event['fmt'], event['ctg'])) + print('- Converting image file') + image = event['image'] + success = convertImage(os.path.join(pickedDir, image['file']), os.path.join(imgOutDir, str(nextId) + '.jpg')) + if not success: + break + print("- Updating 'images'") + dbCur.execute('INSERT INTO images VALUES (?, ?, ?, ?, ?)', + (nextId, image['url'], image['license'], image['artist'], image['credit'])) + print("- Updating 'event_imgs'") + dbCur.execute('INSERT INTO event_imgs VALUES (?, ?)', (nextId, nextId)) + print("- Updating 'descs'") + dbCur.execute('INSERT INTO descs VALUES (?, ?, ?)', (nextId, nextId, event['desc'])) + print("- Updating 'pop'") + dbCur.execute('INSERT INTO pop VALUES (?, ?)', (nextId, event['pop'])) + # + nextId -= 1 + # + dbCon.commit() + dbCon.close() + +if __name__ == '__main__': + import argparse + parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + args = parser.parse_args() + # + genData(PICKED_DIR, PICKED_EVT_FILE, DB_FILE, IMG_OUT_DIR) |
