Skip to main content

Hafif, CLI tabanlı akıllı arama motoru

Project description

🔎 traisearch

Hafif, sıfır bağımlılıklı CLI tabanlı akıllı arama motoru.
Sadece Python standart kütüphanesi. Dış paket yok.

traisearch "bitcoin kaç tl"
traisearch "dolar kaç tl"
traisearch "son dakika haber"
traisearch "yapay zeka nedir"

📋 İçindekiler


✨ Özellikler

Özellik Detay
Sıfır bağımlılık Sadece Python stdlib (urllib, json, xml, argparse…)
Akıllı intent tespiti Keyword puanlama, çok kelimeli ifade eşleşmesi
4 canlı veri kaynağı CoinGecko, Frankfurter, BBC RSS, Wikipedia TR
Fusion motoru Birden fazla kaynak → tek temiz cevap
Retry sistemi Her API isteğinde 3 deneme, kademeli bekleme
Graceful hata yönetimi Sistem asla crash olmaz, her zaman anlamlı çıktı
Windows uyumlu UTF-8 reconfigure, traisearch "sorgu" olarak çalışır
pip kurulumu pip install -e . ile global komut olarak yüklenir

⚡ Kurulum

Gereksinimler

  • Python 3.8+
  • İnternet bağlantısı (API'lere erişim için)

pip ile kur

git clone https://github.com/kullanici/traisearch.git
cd traisearch
pip install -e .

-e (editable) bayrağı sayesinde src/ altındaki değişiklikler
anında yansır, yeniden kurulum gerekmez.

Kurulumu doğrula

traisearch --versiyon
# traisearch 1.0.0

traisearch --help

🚀 Kullanım

Temel sözdizimi

traisearch "sorgunuz"

Kripto Para

traisearch "bitcoin kaç tl"
traisearch "ethereum fiyatı"
traisearch "solana kaç dolar"
traisearch "dogecoin"
traisearch "btc"

Döviz Kuru

traisearch "dolar kaç tl"
traisearch "euro kaç tl"
traisearch "sterlin kaç"
traisearch "japon yeni"
traisearch "chf kuru"

Haberler

traisearch "son dakika haber"
traisearch "gündem ne"
traisearch "bugün ne oldu"
traisearch "teknoloji haberleri"
traisearch "ekonomi haberleri"

Bilgi / Ansiklopedi

traisearch "yapay zeka nedir"
traisearch "blockchain nasıl çalışır"
traisearch "kuantum bilgisayar nedir"
traisearch "türkiye tarihi"
traisearch "einstein kimdir"

Yardım

traisearch           # yardım menüsü
traisearch --help
traisearch --versiyon

🏗 Mimari

Kullanıcı Girdisi
      │
      ▼
  ┌─────────┐
  │  cli.py │  ← argparse, Windows UTF-8 fix
  └────┬────┘
       │ sorgu: str
       ▼
  ┌─────────┐
  │ core.py │  ← sistem orkestrasyonu
  └────┬────┘
       │
   ┌───┴──────────────────────────┐
   │                              │
   ▼                              ▼
┌──────────┐              ┌────────────┐
│ analiz.py│              │  router.py │
│          │─── intent ──▶│            │
│ intent   │              │ hangi API? │
│ detection│              └─────┬──────┘
└──────────┘                    │
                                ▼
                       ┌─────────────────┐
                       │  kaynaklar.py   │
                       │                 │
                       │ ┌─────────────┐ │
                       │ │  CoinGecko  │ │  kripto
                       │ ├─────────────┤ │
                       │ │Frankfurter  │ │  döviz
                       │ ├─────────────┤ │
                       │ │  BBC RSS    │ │  haber
                       │ ├─────────────┤ │
                       │ │  Wikipedia  │ │  bilgi
                       │ └─────────────┘ │
                       └────────┬────────┘
                                │ [sonuç listesi]
                                ▼
                          ┌──────────┐
                          │ fusion.py│  ← birleştir, duplikat temizle
                          └────┬─────┘
                               │ birlesik_veri
                               ▼
                        ┌────────────┐
                        │formatter.py│  ← Türkçe doğal dil
                        └─────┬──────┘
                              │ str
                              ▼
                         print(cevap)

📁 Modüller

cli.py — Giriş Noktası

  • argparse ile sorgu argümanını alır
  • Windows'ta sys.stdout.reconfigure(encoding="utf-8") uygular
  • core.ara(sorgu) çağırır, sonucu print eder
  • Boş girdide yardım menüsü gösterir

core.py — Orkestratör

  • Tüm pipeline'ı sırayla çalıştırır
  • try/except ile sistem çökmelerini yakalar
  • Her koşulda anlamlı string döndürür

analiz.py — Intent Detection

  • ML yok, saf keyword tabanlı puanlama
  • INTENT_AGIRLIKLAR: her intent için ağırlıklı keyword sözlüğü
  • COKLU_IFADELER: çok kelimeli ifadelere yüksek öncelik
  • Türkçe karakter normalizasyonu (ş→s, ğ→g vb.)
  • Tam kelime + kısmi eşleşme
  • 0–100 arası güven skoru
  • kripto_sembol_bul(), doviz_sembol_bul(), wikipedia_arama_terimi() yardımcıları

router.py — Yönlendirici

  • Intent → API fonksiyonu eşlemesi
  • _kripto_route, _doviz_route, _haber_route, _bilgi_route, _genel_route
  • USD sorulduğunda EUR'u da paralel çeker (karşılaştırma için)
  • Haber kategorisini sorgudaki anahtar kelimeden tespit eder

kaynaklar.py — Veri Kaynakları

# Hepsi bu formatta döner:
{
    "source": "coingecko",   # kaynak adı
    "type":   "kripto",      # veri tipi
    "data":   { ... },       # içerik
    "hata":   None,          # hata mesajı (varsa)
    "basarili": True,        # başarı bayrağı
}
Kaynak Endpoint Kullanım
CoinGecko api.coingecko.com/api/v3 Kripto fiyat, değişim, hacim, piyasa değeri
Frankfurter api.frankfurter.app Günlük döviz kuru (ECB verisi)
BBC RSS feeds.bbci.co.uk/turkce/rss.xml Türkçe haber başlıkları
Wikipedia tr.wikipedia.org/api/rest_v1 Türkçe ansiklopedi özeti

Retry sistemi:

MAX_RETRY   = 3        # maksimum deneme
TIMEOUT     = 8        # saniye
RETRY_WAIT  = 1.0      # deneme arası bekleme (artan)
  • HTTP 429 (rate limit) → 2x uzun bekleme
  • HTTP 400/401/403/404 → anında dur, retry yok
  • TimeoutError, URLError → kademeli bekleme

fusion.py — Veri Birleştirme

  • KAYNAK_SKORU tablosu: her kaynağa 1–10 güvenilirlik puanı
  • Başarılı sonuçları filtreler, başarısızları atar
  • Intent'e göre farklı birleştirme stratejisi:
    • kripto: en yüksek puanlı kaynağı seç
    • döviz: tüm kurları birleştir
    • haber: duplikat başlıkları temizle (≥%60 örtüşme)
    • bilgi: en uzun özeti seç
  • _haber_duplikat_temizle(): kelime örtüşmesi tabanlı filtre

formatter.py — Türkçe Formatlayıcı

  • Ham veri veya JSON asla gösterilmez
  • _para_formatla(): trilyon/milyar/milyon kısaltmaları
  • _degisim_oku(): ▲ %2.34 artış / ▼ %1.12 düşüş
  • _yon_emoji(): 🚀 📈 ➡️ 🔻 📉
  • Bayrak emoji ile para birimi eşleşmesi
  • Haber özetlerini 120 karakterde, kelime sınırında keser
  • Wikipedia özetini 350 karakterde, cümle sınırında keser

🧠 Intent Sistemi

Intent tespiti saf Python ile, ML kullanmadan yapılır.

Puanlama Örneği

Sorgu: "bitcoin kaç tl"

Çok kelimeli eşleşme:
  "bitcoin kaç" → kripto +18

Tekil keyword eşleşmesi:
  "bitcoin"     → kripto +10
  "kaç"         → kripto +2, doviz +2
  "tl"          → kripto +1, doviz +3
  "coin"        → kripto +7

Toplam:
  kripto = 38   ← kazanan
  doviz  =  5
  haber  =  0
  bilgi  =  0

Güven skoru: min(100, 38/20 × 100) = 100.0

Intent Öncelik Sırası

1. Çok kelimeli özel ifadeler  (en yüksek öncelik, +15–20 puan)
2. Tam kelime eşleşmesi        (tam ağırlık)
3. Kısmi eşleşme               (×0.7 ağırlık, len>3)
4. Uzunluk bonusu              (bilgi intent için ×1.2)
5. Fallback → genel            (toplam puan < 3 ise)

🌐 Veri Kaynakları

CoinGecko

  • URL: https://api.coingecko.com/api/v3/simple/price
  • Ücretsiz: Evet (rate limit: ~30 istek/dk)
  • Dönen veri: USD, TRY, EUR fiyatı + 24s değişim + hacim + piyasa değeri
  • Desteklenen coinler: bitcoin, ethereum, solana, ripple, cardano, dogecoin, avalanche-2, polkadot, litecoin, matic-network, shiba-inu ve daha fazlası

Frankfurter

  • URL: https://api.frankfurter.app/latest
  • Kaynak: Avrupa Merkez Bankası (ECB)
  • Ücretsiz: Evet, sınırsız
  • Desteklenen para birimleri: USD, EUR, GBP, JPY, CHF, RUB, CNY, SAR, AED, KWD
  • Not: TRY baz para olarak desteklenmez, ters çevirme yapılır

BBC News RSS

  • URL: https://feeds.bbci.co.uk/turkce/rss.xml
  • Kategoriler: turkce, dunya, teknoloji, ekonomi
  • Format: XML/RSS → Python xml.etree.ElementTree
  • Güncelleme: Canlı, gerçek zamanlı

Wikipedia Türkçe

  • Arama: tr.wikipedia.org/w/api.php?action=query&list=search
  • Özet: tr.wikipedia.org/api/rest_v1/page/summary/{başlık}
  • Fallback: extracts API (özet endpoint başarısız olursa)

📸 Örnek Çıktılar

Kripto Fiyatı

🚀 Bitcoin (BTC) fiyatı:

  🇹🇷 TL   →  3.456.789 ₺
  🇺🇸 USD  →  98.234,50 $
  🇪🇺 EUR  →  91.450,20 €

  📊 24s değişim  →  ▲ %3.21 artış
  💹 24s hacim   →  42.30 milyar $
  🏦 Piyasa değ. →  1.95 trilyon $

  📡 Kaynak: CoinGecko

Döviz Kuru

🇺🇸 Amerikan Doları (USD) döviz kuru:

  1 USD  =  35,1240 ₺
  1 EUR  =  38,4510 ₺ 🇪🇺
  1 GBP  =  45,2300 ₺ 🇬🇧

  📅 Tarih: 2025-04-26
  📡 Kaynak: Frankfurter

Son Dakika Haber

📰 BBC News Türkçe — Son Dakika Haberleri
   (6 haber bulundu)

  1. Türkiye ekonomisinde büyüme beklentisi
     └─ Merkez Bankası açıklamasına göre yıllık büyüme...

  2. Yapay zeka regülasyonları güncellendi
     └─ AB, yeni yönetmelikler çerçevesinde...

  ...

  📡 Kaynak: BBC News RSS

Bilgi / Wikipedia

📚 Yapay Zeka
   bilgisayar bilimi dalı

  Yapay zeka (YZ), insan zekasının bilgisayarlar tarafından
  simüle edilmesini kapsayan bilgisayar bilimi dalıdır. 
  Makine öğrenmesi, derin öğrenme ve doğal dil işleme gibi 
  alt alanları içerir...

  🔗 Daha fazla: https://tr.wikipedia.org/wiki/Yapay_zeka
  📡 Kaynak: Wikipedia Türkçe

⚙️ Kısıtlar ve Tasarım Kararları

Kısıt Neden
Sadece stdlib Kurulum sürtünmesini sıfırla indir, her Python ortamında çalış
urllib.request requests kütüphanesi yasak, aynı işlevi görür
ML yok Ağırlık sözlükleri %95 doğrulukla iş yapar, model gerektirmez
Sunucu yok CLI aracı; web sunucusu gereksiz karmaşıklık ekler
Her zaman çıktı try/except tüm pipeline'ı sarar, crash olmaz
Türkçe karakter normalizasyonu "şeker" ve "seker" aynı kelimeyi eşler

🗂 Proje Yapısı

traisearch/
├── pyproject.toml          ← pip metadata & entry point
├── setup.py                ← eski pip uyumluluğu için fallback
├── README.md
└── src/
    └── traisearch/
        ├── __init__.py
        ├── cli.py          ← giriş noktası (traisearch komutu)
        ├── core.py         ← orkestratör
        ├── analiz.py       ← intent detection
        ├── router.py       ← API yönlendirici
        ├── kaynaklar.py    ← CoinGecko, Frankfurter, BBC, Wikipedia
        ├── fusion.py       ← veri birleştirme motoru
        └── formatter.py    ← Türkçe doğal dil formatlayıcı

📄 Lisans

Bu yazılım “TraiSearch License v1.0” kapsamında sunulmaktadır.

✔ İzin verilenler

  • Yazılımın kişisel ve eğitim amaçlı kullanımı
  • Paket olarak çalıştırılması

❌ Yasaklananlar

  • Kaynak kodun değiştirilmesi
  • Türev ürün oluşturulması
  • Yeniden dağıtım
  • Ticari kullanım

⚠️ Not

Bu yazılım “olduğu gibi” sağlanır. Herhangi bir garanti verilmez.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

traisearch-1.0.0.tar.gz (22.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

traisearch-1.0.0-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file traisearch-1.0.0.tar.gz.

File metadata

  • Download URL: traisearch-1.0.0.tar.gz
  • Upload date:
  • Size: 22.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.8

File hashes

Hashes for traisearch-1.0.0.tar.gz
Algorithm Hash digest
SHA256 18af7a231cf95bc6bba4dd4210f2830dc2f9c42035104f372e8f80ae834ef740
MD5 23e8de91eace2854c1ce1c5633d49ef5
BLAKE2b-256 58d7611f3f54c31fb15bf3364ae42aef3b8fddd9129935e202d724f30dcb00b6

See more details on using hashes here.

File details

Details for the file traisearch-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: traisearch-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 25.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.8

File hashes

Hashes for traisearch-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2a1bbb89c441f7380775917b0a891b45b9fb408f0ee0aad1928381c1fd3a1b66
MD5 3a7250044cb2e4618737d0d0ee0fa1ad
BLAKE2b-256 1dcfcd9ec5defd86ca6db8e9f8a08e4c78de16df9ed63843b4dd7e027c97071b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page