TDK'den Veri Çekmek Yasal mı?

Herkese merhaba arkadaşlar,
Ben https://sozluk.gov.tr/gts?ara= apisini kullanarak bir uygulama yaptım ve Play Store, Fdroid gibi platformlarda bu uygulamayı yayımlamayı düşünüyorum. Ama şöyle bir problem var. Bu apiyi kullanmanın yasal olup olmadığını bilmiyorum. Google’da birtakım aramalar yaptım ama pek bir netice elde edemedim. Ne yapacağım hakkında hiçbir fikrim yok. Kısaca TDK’den veri çekmek yasal mı? Şimdiden yardımlarınız için teşekkür ederim.

Normalde web scraping yasal bir işlemdir. Ancak şirketler veya kurumların kullanım sözleşmesinde belirtilmesi halinde o siteden veri çekemezsiniz.

Yerinizde olsam bu durumu direkt olarak mail atıp sorardım. Sonuçlar için çok fazla seçenek var ama daha net bir cevap gelir.

1 Beğeni

API kullanmaktansa sozlugun tamamini programin icine gommeyi tavsiye ediyorum.

Fakat sozluge nasil erisilebildigini bulamadim. Mailima yanit vermediler.

1 Beğeni

En baştan beri bunu düşünüyorum ama sıkıntı yaptığım şey şu: "Adamların geri dönüşlerinin çok geç olabilmesi(kesin bilgi değil, yanılıyor olabilirim. Ama Google’da arama yaparken sitenin birinde okudum. Adamın birine 1 yıl sonra dönüş yapmışlar. ) Bu yüzden bu seçeneği uygulamadan önce sizlere bir danışmak istedim.

Yine de teşekkür ederim. Galiba adamlara mail vs. atmaktan başka çarem yok gibi görünüyor.

Hocam bu adamlar tüm sözlüğü legal olarak vermiyor diye biliyorum. Yine de bir araştırayım. Zaten bu adamlar önceden (sanırım bir yıl önceydi) bırakın tüm sözlüğü, sorgulama için bile web scraping işini zorlaştırmışlardı. Yukarıda belirttiğim api olayını son zamanlarda yaptılar.

Biraz daha araştırayım. Baktım olmadı mail atayım, geri dönüş olursa buraya yazayım.

O yazı 2005 senesine ait. 15 senede bir şeyler değişmiştir elbette.

Peki bu işin alternatifi yok mu? Sadece indeks mi kullanıyorsunuz yoksa kelimelerin anlamları ve içinde geçtiği deyim, atasözleri de önemli mi?

Ben 2017-02-12 tarihinde mail attim. Geri donmediler. Bir seyler degismis yani :slight_smile:

Biri bi sekilde ele gecirip kullansa telif davasini nasil acacaklarini merak ediyorum.

Mail atin ama. Hepiniz atin. Ne ise yaradiklarini, neden paramizi aldiklarini hatirlarlar belki.

4 Beğeni

Aslında, site(https://sozluk.gov.tr/)'de telefon numaraları da var, tabi başına telesekleter koymadılarsa. :slight_smile:

Merhaba, index derken ne dediğinizi anlayamadım ama uygulamanın kodlarından bir bölüm atayım size belki anlarsınız. Ama evet, api den çektiğim json dosyasında atasözleri de var. Ama anlam da yeter benim için.

class TDK extends AsyncTask<Void, Void, String>
{
    public static String basardikMi = "hayir";
    public static int dpToPx(int dp) {
        return (int) (dp * Resources.getSystem().getDisplayMetrics().density);
    }
    @Override
    protected String doInBackground(Void... voids) { // arkaplanda siteden veri çekilir
        my.ayrac = "";
        while(my.sonuclar.getPaint().measureText(my.ayrac + "-") <= my.sonuclar.getMeasuredWidth() - dpToPx(26))
            my.ayrac += "-";

        try {
            String word = my.kelime_giris.getText().toString();
            String aranacak = "https://sozluk.gov.tr/gts?ara=" + word;
            URL u = new URL(aranacak);
            BufferedReader buf = new BufferedReader(new InputStreamReader(u.openStream()));

            String line;
            String source = "";
            while ((line = buf.readLine()) != null) {
                source += line;
            }

            if(source.charAt(0) == '{')
                return "";

            String sonuc = "";
            JSONArray govde = new JSONArray(source);

            String anlamlar = "";
            String atasozler = "";
            String bitisikler = "";
            for(int i = 0; i < govde.length(); i++) {

                try {
                    anlamlar = anlamlari_ayikla(govde.getJSONObject(i).getJSONArray("anlamlarListe"));
                } catch (JSONException e) {
                    anlamlar = "<b>Bu kelimeyle ilişkili anlam bulunamadı.</b>";
                }

                try {
                    atasozler = atasozleri_ayikla(govde.getJSONObject(i).getJSONArray("atasozu"));
                } catch (JSONException e) {
                    atasozler = "<b>Bu kelimeyle ilgili atasözü bulunamadı.</b>";
                }
                bitisikler = govde.getJSONObject(i).getString("birlesikler");
                if (bitisikler == "null")
                    bitisikler = "<b>Bu kelimeyle ilgili birleşik kelime bulunamadı.</b>";

                sonuc += "<p style = 'color:red'><b><u>Anlamlar</u></b></p><p>" +
                        anlamlar +
                        "</p><p style = 'color:blue'><b><u>Atasözleri</u></b></p><p>" +
                        atasozler +
                        "</p><p style = 'color:green'><b><u>Birleşik Kelimeler</u></b></p><p>" +
                        bitisikler +
                        "</p>";
                if(i < govde.length() - 1)sonuc += "<p>"+my.ayrac+"</p>";
            }
            basardikMi = "evet";
            return sonuc;

        }
        catch (UnknownHostException e)
        {
            basardikMi = "intyok";
            return "";
        }
        catch (Exception e)
        {
            return e.toString();
        }

    }

    @Override
    protected void onPostExecute(String s) {
        if(basardikMi.equals("evet")) { // sonuca ulaşıldı
            my.sonuclar.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
            my.sonuclar.setText(Html.fromHtml(s));
            basardikMi = "hayir";
        }
        else if(basardikMi.equals("hayir")) { // böyle bir kelime yok #FIXMEEE çünkü belki ileride şartlar değişebilir, doğru bir kontrol değil
            my.sonuclar.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, R.drawable.unfound);
            my.sonuclar.setText(Html.fromHtml("<div style = 'text-align : center'><h2><font color = '#D542B8'><b><u>Hay Aksi! Aradığın Kelimeye Ulaşamadık :(</u></b></font></h2></div>"));
        }
        else if(basardikMi.equals("intyok")) // intyok -> internet yok
        {
            my.sonuclar.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, R.drawable.net_error);
            my.sonuclar.setText(Html.fromHtml("<div style = 'text-align : center'><h2><font color = '#57DAC8'><b><u>İnternet Bağlantısı Olmadığı İçin İsteğinizi Yerine Getiremedik :(</u></b></font></h2></div>"));
            basardikMi = "hayir";
        }

        my.kelime_giris.setEnabled(true);
        my.rasgele_buton.setEnabled(true);
        my.arama_buton.setEnabled(true);
        my.arama_buton.setText("Arama");

    }

    public String anlamlari_ayikla(JSONArray anlamlarListe) // siteden gelen veriden anlamlar alınır
    {
        try {

            String a = "";
            for (int i = 0; i < anlamlarListe.length(); i++) {
                a += "<p><b><i>" + (i + 1) + ") anlam </b></i></p>";
                a += "<p><i>" +anlamlarListe.getJSONObject(i).getString("anlam") + "</i></p>";
            }
            return a;
        }
        catch (Exception e)
        {
            return e.toString();
        }

    }

    public String atasozleri_ayikla(JSONArray atasozlerListe) // siteden gelen veriden atasözleri alınır
    {
        try {

            String a = "";
            for (int i = 0; i < atasozlerListe.length(); i++) {
                a += "<p><b><i>" + (i + 1) + ") atasöz</i></b></p>\n";
                a += "<p>" + atasozlerListe.getJSONObject(i).getString("madde") + "</p>";
            }
            return a;
        }
        catch (Exception e)
        {
            return e.toString();
        }

    }


}

api den elde ettiğim json formatı (ay kelimesi için sonuçlar)

[
    {
        "madde_id": "11236",
        "kac": "1",
        "kelime_no": "3812",
        "cesit": "0",
        "anlam_gor": "1",
        "on_taki": null,
        "madde": "ay",
        "cesit_say": "0",
        "anlam_say": "1",
        "taki": null,
        "cogul_mu": "0",
        "ozel_mi": "0",
        "lisan_kodu": "0",
        "lisan": "",
        "telaffuz": null,
        "birlesikler": null,
        "font": null,
        "madde_duz": "ay",
        "gosterim_tarihi": null,
        "anlamlarListe": [
            {
                "anlam_id": "7137",
                "madde_id": "11236",
                "anlam_sira": "1",
                "fiil": "0",
                "tipkes": "0",
                "anlam": "Birdenbire duyulan acı, ağrı, şaşırma, ürkme veya sevinç anlatan bir söz",
                "gos": "0",
                "orneklerListe": [
                    {
                        "ornek_id": "17110",
                        "anlam_id": "7137",
                        "ornek_sira": "1",
                        "ornek": "Ay! Sen mi idin? Ay, ne güzel!",
                        "kac": "1",
                        "yazar_id": "0"
                    }
                ],
                "ozelliklerListe": [
                    {
                        "ozellik_id": "18",
                        "tur": "3",
                        "tam_adi": "ünlem",
                        "kisa_adi": "ünl.",
                        "ekno": "29"
                    }
                ]
            }
        ]
    },
    {
        "madde_id": "11228",
        "kac": "2",
        "kelime_no": "3811",
        "cesit": "0",
        "anlam_gor": "2",
        "on_taki": null,
        "madde": "ay",
        "cesit_say": "7",
        "anlam_say": "3",
        "taki": null,
        "cogul_mu": "0",
        "ozel_mi": "0",
        "lisan_kodu": "0",
        "lisan": "",
        "telaffuz": null,
        "birlesikler": "ay balığı, ay balta, aybaşı, ay başı, aybeay, ay çekirdeği, ayçiçeği, ay çöreği, aydede, aydemir, ay dönümü, ayevi, ay gün takvimi, ay gün yılı, ay hâli, ay ışığı, ay karanlığı, ay modülü, ay örümceği, ay parçası, ay takvimi, ay yıldız, ay yılı, ayda yılda bir, aydan aya, ayrıksı ay, dolunay, dönencel ay, gücük ay, kamerî ay, küçük ay, mübarek ay, yarım ay, yeni ay, aşure ayı, bayram ayı, büyük mevlit ayı, büyük tövbe ayı, cicimayı, döl ayı, küçük mevlit ayı, küçük tövbe ayı, matem ayı, orak ayı, ayın on dördü, üç aylar, tövbe ayları",
        "font": null,
        "madde_duz": "ay",
        "gosterim_tarihi": null,
        "anlamlarListe": [
            {
                "anlam_id": "7126",
                "madde_id": "11228",
                "anlam_sira": "1",
                "fiil": "0",
                "tipkes": "0",
                "anlam": "Art arda gelen iki yeni ay arasında geçen süre",
                "gos": "0",
                "ozelliklerListe": [
                    {
                        "ozellik_id": "19",
                        "tur": "3",
                        "tam_adi": "isim",
                        "kisa_adi": "a.",
                        "ekno": "30"
                    }
                ]
            },
            {
                "anlam_id": "7127",
                "madde_id": "11228",
                "anlam_sira": "2",
                "fiil": "0",
                "tipkes": "0",
                "anlam": "Yılın on iki bölümünden her biri, mah, meh",
                "gos": "0",
                "orneklerListe": [
                    {
                        "ornek_id": "17108",
                        "anlam_id": "7127",
                        "ornek_sira": "1",
                        "ornek": "Mart ayı. Nisan ayı. Mayıs ayı.",
                        "kac": "2",
                        "yazar_id": "0"
                    }
                ]
            },
            {
                "anlam_id": "7128",
                "madde_id": "11228",
                "anlam_sira": "3",
                "fiil": "0",
                "tipkes": "0",
                "anlam": "Bir ayın herhangi bir gününden ertesi ayın aynı gününe kadar geçen veya yaklaşık otuz gün olarak kabul edilen süre",
                "gos": "0",
                "orneklerListe": [
                    {
                        "ornek_id": "17109",
                        "anlam_id": "7128",
                        "ornek_sira": "1",
                        "ornek": "Bu iş ancak üç ayda biter. Temiz iş altı ayda çıkar.",
                        "kac": "1",
                        "yazar_id": "0"
                    }
                ]
            }
        ],
        "atasozu": [
            {
                "madde_id": "11229",
                "madde": "ay ayakta çoban yatakta, ay yatakta çoban ayakta",
                "on_taki": null
            },
            {
                "madde_id": "11230",
                "madde": "ay aydın, hesap belli",
                "on_taki": null
            },
            {
                "madde_id": "11231",
                "madde": "ay gibi",
                "on_taki": null
            },
            {
                "madde_id": "11232",
                "madde": "ay harmanlanmak",
                "on_taki": null
            },
            {
                "madde_id": "11235",
                "madde": "ayı gördüm, yıldıza itibarım (veya minnetim) yok",
                "on_taki": null
            },
            {
                "madde_id": "11234",
                "madde": "ayı görmeden bayram etme",
                "on_taki": null
            },
            {
                "madde_id": "11233",
                "madde": "ay var yılı besler, yıl var ayı beslemez",
                "on_taki": null
            }
        ]
    },
    {
        "madde_id": "87494",
        "kac": "3",
        "kelime_no": "102620",
        "cesit": "0",
        "anlam_gor": "0",
        "on_taki": null,
        "madde": "Ay",
        "cesit_say": "0",
        "anlam_say": "1",
        "taki": null,
        "cogul_mu": "0",
        "ozel_mi": "1",
        "lisan_kodu": "0",
        "lisan": "",
        "telaffuz": null,
        "birlesikler": "Ay tutulması",
        "font": null,
        "madde_duz": "Ay",
        "gosterim_tarihi": null,
        "anlamlarListe": [
            {
                "anlam_id": "119073",
                "madde_id": "87494",
                "anlam_sira": "1",
                "fiil": "0",
                "tipkes": "0",
                "anlam": "Dünya'nın uydusu olan gök cismi, kamer, mah, meh",
                "gos": "0",
                "ozelliklerListe": [
                    {
                        "ozellik_id": "19",
                        "tur": "3",
                        "tam_adi": "isim",
                        "kisa_adi": "a.",
                        "ekno": "30"
                    },
                    {
                        "ozellik_id": "44",
                        "tur": "1",
                        "tam_adi": "gök bilimi",
                        "kisa_adi": "gök b.",
                        "ekno": "93"
                    }
                ]
            }
        ]
    }
]

Normalde uygulamayı açık kaynak olarak paylaşmak istiyordum. Ama bunu yapmam bana yasal zorluk çıkaracaksa mecbur paylaşamayacağım :frowning_face:

Ben de

Ben bunu kesinlikle yapacağım hocam.

15 yıldır(hadi 12 sene olsun) hatırlayamamışlar. Şimdi hatırlayacaklarını zannetmesem de… İnşallah.

Aşağıdaki bağlantılar yardımcı olur mu? (dosyalar paylaşıldığına göre yasaldır diye düşünüyorum)

1 Beğeni

Bilemiyorum, işi sağlama almak için TDK Başkanlığına CİMER’den başvurdum ben. Sonuç gelirse buraya yazacağımı da belirtmiştim.

Edit: Ha ama şu olabilir. Github’da ogun beyin gmaili var. Bir de ona mail atmayı deneyeyim.

Edit 2: Normalde rahatsız etmem ama gmail paylaştığına göre çok da dert etmediğini düşünüyorum, neyse

TDK Türkçe sözlük android uygulamasında veritabanına ulaşabiliyorsun. 19 mb civarında

1 Beğeni

2004 yılı. Ancak başka bir sonuç bulamadım sizin gibi.

Merhaba arkadaşlar, CİMER’den mesaj geldi.

"Kurumumuz yayımladığı basılı eserlere veya genel ağ sayfasında erişime sunduğu eserlerine ait veri tabanlarını paylaşmamaktadır."

İyi dileklerimizle.

:frowning:

Bu adamlara inat yakında kaynak kodunu da apk dosyasını da Fdroid üzerinden paylaşacağım yaptığım uygulamanın inşaallah.

3 Beğeni

ÖİV %7,5’tan %10’a çıkarılırken, elektrikli araçlardaki ÖTV ise %400 arttırılmış. Bir de bunu görünce tam oldu. Üniversite zamanında bu ülkeden gitmiş olacağım.

1 Beğeni

Ben de aynı şeyi planlıyor ve arzuluyorum. Umarım başarırız :slight_smile:

2 Beğeni