From 2fe8023b676d9b119601750bbb2ec96e05d0777a Mon Sep 17 00:00:00 2001 From: ghaymah_dev Date: Wed, 29 Oct 2025 14:25:41 +0000 Subject: [PATCH] Update main.py --- main.py | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/main.py b/main.py index 184e256..9b45339 100644 --- a/main.py +++ b/main.py @@ -6,10 +6,10 @@ +# بسم الله الرحمن الرحيم + from flask import Flask, request, jsonify from flask_cors import CORS -import re -from collections import defaultdict import json import os from client import RestClient @@ -20,9 +20,6 @@ CORS(app) # Global variable to store processed results cached_results = {} - - - @app.route('/get_ranked_kw_for_domain', methods=['GET', 'POST']) def get_ranked_keywords(): try: @@ -35,13 +32,11 @@ def get_ranked_keywords(): if not domain: return jsonify({'error': 'Domain parameter is required'}), 400 - username = os.getenv('DATAFORSEO_API_LOGIN') password = os.getenv('DATAFORSEO_API_PASSWORD') - # Initialize DataForSEO client - client = RestClient(username,password ) + client = RestClient(username, password) post_data = { 1112: { @@ -57,7 +52,12 @@ def get_ranked_keywords(): response = client.post("/v2/kwrd_finder_ranked_keywords_get", {"data": post_data}) - return response + # Store results in cache + if domain and hasattr(response, 'json') and callable(response.json): + response_data = response.json() + cached_results[domain] = response_data + + return jsonify(response.json()) if hasattr(response, 'json') and callable(response.json) else jsonify(response) except Exception as e: return jsonify({'error': str(e)}), 500 @@ -65,16 +65,25 @@ def get_ranked_keywords(): @app.route('/get_ranked_kw_for_domain//page', methods=['GET']) def get_ranked_keywords_paginated(domain, page): try: - # Decode the domain if it's URL encoded import urllib.parse domain = urllib.parse.unquote(domain) if domain not in cached_results: return jsonify({'error': 'Domain not found in cache. Please call the main endpoint first.'}), 404 - location_keywords = cached_results[domain] + response_data = cached_results[domain] + + # Extract keywords from response + keywords = [] + if 'tasks' in response_data: + for task in response_data['tasks']: + if 'result' in task: + for result in task['result']: + if 'items' in result: + keywords.extend(result['items']) + per_page = 10 - total_pages = (len(location_keywords) + per_page - 1) // per_page + total_pages = (len(keywords) + per_page - 1) // per_page if page < 1 or page > total_pages: return jsonify({'error': f'Page number must be between 1 and {total_pages}'}), 400 @@ -83,11 +92,11 @@ def get_ranked_keywords_paginated(domain, page): end_idx = start_idx + per_page return jsonify({ - 'total_results': len(location_keywords), + 'total_results': len(keywords), 'page': page, 'per_page': per_page, 'total_pages': total_pages, - 'results': location_keywords[start_idx:end_idx] + 'results': keywords[start_idx:end_idx] }) except Exception as e: @@ -95,5 +104,4 @@ def get_ranked_keywords_paginated(domain, page): if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=8000) - - + \ No newline at end of file