# بسم الله الرحمن الرحيم # بسم الله الرحمن الرحيم # بسم الله الرحمن الرحيم # بسم الله الرحمن الرحيم from flask import Flask, request, jsonify from flask_cors import CORS import json import os from client import RestClient app = Flask(__name__) 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: if request.method == 'POST': data = request.get_json() domain = data.get('domain') else: domain = request.args.get('domain') 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) post_data = { 1112: { "domain": domain, "country_code": "US", "language": "en", "limit": 500, "offset": 0, "orderby": "position,asc", "filters": [["search_volume", ">=", 1]] } } response = client.post("/v2/kwrd_finder_ranked_keywords_get", {"data": post_data}) # 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 @app.route('/get_ranked_kw_for_domain//page', methods=['GET']) def get_ranked_keywords_paginated(domain, page): try: 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 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(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 start_idx = (page - 1) * per_page end_idx = start_idx + per_page return jsonify({ 'total_results': len(keywords), 'page': page, 'per_page': per_page, 'total_pages': total_pages, 'results': keywords[start_idx:end_idx] }) except Exception as e: return jsonify({'error': str(e)}), 500 if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=8000)