<?php
header('Content-Type: text/html; charset=utf-8');
$path="../../../";
include("cevir.php");
$path2="config/"; include("".$path."config/map.php");
include("fonksiyon".$ver.".php");

echo '<script src="//code.jquery.com/jquery-latest.js" type="text/javascript"></script>';
// Anahtar kelimeleri ve firma adını tanımlayın
$keywords = explode("+",tanim("tags","n1",0));
if (!empty(explode("+", tanim("tags", "n2", 0)))){$multilocation = "true";}
if ($multilocation === "true") {
	$location = "Metinde {city} adını doğal ve anlamlı bir şekilde kullan; {city} kelimesini sadece konuyla doğrudan ilgiliyse geçir, süsleme veya 'mükemmel şehir' tarzı ifadelerden kaçın; cümleler yerel hedefleme (örnek: {city} e-ticaret firması, {city} web tasarım ajansı) amacına hizmet etsin.";
}

$apiKey = tanim("openai","n1",0); // OpenAI API anahtarınızı buraya ekleyin
$googleApiKey = "AIzaSyAA-Wc9Lyfe2z8R4pgH1rWeHXrdw9ixud8";
$searchEngineId = "94b98fc58704e4161";
$apl = isset($_GET["apl"]) && !empty($_GET["apl"]) ? $_GET["apl"] : "tr";

// ChatGPT API'yi kullanarak blog içeriği üretmek için bir fonksiyon
function generateBlogContent($apiKey, $keyword, $languageOption = 'tr') {
	global $firma, $fdesc;
    $apiUrl = "https://api.openai.com/v1/chat/completions";

    // Türkçe içerik prompt'ları
	$titlePromptTr = $keyword . ' odaklı, ' . $fdesc . ' bazlı, 100 karakteri geçmeyen, dikkat çekici ve profesyonel bir başlık üret. Başlık tamamen doğal olsun, "başlık", "konu" gibi ifadeler kullanma. ' . $location;
	$descriptionPromptTr = $keyword . ' odaklı, ' . $fdesc . ' bazlı, 200 karakteri geçmeyen, SEO uyumlu ve akıcı bir meta açıklama oluştur. Anahtar kelimeyi içersin ve okuyucuyu tıklamaya teşvik etsin. "Açıklama" veya "öneri" gibi ifadeler kullanma. ' . $location;
	$contentPromptTr = $firma . " için, " . $keyword . " odaklı ve " . $fdesc . " bazlı, SEO odaklı detaylı bir blog yazısı hazırla. Yazı " . $keyword . " kelimelerini içersin. Doğrudan yazıya başla; giriş, sonuç veya karşılama metni ekleme. " . $firma . " ile bağlantılı örnekler içersin. " . $location;
 
   // İngilizce içerik prompt'ları
    $titlePromptEn = 'Write a professional and engaging title about ' . $keyword . '. Keep it under 100 characters and make it sound natural — no words like "title", "topic", or "suggestion". ' . $location;
	$descriptionPromptEn = 'Write an SEO-friendly meta description about ' . $keyword . ' under 200 characters. It should sound natural, include the keyword, and encourage clicks. Avoid phrases like "description" or "suggestion". ' . $location;
	$contentPromptEn = "Write a professional SEO-focused blog post for " . $firma . " about " . $keyword . ". Start directly, without adding any introduction, conclusion, or greeting. Provide value to the reader and include examples naturally connected to " . $firma . ". " . $location;

    // API çağrısı yapan fonksiyon
    function fetchFromAPI($prompt, $apiUrl, $apiKey) {
        $data = [
            "model" => "gpt-3.5-turbo",
            "messages" => [
                ["role" => "system", "content" => "You are a helpful assistant."],
                ["role" => "user", "content" => $prompt]
            ],
            "max_tokens" => 800,
            "temperature" => 0.7,
        ];
        $ch = curl_init($apiUrl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            "Content-Type: application/json",
            "Authorization: Bearer " . $apiKey
        ]);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
        $response = curl_exec($ch);
        if (curl_errno($ch)) {
            die('CURL error: ' . curl_error($ch));
        }
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if ($httpCode !== 200) {
            die('API request failed. HTTP Code: ' . $httpCode . '. Response: ' . $response);
        }
        curl_close($ch);
        $responseData = json_decode($response, true);
        if (!isset($responseData['choices'][0]['message']['content'])) {
            die('API response is not in the expected format. Response: ' . $response);
        }
        return trim($responseData['choices'][0]['message']['content']);
    }
    // Sonuçları tutmak için dizi
    $result = [];
    // Türkçe içerik oluşturma
    if ($languageOption === 'tr' || $languageOption === 'both') {
        $result['turkish'] = [
            "title" => fetchFromAPI($titlePromptTr, $apiUrl, $apiKey),
            "description" => fetchFromAPI($descriptionPromptTr, $apiUrl, $apiKey),
            "content" => fetchFromAPI($contentPromptTr, $apiUrl, $apiKey),
        ];
    }
    // İngilizce içerik oluşturma
    if ($languageOption === 'en' || $languageOption === 'both') {
        $result['english'] = [
            "title" => fetchFromAPI($titlePromptEn, $apiUrl, $apiKey),
            "description" => fetchFromAPI($descriptionPromptEn, $apiUrl, $apiKey),
            "content" => fetchFromAPI($contentPromptEn, $apiUrl, $apiKey),
        ];
    }
    return $result;
}

function formatParagraphs($content) {
    // Metni paragraflara böl ve her paragrafı düzenle
    $paragraphs = preg_split("/\n|\r\n?/", trim($content)); // Satır sonlarına göre parçala
    $formattedContent = "";
    foreach ($paragraphs as $paragraph) {
        // Eğer paragraf boş değilse düzenle
        if (trim($paragraph) !== '') {
            $formattedContent .= "<p>" . trim($paragraph) . "</p>\n";
        }
    }
    return $formattedContent;
}

function searchImageOnGoogle($keyword, $googleApiKey, $searchEngineId, $fallbackImage = null) {
    // Google Custom Search API URL'sini oluştur
    $searchUrl = "https://www.googleapis.com/customsearch/v1?q=" . urlencode($keyword) . "&searchType=image&imgSize=large&key=" . $googleApiKey . "&cx=" . $searchEngineId . "&num=10"; // 10 sonuç alınıyor
    
    // cURL ile API'yi çağırma
    $ch = curl_init($searchUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); // Zaman aşımı 30 saniye
    $response = curl_exec($ch);
    
    // cURL hatalarını kontrol et
    if (curl_errno($ch)) {
        error_log('CURL hatası: ' . curl_error($ch)); // Hata günlüğe yazılır
        curl_close($ch);
        return $fallbackImage; // Hata durumunda fallback görseli döndür
    }
    curl_close($ch);
    
    // API yanıtını kontrol et
    $responseData = json_decode($response, true);
    if (isset($responseData['error'])) {
        error_log('API Hatası: ' . $responseData['error']['message']); // Hata günlüğe yazılır
        return $fallbackImage;
    }
    
    // Görselleri işleme
    if (isset($responseData['items'])) {
        foreach ($responseData['items'] as $item) {
            // Sadece jpg, jpeg ve png formatındaki görselleri kontrol et
            if (preg_match('/\.(jpg|jpeg|png)$/', $item['link'])) {
                $imageWidth = $item['image']['width'];
                $imageHeight = $item['image']['height'];
                
                // Yatay görselleri seç (genişlik > yükseklik)
                if ($imageWidth > $imageHeight) {
                    return $item['link']; // Uygun görsel bulunduğunda döndür
                }
            }
        }
    }
    
    // Hiçbir uygun görsel bulunamadıysa fallback döndür
    return $fallbackImage;
}

// Anahtar kelimelerden rastgele birini seç
$selectedKeyword = $keywords[array_rand($keywords)];
if($_POST["tag"]<>""){$selectedKeyword=$_POST["tag"];}

$blogData = generateBlogContent($apiKey, $selectedKeyword, $apl);
if($ver=="7" && !$conn->ping()){$conn->close();$conn=mysqli_connect($V3Server,$V3User,$V3Pass,$V3Db);mysqli_set_charset($conn,'utf8');}
if($_GET["id"]==""){
	$insertedId = null;
	if($_GET["apl"]=="" or $_GET["apl"]=="tr" or $_GET["apl"]=="both"){
		echo $titleTr=str_replace('"', '', $blogData['turkish']['title']);
		$Rs = $conn->query("insert into lang1 (ne,t1,n1,n2,s2,s13,ts1) values ('haber', '".addslashes(stripslashes($titleTr))."', '".addslashes(formatParagraphs(stripslashes($blogData['turkish']['content'])))."', '".addslashes(stripslashes($blogData['turkish']['description']))."', '".$_GET["catID"]."', '1', now())");
		if ($Rs) { $insertedId = $conn->insert_id; }
	}
	if($_GET["apl"]=="en" or $_GET["apl"]=="both"){
		echo $titleEn=str_replace('"', '', $blogData['english']['title']);
		$Rs = $conn->query("insert into lang2 (id,ne,t1,n1,n2,s2,s13,ts1) values ('".$id."','haber', '".addslashes(stripslashes($titleEn))."', '".addslashes(stripslashes(formatParagraphs($blogData['english']['content'])))."', '".addslashes(stripslashes($blogData['english']['description']))."', '".$_GET["catID"]."', '1', now())");
		if ($Rs) { $insertedId = $conn->insert_id; }
	}

//////////////////////last_news\\\\\\\\\\\\\\\\\\\\\\\\\\\
	if ($insertedId !== null) {
		$file = findDirectoryPath("deppo").'/seo_monitor.json';
		$domain = $_SERVER['HTTP_HOST'];
		$data = file_exists($file) ? json_decode(file_get_contents($file), true) : [];
		$newEntry = [
			'Id' => $insertedId,
			'title' => addslashes(stripslashes($titleTr)),
			'description' => addslashes(stripslashes($blogData['turkish']['description'])),
			'domain' => $domain,
			'date' => date('Y-m-d H:i:s'), // Eklenme tarihi ve saati
			'time' => time()
		];
		array_unshift($data, $newEntry);
		if (count($data) > 3) { array_pop($data); }
		file_put_contents($file, json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
		
		if($_GET["img"]=="" or $_GET["img"]=="true"){
			echo "<script>jQuery(document).ready(function(){location.href='".$weburl."/deppo/tools/script/autopilot.php?id=".$insertedId."&key=".base64_encode($selectedKeyword)."';});</script>";
		}
	}

//////////////////////last_news\\\\\\\\\\\\\\\\\\\\\\\\\\\
}else{
	$selectedKeyword=base64_decode($_GET["key"]);
	$keyword=str_replace("...","",kisalt($selectedKeyword,2));
	
	$blogImage = searchImageOnGoogle($selectedKeyword, $googleApiKey, $searchEngineId);
	$imageString = file_get_contents($blogImage);
	$uzanti_= explode('.',$blogImage); $uzanti  = $uzanti_[count($uzanti_)-1];
	$save = file_put_contents("../../image/".date('dmYHis')."_".cevir($keyword).".".$uzanti."", $imageString);
	$save = file_put_contents("../../image/k_".date('dmYHis')."_".cevir($keyword).".".$uzanti."", $imageString);
	$rsi = $conn->query("insert into medya(ne,t3,t1,s1,s2,s3) values ('resim', 'haber', '".date('dmYHis')."_".cevir($keyword).".".$uzanti."', '".$_GET["id"]."', '1', '0')");
	echo "<img src='".$blogImage."'>";
}
?>
<!--0 9 * * 2,4 php /path/to/your/script.php-->