• 22-10-2024, 15:50:25
    #1
    Merhabalar.
    Yazılım Serper.dev api üzerinden Google Maps / Place üzerinde arama yapmaktadır. Yaptığı aramaları kullanıcı adına tanımlı olan veritabanında kaydetmektedir, daha sonrasında geri dönüp yaptığı aramaları inceleyebilirsiniz. Çıkan sonuçlarda telefon numarası olan işletmelerin yanında Whatsapp üzerinden mesaj gönderebilirsiniz, Sadece telefon numarası olan işletmelerde bu buton aktif oluyor. Profile.PHP Sayfasında kullanıcıyla ilgili kullanıcı adı düzenleme, eposta düzenleme, şifre düzenleme gibi işlemler yapabilirsiniz. İndex.php dosyasında veri arama işlemi ve çıkan sonuçları inceleyebilirsiniz. Serper.dev api kaynaklı tek aramada en fazla 10 sonuç elde ediyorsunuz, bu durum api kaynaklıdır, api tarafında engelleme var, eğer ilerleyen süreçlerde Place api kaynağı elde edebilirsem yazılımı Place api üzerinde tekrar düzenleyebilirim. Config.PHP Dosyasını kendi veritabanı yapınıza göre düzenleyiniz, dosyalar içerisinde SQL database tablosu mevcuttur. Açık kaynaklıdır, dilediğiniz gibi düzenleyebilirsiniz.
    Görüşürüz


    https://github.com/propjoe-tr/Harita...HP-Serper.dev/
  • 26-10-2024, 22:29:11
    #2
    Hocam kurulum videosu olsa çok daha iyi olabilirdii.
  • 26-10-2024, 22:42:24
    #3
    emrexlife adlı üyeden alıntı: mesajı görüntüle
    Hocam kurulum videosu olsa çok daha iyi olabilirdii.
    Bunun kurulumunda bir şey yok hocam, veritabanı oluşturun, veritabanına sql dosyasını yükleyin, config.php dosyasını düzenleyin, serper.dev üzerinden aldığınız api kodunuda config.php içerisindeki api kısmına yazın, iş bitti
  • 27-10-2024, 17:15:04
    #4
    propjoe adlı üyeden alıntı: mesajı görüntüle
    bunun kurulumunda bir şey yok hocam, veritabanı oluşturun, veritabanına sql dosyasını yükleyin, config.php dosyasını düzenleyin, serper.dev üzerinden aldığınız api kodunuda config.php içerisindeki api kısmına yazın, iş bitti
    merhabalar sağlikli günler hocam..
    Serper deki x api kismini config.php kismina yaziyoruz değilmi ???
  • 27-10-2024, 17:15:56
    #5
    Furkanavci adlı üyeden alıntı: mesajı görüntüle
    merhabalar sağlikli günler hocam..
    Serper deki x api kismini config.php kismina yaziyoruz değilmi ???
    Selamlar.

    https://serper.dev/api-key

    Burda api key bilgileriniz mevcut.Api anahtar kodunuzu config.php yazmanız gerekmekte.
  • 29-10-2024, 17:55:32
    #6
    hocam sorunsuz kurdum fakat üye oluyorum ama login olamıyorum.
  • 29-10-2024, 17:58:52
    #7
    aloneboy03 adlı üyeden alıntı: mesajı görüntüle
    hocam sorunsuz kurdum fakat üye oluyorum ama login olamıyorum.
    Veritabanı ayarlarını düzgün yaptınız mı? Hosting bilgilerinizi iletin bakalım.
  • 02-11-2024, 11:53:21
    #8
    PropJoe adlı üyeden alıntı: mesajı görüntüle
    Merhabalar.
    Yazılım Serper.dev api üzerinden Google Maps / Place üzerinde arama yapmaktadır. Yaptığı aramaları kullanıcı adına tanımlı olan veritabanında kaydetmektedir, daha sonrasında geri dönüp yaptığı aramaları inceleyebilirsiniz. Çıkan sonuçlarda telefon numarası olan işletmelerin yanında Whatsapp üzerinden mesaj gönderebilirsiniz, Sadece telefon numarası olan işletmelerde bu buton aktif oluyor. Profile.PHP Sayfasında kullanıcıyla ilgili kullanıcı adı düzenleme, eposta düzenleme, şifre düzenleme gibi işlemler yapabilirsiniz. İndex.php dosyasında veri arama işlemi ve çıkan sonuçları inceleyebilirsiniz. Serper.dev api kaynaklı tek aramada en fazla 10 sonuç elde ediyorsunuz, bu durum api kaynaklıdır, api tarafında engelleme var, eğer ilerleyen süreçlerde Place api kaynağı elde edebilirsem yazılımı Place api üzerinde tekrar düzenleyebilirim. Config.PHP Dosyasını kendi veritabanı yapınıza göre düzenleyiniz, dosyalar içerisinde SQL database tablosu mevcuttur. Açık kaynaklıdır, dilediğiniz gibi düzenleyebilirsiniz.
    Görüşürüz


    https://github.com/propjoe-tr/Harita...HP-Serper.dev/
    20 sonuç veriyor place api maksimum 60 sonuç veriyor 60 sonucu elde etmek için page_token kullanabilirsiniz.
    function get_places($query, $country, $language, $limit, $page) {
        global $config;
        
        $results = [];
        $total_results = 0;
        $page_token = null; // İlk sayfa için başlangıçta page_token yok
    
        // Limit, her istekten 20 sonuç döneceğini varsayarak API çağrı sayısını belirler
        $api_calls = ceil($limit / 20);
    
        for ($i = 0; $i < $api_calls; $i++) {
            $curl = curl_init();
            $post_fields = [
                'q' => $query,
                'gl' => $country,
                'hl' => $language,
                'num' => 20,
                'page' => $page + $i,
            ];
    
            // Eğer bir page_token varsa, isteğe dahil et
            if ($page_token) {
                $post_fields['page_token'] = $page_token;
            }
    
            curl_setopt_array($curl, [
                CURLOPT_URL => 'https://google.serper.dev/places',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 30,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => json_encode($post_fields),
                CURLOPT_HTTPHEADER => [
                    "X-API-KEY: {$config['api_key']}",
                    'Content-Type: application/json'
                ],
            ]);
    
            $response = curl_exec($curl);
            $err = curl_error($curl);
            curl_close($curl);
    
            if ($err) {
                throw new Exception("cURL Error #:" . $err);
            }
    
            $result = json_decode($response, true);
            if (json_last_error() !== JSON_ERROR_NONE) {
                throw new Exception("JSON decode error: " . json_last_error_msg());
            }
    
            $results = array_merge($results, $result['places'] ?? []);
            $total_results = $result['searchMetadata']['totalResults'] ?? 0;
    
            // page_token bir sonraki sayfa için güncelleniyor
            $page_token = $result['nextPageToken'] ?? null;
    
            // Sonuç sayısı limiti aştığında döngüyü sonlandır
            if (count($results) >= $limit || !$page_token) {
                break;
            }
        }
    
        return [
            'places' => array_slice($results, 0, $limit),
            'total_results' => intval($total_results)
        ];
    }
    fonksiyonu bu şekilde değiştirip sonraki sayfa geçişlerde diğer sonuçları da alabilirsiniz.
  • 02-11-2024, 11:55:03
    #9
    harew1 adlı üyeden alıntı: mesajı görüntüle
    20 sonuç veriyor place api maksimum 60 sonuç veriyor 60 sonucu elde etmek için page_token kullanabilirsiniz.
    function get_places($query, $country, $language, $limit, $page) {
        global $config;
        
        $results = [];
        $total_results = 0;
        $page_token = null; // İlk sayfa için başlangıçta page_token yok
    
        // Limit, her istekten 20 sonuç döneceğini varsayarak API çağrı sayısını belirler
        $api_calls = ceil($limit / 20);
    
        for ($i = 0; $i < $api_calls; $i++) {
            $curl = curl_init();
            $post_fields = [
                'q' => $query,
                'gl' => $country,
                'hl' => $language,
                'num' => 20,
                'page' => $page + $i,
            ];
    
            // Eğer bir page_token varsa, isteğe dahil et
            if ($page_token) {
                $post_fields['page_token'] = $page_token;
            }
    
            curl_setopt_array($curl, [
                CURLOPT_URL => 'https://google.serper.dev/places',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 30,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => json_encode($post_fields),
                CURLOPT_HTTPHEADER => [
                    "X-API-KEY: {$config['api_key']}",
                    'Content-Type: application/json'
                ],
            ]);
    
            $response = curl_exec($curl);
            $err = curl_error($curl);
            curl_close($curl);
    
            if ($err) {
                throw new Exception("cURL Error #:" . $err);
            }
    
            $result = json_decode($response, true);
            if (json_last_error() !== JSON_ERROR_NONE) {
                throw new Exception("JSON decode error: " . json_last_error_msg());
            }
    
            $results = array_merge($results, $result['places'] ?? []);
            $total_results = $result['searchMetadata']['totalResults'] ?? 0;
    
            // page_token bir sonraki sayfa için güncelleniyor
            $page_token = $result['nextPageToken'] ?? null;
    
            // Sonuç sayısı limiti aştığında döngüyü sonlandır
            if (count($results) >= $limit || !$page_token) {
                break;
            }
        }
    
        return [
            'places' => array_slice($results, 0, $limit),
            'total_results' => intval($total_results)
        ];
    }
    fonksiyonu bu şekilde değiştirip sonraki sayfa geçişlerde diğer sonuçları da alabilirsiniz.

    Api sağlayacısı Serper tek seferde max 10 sorgu çekilebileceğini yazmıştı, önerinizi inceleyeceğim, teşekkür ederim.