function fetch_stock_data() { $output = shell_exec('python3 fetch_stocks.py'); if ($output === null) { error_log("Python script did not execute properly."); return false; } $data = json_decode($output, true); if (json_last_error() !== JSON_ERROR_NONE) { error_log("JSON decode error: " . json_last_error_msg()); error_log("Python script output: " . $output); return false; } return $data; } function display_stock_screener() { $stocks = fetch_stock_data(); if (!$stocks) { return "Error fetching stock data. Check the error log for details."; } // Build HTML output $output = "

Top 15 Most Active Stocks Under $11 with Largest Gap

"; $output .= ""; $output .= ""; foreach ($stocks as $stock) { $output .= ""; $output .= ""; $output .= ""; $output .= ""; $output .= ""; $output .= ""; } $output .= "
SymbolPriceVolumeGap
{$stock['symbol']}{$stock['price']}{$stock['volume']}{$stock['gap']}
"; return $output; } XML-RPC server accepts POST requests only.