-
Notifications
You must be signed in to change notification settings - Fork 1
/
commandline.py
53 lines (42 loc) · 1.6 KB
/
commandline.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import json
import click
from iodpython.iodindex import IODClient
import shelve
from utils import FreebaseUtil
service_url = 'https://www.googleapis.com/freebase/v1/mqlread'
def deleteIndex(index):
click.echo('deleted index %s' % index)
client.deleteIndex(index)
@click.command()
@click.option('--config', default="config.json", prompt="Config file", type=click.File('rb'))
@click.option('--input', default="test.json", prompt="Freebase MQL json file", type=click.File('rb'))
@click.option('--delete', is_flag=True)
@click.option('--resume', is_flag=True)
def main(input,delete,resume,config):
config=json.loads(config.read())
config.update(json.loads(input.read()))
client = IODClient("http://api.idolondemand.com/",
config["iodkey"])
if delete:
deleteIndex(config["iodindex"])
category=False
description=False
flavor="standard"
if config["type"]=="categories":
category=True
flavor="categorization"
if config.get("description",False):
description=True
try:
index=client.createIndex(config["iodindex"],flavor="categorization",index_fields=config.get("indexfields",[]), parametric_fields=config.get("parametricfields",[]))
except:
index=client.getIndex(config["iodindex"])
cursor=""
if resume:
cursor= open('cursor','rb').read()
query= config["freebasequery"]
freebaseUtil = FreebaseUtil(config["freebasekey"])
freebaseUtil.aliases=config["aliasfields"]
freebaseUtil.runQuery(index,query,category=category,description=description,cursor=cursor)
if __name__ == '__main__':
main()