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
- Kurulum
- Kullanım
- Mimari
- Modüller
- Intent Sistemi
- Veri Kaynakları
- Örnek Çıktılar
- Kısıtlar ve Tasarım Kararları
✨ Ö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ğı sayesindesrc/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ı
argparseilesorguargümanını alır- Windows'ta
sys.stdout.reconfigure(encoding="utf-8")uygular core.ara(sorgu)çağırır, sonucuprinteder- Boş girdide yardım menüsü gösterir
core.py — Orkestratör
- Tüm pipeline'ı sırayla çalıştırır
try/exceptile 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_SKORUtablosu: 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-inuve 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:
extractsAPI (ö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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18af7a231cf95bc6bba4dd4210f2830dc2f9c42035104f372e8f80ae834ef740
|
|
| MD5 |
23e8de91eace2854c1ce1c5633d49ef5
|
|
| BLAKE2b-256 |
58d7611f3f54c31fb15bf3364ae42aef3b8fddd9129935e202d724f30dcb00b6
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a1bbb89c441f7380775917b0a891b45b9fb408f0ee0aad1928381c1fd3a1b66
|
|
| MD5 |
3a7250044cb2e4618737d0d0ee0fa1ad
|
|
| BLAKE2b-256 |
1dcfcd9ec5defd86ca6db8e9f8a08e4c78de16df9ed63843b4dd7e027c97071b
|