mirror of
https://github.com/wassname/compleat.git
synced 2026-08-16 11:18:27 +08:00
Extract output functions from cli.py, reorganize.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from query import Query
|
||||
|
||||
VERSION = (0, 0, 0)
|
||||
VERSION = (0, 0, 1)
|
||||
__version__ = ".".join(map(str,VERSION))
|
||||
|
||||
def suggest(query_string, lang="en"):
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import compleat
|
||||
from compleat.output import to_db, to_csv, to_json
|
||||
import argparse
|
||||
import itertools
|
||||
import time
|
||||
import sys
|
||||
import codecs
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Retreive autocomplete suggetions, and output results as CSV [default] or JSON, or store in a database.")
|
||||
@@ -44,38 +44,6 @@ parser.add_argument("--wait",
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
def to_db(db_str, queries):
|
||||
import dataset
|
||||
db = dataset.connect(args.db)
|
||||
query_table = db.get_table("queries")
|
||||
suggestion_table = db.get_table("suggestions")
|
||||
for q in queries:
|
||||
query_table.insert(q.meta)
|
||||
suggestion_table.insert_many([
|
||||
dict(s.items() + {
|
||||
"query_uid": q.uid
|
||||
}.items()) for s in q.suggestions
|
||||
])
|
||||
|
||||
def to_csv(queries):
|
||||
import unicodecsv
|
||||
fieldnames = queries[0].meta.keys() + \
|
||||
queries[0].suggestions[0].keys()
|
||||
writer = unicodecsv.DictWriter(sys.stdout, fieldnames)
|
||||
writer.writeheader()
|
||||
for q in queries:
|
||||
for s in q.suggestions:
|
||||
row_dict = dict(q.meta.items() + s.items())
|
||||
writer.writerow(row_dict)
|
||||
|
||||
def to_json(queries):
|
||||
import json
|
||||
def convert(query):
|
||||
sugg_tuple = ("suggestions", query.suggestions)
|
||||
return dict(query.meta.items() + [ sugg_tuple ])
|
||||
obj = map(convert, queries)
|
||||
json.dump(obj, sys.stdout)
|
||||
|
||||
def log_query(query_string, lang):
|
||||
if args.silent: return
|
||||
sys.stderr.write("{lang}: {query}\n".format(
|
||||
@@ -92,7 +60,7 @@ def main():
|
||||
templated = map(args.template.format, args.queries)
|
||||
combos = itertools.product(templated, args.languages)
|
||||
queries = [ exec_query(*c) for c in combos ]
|
||||
if args.db: to_db(args.db, queries)
|
||||
if args.db: to_db(queries, args.db)
|
||||
elif args.json: to_json(queries)
|
||||
else: to_csv(queries)
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
def to_db(queries, db_str):
|
||||
import dataset
|
||||
db = dataset.connect(db_str)
|
||||
query_table = db.get_table("queries")
|
||||
suggestion_table = db.get_table("suggestions")
|
||||
for q in queries:
|
||||
query_table.insert(q.meta)
|
||||
suggestion_table.insert_many([
|
||||
dict(s.items() + {
|
||||
"query_uid": q.uid
|
||||
}.items()) for s in q.suggestions
|
||||
])
|
||||
|
||||
def to_csv(queries):
|
||||
import unicodecsv, sys
|
||||
fieldnames = queries[0].meta.keys() + \
|
||||
queries[0].suggestions[0].keys()
|
||||
writer = unicodecsv.DictWriter(sys.stdout, fieldnames)
|
||||
writer.writeheader()
|
||||
for q in queries:
|
||||
for s in q.suggestions:
|
||||
row_dict = dict(q.meta.items() + s.items())
|
||||
writer.writerow(row_dict)
|
||||
|
||||
def to_json(queries):
|
||||
import json
|
||||
def convert(query):
|
||||
sugg_tuple = ("suggestions", query.suggestions)
|
||||
return dict(query.meta.items() + [ sugg_tuple ])
|
||||
obj = map(convert, queries)
|
||||
json.dump(obj, sys.stdout)
|
||||
@@ -7,7 +7,7 @@ if sys.version_info <= (2, 6):
|
||||
|
||||
setup(
|
||||
name='compleat',
|
||||
version='0.0.0',
|
||||
version='0.0.1',
|
||||
description="Fetch autocomplete suggestions from Google Search. Use responsibly. Not affiliated with Google.",
|
||||
long_description="",
|
||||
classifiers=[
|
||||
@@ -39,7 +39,7 @@ setup(
|
||||
test_suite='test',
|
||||
entry_points={
|
||||
'console_scripts': [
|
||||
'compleat = compleat.output.cli:main',
|
||||
'compleat = compleat.cli:main',
|
||||
]
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user