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