Revert non-stop search
This commit is contained in:
parent
61e6e022f4
commit
cb48798c3d
@ -27,7 +27,7 @@ Copyright (C) 2015-2016 [Arun Prakash Jana](mailto:engineerarun@gmail.com).
|
|||||||
|
|
||||||
- Add, tag, search, update, remove bookmarks
|
- Add, tag, search, update, remove bookmarks
|
||||||
- Fetch page title from the web (default) or add a custom page title manually
|
- Fetch page title from the web (default) or add a custom page title manually
|
||||||
- Non-stop search from prompt, open search results in browser
|
- Open search results in browser
|
||||||
- Manual password protection using AES256 encryption
|
- Manual password protection using AES256 encryption
|
||||||
- Handle piped input (combine with `xsel` and add bookmarks directly from browser)
|
- Handle piped input (combine with `xsel` and add bookmarks directly from browser)
|
||||||
- Modify or delete tags, list all unique tags alphabetically
|
- Modify or delete tags, list all unique tags alphabetically
|
||||||
|
136
buku
136
buku
@ -461,7 +461,6 @@ def searchdb(cur, keywords, all_keywords=False):
|
|||||||
or title info matching keywords and list those.
|
or title info matching keywords and list those.
|
||||||
|
|
||||||
Params: cursor, keywords to search, search any or all keywords
|
Params: cursor, keywords to search, search any or all keywords
|
||||||
Returns: result set
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
global jsonOutput
|
global jsonOutput
|
||||||
@ -488,7 +487,40 @@ def searchdb(cur, keywords, all_keywords=False):
|
|||||||
print("\"%s\", (%s)" % (query, arguments))
|
print("\"%s\", (%s)" % (query, arguments))
|
||||||
|
|
||||||
cur.execute(query, arguments)
|
cur.execute(query, arguments)
|
||||||
return cur.fetchall()
|
results = cur.fetchall()
|
||||||
|
if len(results) == 0:
|
||||||
|
return
|
||||||
|
|
||||||
|
if jsonOutput == False:
|
||||||
|
count = 0
|
||||||
|
for row in results:
|
||||||
|
count += 1
|
||||||
|
print("\x1B[1m\x1B[93m%d. \x1B[0m\x1B[92m%s\x1B[0m [%d]\n\t%s\n\t\x1B[91m[TAGS]\x1B[0m %s\n" % (count, row[1], row[0], row[2], row[3][1:-1]))
|
||||||
|
|
||||||
|
if count == 0:
|
||||||
|
return
|
||||||
|
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
nav = input("Result number to open: ")
|
||||||
|
except EOFError:
|
||||||
|
return
|
||||||
|
|
||||||
|
if is_int(nav):
|
||||||
|
index = int(nav) - 1
|
||||||
|
if index < 0 or index >= count:
|
||||||
|
print("Index out of bound")
|
||||||
|
continue
|
||||||
|
|
||||||
|
try:
|
||||||
|
browser_open(unquote(results[index][1]))
|
||||||
|
except Exception as e:
|
||||||
|
print("\x1b[1mEXCEPTION\x1b[21m [searchdb]: (%s) %s" % (type(e).__name__, e))
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
|
||||||
|
else:
|
||||||
|
print(formatJson(results))
|
||||||
|
|
||||||
|
|
||||||
def compactDB(conn, cur, index):
|
def compactDB(conn, cur, index):
|
||||||
@ -593,52 +625,6 @@ def printdb(cur, index, empty=False):
|
|||||||
print(formatJson(resultset, True))
|
print(formatJson(resultset, True))
|
||||||
|
|
||||||
|
|
||||||
def showPrompt(conn, results=None):
|
|
||||||
"""Show the results, prompt and do the following:
|
|
||||||
Open URL in browser
|
|
||||||
Accept input keywords for new search
|
|
||||||
|
|
||||||
Params: connection, results to show
|
|
||||||
Returns: new input
|
|
||||||
"""
|
|
||||||
|
|
||||||
count = 0
|
|
||||||
if results is not None:
|
|
||||||
for row in results:
|
|
||||||
count += 1
|
|
||||||
print("\x1B[1m\x1B[93m%d. \x1B[0m\x1B[92m%s\x1B[0m [%d]\n\t%s\n\t\x1B[91m[TAGS]\x1B[0m %s\n" % (count, row[1], row[0], row[2], row[3][1:-1]))
|
|
||||||
else:
|
|
||||||
while True:
|
|
||||||
try:
|
|
||||||
nav = input("Search keywords: ").strip()
|
|
||||||
nav = nav.strip('\'\"')
|
|
||||||
if len(nav) > 0:
|
|
||||||
return nav
|
|
||||||
except EOFError:
|
|
||||||
closequit(conn, 1)
|
|
||||||
|
|
||||||
while True:
|
|
||||||
try:
|
|
||||||
nav = input("Result number to open or search keywords: ").strip()
|
|
||||||
nav = nav.strip('\'\"')
|
|
||||||
except EOFError:
|
|
||||||
closequit(conn, 1)
|
|
||||||
|
|
||||||
if is_int(nav):
|
|
||||||
index = int(nav) - 1
|
|
||||||
if index >= 0 and index < count:
|
|
||||||
try:
|
|
||||||
browser_open(unquote(results[index][1]))
|
|
||||||
continue
|
|
||||||
except Exception as e:
|
|
||||||
print("\x1b[1mEXCEPTION\x1b[21m [searchdb]: (%s) %s" % (type(e).__name__, e))
|
|
||||||
closequit(conn, 1)
|
|
||||||
elif len(nav) == 0:
|
|
||||||
continue
|
|
||||||
|
|
||||||
return nav
|
|
||||||
|
|
||||||
|
|
||||||
def formatJson(resultset, single=False):
|
def formatJson(resultset, single=False):
|
||||||
"""Return results in Json format"""
|
"""Return results in Json format"""
|
||||||
|
|
||||||
@ -1005,8 +991,7 @@ class ExtendedArgumentParser(argparse.ArgumentParser):
|
|||||||
file.write('''
|
file.write('''
|
||||||
prompt keys:
|
prompt keys:
|
||||||
1-N open the Nth search result in web browser
|
1-N open the Nth search result in web browser
|
||||||
q, ^D exit buku
|
Enter exit buku
|
||||||
* any other string initiates a new search
|
|
||||||
|
|
||||||
Version %.1f
|
Version %.1f
|
||||||
Copyright (C) 2015-2016 Arun Prakash Jana <engineerarun@gmail.com>
|
Copyright (C) 2015-2016 Arun Prakash Jana <engineerarun@gmail.com>
|
||||||
@ -1181,55 +1166,11 @@ if args.delete is not None:
|
|||||||
closequit(conn, 1)
|
closequit(conn, 1)
|
||||||
cleardb(conn, cur, args.delete)
|
cleardb(conn, cur, args.delete)
|
||||||
|
|
||||||
# ANY and ALL search are mutually exclusive
|
|
||||||
if args.sany is not None and args.sall is not None:
|
|
||||||
printmsg("-s and -S are mutually exclusive options", "ERROR")
|
|
||||||
closequit(conn, 1)
|
|
||||||
|
|
||||||
# Search URLs, titles, tags for any keyword
|
# Search URLs, titles, tags for any keyword
|
||||||
if args.sany is not None or args.sall is not None:
|
if args.sany is not None:
|
||||||
if args.sany is not None:
|
searchdb(cur, args.sany)
|
||||||
terms = args.sany
|
|
||||||
all_keywords = False
|
|
||||||
else:
|
|
||||||
terms = args.sall
|
|
||||||
all_keywords = True
|
|
||||||
while True:
|
|
||||||
if all_keywords and len(terms) == 1:
|
|
||||||
special = False
|
|
||||||
|
|
||||||
if terms[0] == 'tags':
|
# Search URLs, titles, tags with all keywords
|
||||||
showUniqueTags(cur)
|
|
||||||
special = True
|
|
||||||
elif terms[0] == 'blank':
|
|
||||||
printdb(cur, 0, True)
|
|
||||||
special = True
|
|
||||||
|
|
||||||
if special == True:
|
|
||||||
newterms = showPrompt(conn, None)
|
|
||||||
if newterms == "q":
|
|
||||||
closequit(conn)
|
|
||||||
|
|
||||||
terms = newterms.split() # TODO: support precise tag search with comma
|
|
||||||
continue
|
|
||||||
|
|
||||||
results = searchdb(cur, terms, all_keywords)
|
|
||||||
if jsonOutput:
|
|
||||||
print(formatJson(results))
|
|
||||||
break
|
|
||||||
|
|
||||||
if len(results) == 0:
|
|
||||||
print("No matches")
|
|
||||||
newterms = showPrompt(conn, None)
|
|
||||||
else:
|
|
||||||
newterms = showPrompt(conn, results)
|
|
||||||
|
|
||||||
if newterms == "q":
|
|
||||||
closequit(conn)
|
|
||||||
|
|
||||||
terms = newterms.split()
|
|
||||||
|
|
||||||
"""# Search URLs, titles, tags with all keywords
|
|
||||||
if args.sall is not None:
|
if args.sall is not None:
|
||||||
if args.sall[0] == 'tags' and len(args.sall) == 1:
|
if args.sall[0] == 'tags' and len(args.sall) == 1:
|
||||||
showUniqueTags(cur)
|
showUniqueTags(cur)
|
||||||
@ -1237,7 +1178,6 @@ if args.sall is not None:
|
|||||||
printdb(cur, 0, True)
|
printdb(cur, 0, True)
|
||||||
else:
|
else:
|
||||||
searchdb(cur, args.sall, True)
|
searchdb(cur, args.sall, True)
|
||||||
"""
|
|
||||||
|
|
||||||
# Update record
|
# Update record
|
||||||
if update == True:
|
if update == True:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user