|
|
import configparser |
|
|
from flask import Flask, json, request |
|
|
import logging |
|
|
import os |
|
|
import search_engine_model as sem |
|
|
|
|
|
class SearchEngineApp(): |
|
|
|
|
|
def __init__(self): |
|
|
self.logger = logging.getLogger(__name__) |
|
|
logging.basicConfig(level=logging.INFO) |
|
|
self.config_manager_obj = configparser.ConfigParser() |
|
|
self.config_manager_obj.read('./config.cfg') |
|
|
|
|
|
image_root_dir = self.config_manager_obj['SEARCH_ENGINE']['image_root_dir'] |
|
|
csv_file_path = self.config_manager_obj['SEARCH_ENGINE']['csv_file_path'] |
|
|
self.model_manager_obj = sem.SearchEngineModel(image_root_dir, csv_file_path) |
|
|
|
|
|
|
|
|
|
|
|
def search_images(self, text_prompt, image_prompt, prompt_type, nofimages_to_show): |
|
|
search_result = None |
|
|
if ((prompt_type=='Text') and (text_prompt!=None) and (len(text_prompt.strip())>0)): |
|
|
search_result = self.model_manager_obj.search_image_by_text_prompt(text_prompt, |
|
|
nofimages_to_show) |
|
|
|
|
|
if ((prompt_type=='Image') and (image_prompt!=None)): |
|
|
search_result = self.model_manager_obj.search_image_by_image_prompt(image_prompt, |
|
|
nofimages_to_show) |
|
|
|
|
|
return search_result |
|
|
|
|
|
|
|
|
|
|
|
api = Flask(__name__) |
|
|
|
|
|
search_engine_app_manager = SearchEngineApp() |
|
|
|
|
|
@api.route('/images', methods=['GET']) |
|
|
def get_images(): |
|
|
text_prompt = request.args.get('search_input') |
|
|
search_result = search_engine_app_manager.search_images(text_prompt, None, 'Text', 20) |
|
|
|
|
|
return json.dumps({'images': search_result}) |
|
|
|
|
|
if __name__ == '__main__': |
|
|
api.run(host='0.0.0.0', port=5000, debug=True) |