Created
April 3, 2022 12:27
-
-
Save SparkySimp/915a250fec35f450aee4de59533e5127 to your computer and use it in GitHub Desktop.
Turkish Language Association Dictionary Search CLI in Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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