Homework 05: searx.py

This commit is contained in:
Owen Dorweiler 2025-03-01 16:37:35 -05:00
commit 25099bf998

53
homework05/searx.py Normal file → Executable file
View file

@ -34,7 +34,10 @@ def searx_query(query: str, url: str=URL) -> list[dict]:
>>> searx_query('Python', 'https://yld.me/iB1T') # doctest: +ELLIPSIS
[{'url': 'https://www.python.org/', 'title': 'Welcome to Python.org', ...}]
'''
pass
parameters = {'q': query, 'format': 'json'}
response = requests.get(url, params=parameters)
return response.json()['results']
def print_results(results: list[dict], limit: int=LIMIT, orderby: str=ORDERBY) -> None:
''' Print results of SearX query.
@ -44,7 +47,14 @@ def print_results(results: list[dict], limit: int=LIMIT, orderby: str=ORDERBY) -
https://www.python.org/
...
'''
pass
sorted_results = sorted(results, key=lambda x: x[orderby], reverse=(orderby=='score'))
for index, result in enumerate(sorted_results[:limit], 1):
print(f"{index:>4}.\t{result['title']} [{result['score']:0.2f}]")
print(f"\t{result['url']}")
if index < len(sorted_results[:limit]): # only prints new line between items
print()
# Main Execution
@ -56,9 +66,44 @@ def main(arguments=sys.argv[1:]) -> None:
https://www.python.org/
...
'''
pass
# Set variables equal to the constants (initially)
url = URL
limit = LIMIT
orderby = ORDERBY
search_terms = []
i = 0
while i < len(arguments):
arg = arguments[i]
if arg == '-u':
url = arguments[i+1]
i += 2
elif arg == '-n':
limit = int(arguments[i+1]) # convert the argument to int before setting limit
i += 2
elif arg == '-o':
orderby = arguments[i+1]
i += 2
elif arg == '-h':
usage(0)
elif arg.startswith('-'): # handles case where user enters an invalid command
usage(1)
else: # if it's not a command and it's not invalid, I can assume it's a search term
search_terms.append(arg)
i += 1
# Display the usage message if the user didn't enter a search term
if not search_terms:
usage(1)
query = ' '.join(search_terms)
results = searx_query(query, url)
print_results(results, limit, orderby)
if __name__ == '__main__':
main()
# vim: set sts=4 sw=4 ts=8 expandtab ft=python:
# vim: set sts=4 sw=4 ts=8 expandtab ft=python: