66 lines
2.4 KiB
Python
Executable File
66 lines
2.4 KiB
Python
Executable File
from flask import Blueprint, jsonify, request
|
|
import logging
|
|
from routes.utils.search import search # Corrected import
|
|
from routes.config import get_config # Import get_config function
|
|
|
|
search_bp = Blueprint('search', __name__)
|
|
|
|
@search_bp.route('/search', methods=['GET'])
|
|
def handle_search():
|
|
try:
|
|
# Get query parameters
|
|
query = request.args.get('q', '')
|
|
search_type = request.args.get('search_type', '')
|
|
limit = int(request.args.get('limit', 10))
|
|
main = request.args.get('main', '') # Get the main parameter for account selection
|
|
|
|
# If main parameter is not provided in the request, get it from config
|
|
if not main:
|
|
config = get_config()
|
|
if config and 'spotify' in config:
|
|
main = config['spotify']
|
|
print(f"Using main from config: {main}")
|
|
|
|
|
|
# Validate parameters
|
|
if not query:
|
|
return jsonify({'error': 'Missing search query'}), 400
|
|
|
|
valid_types = ['track', 'album', 'artist', 'playlist', 'episode']
|
|
if search_type not in valid_types:
|
|
return jsonify({'error': 'Invalid search type'}), 400
|
|
|
|
# Perform the search with corrected parameter name
|
|
raw_results = search(
|
|
query=query,
|
|
search_type=search_type, # Fixed parameter name
|
|
limit=limit,
|
|
main=main # Pass the main parameter
|
|
)
|
|
|
|
|
|
# Extract items from the appropriate section of the response based on search_type
|
|
items = []
|
|
if raw_results and search_type + 's' in raw_results:
|
|
type_key = search_type + 's'
|
|
items = raw_results[type_key].get('items', [])
|
|
elif raw_results and search_type in raw_results:
|
|
|
|
items = raw_results[search_type].get('items', [])
|
|
|
|
|
|
# Return both the items array and the full data for debugging
|
|
return jsonify({
|
|
'items': items,
|
|
'data': raw_results, # Include full data for debugging
|
|
'error': None
|
|
})
|
|
|
|
except ValueError as e:
|
|
print(f"ValueError in search: {str(e)}")
|
|
return jsonify({'error': str(e)}), 400
|
|
except Exception as e:
|
|
import traceback
|
|
print(f"Exception in search: {str(e)}")
|
|
print(traceback.format_exc())
|
|
return jsonify({'error': f'Internal server error: {str(e)}'}), 500 |