Skip to content

Instantly share code, notes, and snippets.

@SparkySimp
Created April 3, 2022 12:27
Show Gist options
  • Save SparkySimp/915a250fec35f450aee4de59533e5127 to your computer and use it in GitHub Desktop.
Save SparkySimp/915a250fec35f450aee4de59533e5127 to your computer and use it in GitHub Desktop.
Turkish Language Association Dictionary Search CLI in Python
#!/bin/python
import urllib.parse
import argparse
import requests as req
import json
from pprint import pp
import sys
## Komut Satırı Girdileri Çözümleyicisini oluştur
parser = argparse.ArgumentParser(description="Türk Dil Kurumu Sözlüklerinde ara")
## Alt Komut Listesini yapılandır
subparsers = parser.add_subparsers(help="Sözlükler")
# Güncel Türkçe Sözlük
gts = subparsers.add_parser('gts', help="Güncel Türkçe Sözlük")
gts.add_argument('kelime', type=str, help="Aranacak Kelime")
# Atasözleri ve Deyimler Sözlüğü
ads = subparsers.add_parser('ads', help="Atasözleri ve Deyimler Sözlüğü")
ads.add_argument('soz', type=str, nargs='+')
def gts_ara(kelime):
"""Güncel Türkçe Sözlük'te kelimeyi ara"""
target=urllib.parse.quote(kelime)
target=f"https://sozluk.gov.tr/gts?ara={target}"
# API'ye bir GET isteği gönder
r = req.get(target, headers= {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.88 Safari/537.36'
}) # User-Agent değiştirmeyince kapanıyor
if r.status_code == req.codes.ok:
if "error" in json.loads(r.text):
# Bulamadı
return [{"error": 404}]
else:
# Bulunan sonucu liste olarak döndür
anlam = json.loads(r.text)
return anlam
def ads_ara(soz):
"""Atasözleri ve Deyimler Sözlüğü'nde sözü ara"""
# Atasözü - Deyim
target=urllib.parse.quote(' '.join(soz))
target=f"https://sozluk.gov.tr/atasozu?ara={target}"
# API'ye bir GET isteği gönder
r = req.get(target, headers= {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.88 Safari/537.36'
})
return json.loads(r.text)
args = parser.parse_args()
# Eğer ilk anahtar 'kelime' ise, Güncel Türkçe Sözlük aranıyordur.
if 'kelime' in vars(args):
veri = gts_ara(args.kelime)
if 'error' in veri[0]:
print(f"{args.kelime} sözlükte bulunamadı")
sys.exit(1)
else:
# pp(veri)
indent = ' '*4
for madde in veri:
print(f"{(int(madde['kac']) + 1)} ({madde['lisan'] if ('lisan' in madde) else 'Türkçe'}):")
for anlam in madde["anlamlarListe"]:
ozellikler = ''
if "ozelliklerListe" in anlam:
ozellikler = anlam['ozelliklerListe']
ozellikler = [ ozellik['kisa_adi'] for ozellik in ozellikler ]
ozellikler = ', '.join(ozellikler)
if ozellikler != '':
ozellikler = f'({ozellikler})'
print(f'{indent}{anlam["anlam_sira"]}{ozellikler}: {anlam["anlam"]}')
# Eğer ilk anahtar 'soz' ise, Atasözleri ve Deyimler Sözlüğü aranıyordur
elif 'soz' in vars(args):
pp(ads_ara(args.soz))
# Değilse bir hata vardır
else:
pass # Hata argparse tarafından yakalanır
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment