• 23-02-2025, 13:42:05
    #10
    G⭐L⭐T⭐S⭐R⭐Y
    osmantunahan adlı üyeden alıntı: mesajı görüntüle
    Rica ederim. Müsait olduğum bir vakit onuda yazıp paylaşırım hocam.
    Selamlar,

    Heyecanla bekliyoruz hocam, takipteyim
  • 24-02-2025, 22:03:03
    #11
    Clipton adlı üyeden alıntı: mesajı görüntüle
    Selamlar,

    Heyecanla bekliyoruz hocam, takipteyim
    Turkishli adlı üyeden alıntı: mesajı görüntüle
    Paylaşım için teşekkürler. Namaz vakitleri için bir api mevcutmu acaba?
    Merhaba bu linke tıklayarak yazmış olduğum namaz vakitleri apisine ulaşabilirsiniz. 😊
  • 24-02-2025, 22:04:31
    #12
    G⭐L⭐T⭐S⭐R⭐Y
    osmantunahan adlı üyeden alıntı: mesajı görüntüle
    Merhaba bu linke tıklayarak yazmış olduğum namaz vakitleri apisine ulaşabilirsiniz. 😊

    Çok teşekkür ederim hocam birazdan bakıyor olucağım, emeğinize sağlık
  • 24-02-2025, 22:06:51
    #13
    Clipton adlı üyeden alıntı: mesajı görüntüle
    Çok teşekkür ederim hocam birazdan bakıyor olucağım, emeğinize sağlık
    Rica ederim hocam
  • 01-05-2025, 02:24:31
    #14
    osmantunahan adlı üyeden alıntı: mesajı görüntüle
    Merhaba Arkadaşlar,
    Bugün, bir projede kullanmak amacıyla geliştirdiğim E-Devlet Nöbetçi Eczaneler API'ı ile ilgili bilgi paylaşmak istiyorum. Bu API sayesinde, Türkiye'deki nöbetçi eczanelerin bilgilerini kolayca elde edebilirsiniz. API'nın sağladığı veriler arasında eczane adı, bağlı olduğu ilçe, telefon numarası ve adres gibi bilgilere ulaşılabiliyor.

    API Yanıt Örneği:
    ...
    {
        "name": "NİHAL",
        "district": "Fatih",
        "phone": "0 - (212) 521 - 4189",
        "address": "Ali Kuşçu Mah. Başmüezzin Sok No:25/C"
    },
    ...
    Yukarıda yer alan örnek, API tarafından döndürülen verilerden yalnızca bir tanesidir.

    Desteklenen Parametreler:
    • plateCode: Verilen plaka koduna göre, ilgili ildeki nöbetçi eczaneler listelenir.
    • date: Girilen tarihte açık olacak nöbetçi eczaneler listelenir.
    API Kodu:
    <?php
    
    declare(strict_types=1);
    
    error_reporting(E_ALL);
    ini_set('display_errors', '1');
    
    session_start();
    
    header('Content-Type: application/json; charset=utf-8');
    
    class HttpClient
    {
        private string $url;
        private array $headers;
        private string $cookieString;
    
        public function __construct(string $url)
        {
            $this->url = $url;
            $this->headers = [
                'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
                'Accept-Language: en-US,en;q=0.9',
                'Cache-Control: max-age=0',
                'Connection: keep-alive',
                'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36',
            ];
            $this->cookieString = 'language=tr_TR.UTF-8; w3p=1943251136.20480.0000; _uid=1740222152-6371b0c0-9419-485e-abf4-f1a4d9de5c3b; ridbb=WyI4MjE2YjU0YWRkN2YxOTkwNDU2NmZjMzgzZTIzZGRmZGQ1MTVmYmIxZTIiXQ%3D%3D; TURKIYESESSIONID=ppvh79th8g07afbs5f9geuvefd; TS01c2accc=015c1cbb6d1a639504e1b29b05b98286d479274aaf94c82d859307282d1c86808d72742a98623567bf8f57c330e2ce30a706ea5e64; _lastptts=1740223200';
        }
    
        public function get(string $url): string
        {
            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $this->headers);
            curl_setopt($ch, CURLOPT_COOKIE, $this->cookieString);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            $response = curl_exec($ch);
            curl_close($ch);
            return $response;
        }
    
        public function post(string $url, array $postData): string
        {
            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $this->headers);
            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
            curl_setopt($ch, CURLOPT_COOKIE, $this->cookieString);
            $response = curl_exec($ch);
            curl_close($ch);
            return $response;
        }
    
        public function getUrl(): string
        {
            return $this->url;
        }
    }
    
    class PharmacyScraper
    {
        private HttpClient $client;
    
        public function __construct(HttpClient $client)
        {
            $this->client = $client;
        }
    
        public function fetchToken(): ?string
        {
            $response = $this->client->get($this->client->getUrl());
            preg_match('/<input type="hidden" name="token" value="([^"]+)"/', $response, $matches);
            return $matches[1] ?? null;
        }
    
        public function submitSearchForm(string $token, string $plateCode, string $date): void
        {
            $postData = [
                'plakaKodu' => $plateCode,
                'nobetTarihi' => $date,
                'token' => $token,
                'btn' => 'Sorgula'
            ];
            $this->client->post($this->client->getUrl() . '?submit', $postData);
        }
    
        public function fetchPharmacies(): array
        {
            $response = $this->client->get($this->client->getUrl() . '?nobetci=Eczaneler');
            $dom = new DOMDocument();
            libxml_use_internal_errors(true);
            $dom->loadHTML($response);
            libxml_clear_errors();
    
            $table = $dom->getElementById('searchTable');
            if (!$table) return [];
    
            $rows = $table->getElementsByTagName('tr');
            $pharmacies = [];
    
            foreach ($rows as $row) {
                $cols = $row->getElementsByTagName('td');
                if ($cols->length > 0) {
                    $pharmacies[] = [
                        'name' => trim($cols->item(0)->textContent),
                        'district' => trim($cols->item(1)->textContent),
                        'phone' => trim(str_replace("Ara", "", $cols->item(2)->textContent)),
                        'address' => trim($cols->item(3)->textContent)
                    ];
                }
            }
            return $pharmacies;
        }
    }
    
    try {
        $time_left = 5 - (time() - $_SESSION['last_request']);
        if (isset($_SESSION['last_request']) && $time_left > 0) {
            throw new Exception("Rate limit exceeded. Please wait $time_left seconds before trying again.");
        }
        $_SESSION['last_request'] = time();
    
        $plateCode = filter_input(INPUT_GET, 'plateCode', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
        $date = filter_input(INPUT_GET, 'date', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?: date('d/m/Y');
    
        if (!$plateCode || !is_numeric($plateCode)) {
            throw new Exception('City/Plate code invalid!');
        }
        if (!preg_match('/^\d{2}\/\d{2}\/\d{4}$/', $date)) {
            throw new Exception('Date format is invalid (ex: 22/02/2025)');
        }
    
        $client = new HttpClient("https://turkiye.gov.tr/saglik-titck-nobetci-eczane-sorgulama");
        $scraper = new PharmacyScraper($client);
    
        $token = $scraper->fetchToken();
        if (!$token) {
            throw new Exception('Failed to access the verification token!');
        }
    
        $scraper->submitSearchForm($token, $plateCode, $date);
        $pharmacies = $scraper->fetchPharmacies();
    
        echo json_encode(['status' => true, 'data' => $pharmacies], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
    } catch (Exception $e) {
        echo json_encode(['status' => false, 'error' => $e->getMessage()], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
    }
    Bu API yi, çalışır vaziyette PHP Siteye entegre edebilir misin? (Ücretli)
  • 02-05-2025, 19:34:43
    #15
    osmantunahan adlı üyeden alıntı: mesajı görüntüle
    Merhaba Arkadaşlar,
    Bugün, bir projede kullanmak amacıyla geliştirdiğim E-Devlet Nöbetçi Eczaneler API'ı ile ilgili bilgi paylaşmak istiyorum. Bu API sayesinde, Türkiye'deki nöbetçi eczanelerin bilgilerini kolayca elde edebilirsiniz. API'nın sağladığı veriler arasında eczane adı, bağlı olduğu ilçe, telefon numarası ve adres gibi bilgilere ulaşılabiliyor.

    API Yanıt Örneği:
    ...
    {
        "name": "NİHAL",
        "district": "Fatih",
        "phone": "0 - (212) 521 - 4189",
        "address": "Ali Kuşçu Mah. Başmüezzin Sok No:25/C"
    },
    ...
    Yukarıda yer alan örnek, API tarafından döndürülen verilerden yalnızca bir tanesidir.

    Desteklenen Parametreler:
    • plateCode: Verilen plaka koduna göre, ilgili ildeki nöbetçi eczaneler listelenir.
    • date: Girilen tarihte açık olacak nöbetçi eczaneler listelenir.
    API Kodu:
    <?php
    
    declare(strict_types=1);
    
    error_reporting(E_ALL);
    ini_set('display_errors', '1');
    
    session_start();
    
    header('Content-Type: application/json; charset=utf-8');
    
    class HttpClient
    {
        private string $url;
        private array $headers;
        private string $cookieString;
    
        public function __construct(string $url)
        {
            $this->url = $url;
            $this->headers = [
                'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
                'Accept-Language: en-US,en;q=0.9',
                'Cache-Control: max-age=0',
                'Connection: keep-alive',
                'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36',
            ];
            $this->cookieString = 'language=tr_TR.UTF-8; w3p=1943251136.20480.0000; _uid=1740222152-6371b0c0-9419-485e-abf4-f1a4d9de5c3b; ridbb=WyI4MjE2YjU0YWRkN2YxOTkwNDU2NmZjMzgzZTIzZGRmZGQ1MTVmYmIxZTIiXQ%3D%3D; TURKIYESESSIONID=ppvh79th8g07afbs5f9geuvefd; TS01c2accc=015c1cbb6d1a639504e1b29b05b98286d479274aaf94c82d859307282d1c86808d72742a98623567bf8f57c330e2ce30a706ea5e64; _lastptts=1740223200';
        }
    
        public function get(string $url): string
        {
            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $this->headers);
            curl_setopt($ch, CURLOPT_COOKIE, $this->cookieString);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            $response = curl_exec($ch);
            curl_close($ch);
            return $response;
        }
    
        public function post(string $url, array $postData): string
        {
            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $this->headers);
            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
            curl_setopt($ch, CURLOPT_COOKIE, $this->cookieString);
            $response = curl_exec($ch);
            curl_close($ch);
            return $response;
        }
    
        public function getUrl(): string
        {
            return $this->url;
        }
    }
    
    class PharmacyScraper
    {
        private HttpClient $client;
    
        public function __construct(HttpClient $client)
        {
            $this->client = $client;
        }
    
        public function fetchToken(): ?string
        {
            $response = $this->client->get($this->client->getUrl());
            preg_match('/<input type="hidden" name="token" value="([^"]+)"/', $response, $matches);
            return $matches[1] ?? null;
        }
    
        public function submitSearchForm(string $token, string $plateCode, string $date): void
        {
            $postData = [
                'plakaKodu' => $plateCode,
                'nobetTarihi' => $date,
                'token' => $token,
                'btn' => 'Sorgula'
            ];
            $this->client->post($this->client->getUrl() . '?submit', $postData);
        }
    
        public function fetchPharmacies(): array
        {
            $response = $this->client->get($this->client->getUrl() . '?nobetci=Eczaneler');
            $dom = new DOMDocument();
            libxml_use_internal_errors(true);
            $dom->loadHTML($response);
            libxml_clear_errors();
    
            $table = $dom->getElementById('searchTable');
            if (!$table) return [];
    
            $rows = $table->getElementsByTagName('tr');
            $pharmacies = [];
    
            foreach ($rows as $row) {
                $cols = $row->getElementsByTagName('td');
                if ($cols->length > 0) {
                    $pharmacies[] = [
                        'name' => trim($cols->item(0)->textContent),
                        'district' => trim($cols->item(1)->textContent),
                        'phone' => trim(str_replace("Ara", "", $cols->item(2)->textContent)),
                        'address' => trim($cols->item(3)->textContent)
                    ];
                }
            }
            return $pharmacies;
        }
    }
    
    try {
        $time_left = 5 - (time() - $_SESSION['last_request']);
        if (isset($_SESSION['last_request']) && $time_left > 0) {
            throw new Exception("Rate limit exceeded. Please wait $time_left seconds before trying again.");
        }
        $_SESSION['last_request'] = time();
    
        $plateCode = filter_input(INPUT_GET, 'plateCode', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
        $date = filter_input(INPUT_GET, 'date', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?: date('d/m/Y');
    
        if (!$plateCode || !is_numeric($plateCode)) {
            throw new Exception('City/Plate code invalid!');
        }
        if (!preg_match('/^\d{2}\/\d{2}\/\d{4}$/', $date)) {
            throw new Exception('Date format is invalid (ex: 22/02/2025)');
        }
    
        $client = new HttpClient("https://turkiye.gov.tr/saglik-titck-nobetci-eczane-sorgulama");
        $scraper = new PharmacyScraper($client);
    
        $token = $scraper->fetchToken();
        if (!$token) {
            throw new Exception('Failed to access the verification token!');
        }
    
        $scraper->submitSearchForm($token, $plateCode, $date);
        $pharmacies = $scraper->fetchPharmacies();
    
        echo json_encode(['status' => true, 'data' => $pharmacies], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
    } catch (Exception $e) {
        echo json_encode(['status' => false, 'error' => $e->getMessage()], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
    }
    bu apiyi çalıştırabilen/entegre edebilen var mı yardımcı olabilecek?
  • 16-05-2025, 14:57:38
    #16
    Bu şekilde kullanım yapmanın yasal sonuçları olabilir mi? Gönül rahatlığıyla kullanabilir miyiz?
  • 18-05-2025, 05:41:22
    #17
    istanbulun tüm ilçeleri yok eksik data dönüyor e devlet
  • 22-05-2025, 18:54:40
    #18
    kimin e devlet cooke sini kullanıyorsun? büyük ihtimal birinin edevlet bilgilerini ele geçirdin saçma sapan işlerde kullanıyorsun. bu suç yakalanırsan başın belaya girer. umarım girer de.