Metadata-Version: 2.1
Name: eksipy
Version: 1.0.2
Summary: Unofficial API for Eksi Sozluk.
Home-page: https://github.com/quiec/EksiPy
Author: Yusuf Usta
Author-email: yusuf@fusuf.codes
Maintainer: Yusuf Usta
Maintainer-email: yusuf@fusuf.codes
License: GPL3
Keywords: eksi,eksisozluk,api,eksi-sozluk
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Description-Content-Type: text/markdown
Requires-Dist: requests
Requires-Dist: markdownify
Requires-Dist: bs4
Requires-Dist: unidecode
Requires-Dist: fake-useragent
Requires-Dist: lxml

# eksipy
kutsal bilgi kaynağı için unofficial ve private API, giriş yapabilir; mesaj gönderebilir, entry gönderebilirsiniz. 

![](https://img.shields.io/pypi/pyversions/eksipy?style=flat-square) ![](https://img.shields.io/pypi/v/eksipy?style=flat-square) ![PyPI - License](https://img.shields.io/pypi/l/eksipy?style=flat-square) ![](https://www.codefactor.io/repository/github/quiec/eksipy/badge) ![](https://deepsource.io/gh/Quiec/eksipy.svg/?label=active+issues&show_trend=true) ![DeepSource](https://deepsource.io/gh/Quiec/eksipy.svg/?label=resolved+issues&show_trend=true)

> bu proje mobil(rest) api veya herhangi bir api **kullanmamaktadır**. tamamen bs4 ile web'e istek gönderilmektedir. _projenin temel amacı ekşi sözlükte ne yapabiliyorsanız bu kütüphane yapabilmektedir. v1.0 itibariyle çoğu fonksiyon desteklenmektedir._

> bu kütüphane **python 3.6** ve üstünde çalışmaktadır.
## 📦 Kurulum
[pip](https://pypi.org/) kullanarak kolay bir şekilde kurabilirsiniz:

```sh
pip install eksipy
```

## 🛠 Fonksiyonlar
### Sınıf: `Eksi`
|Fonksiyon|Parametre|Açıklama|Dönen Değer
|--|--|--|--|
|`__init__`|`session=None : Session`|Giriş yaptığınızda dönen Session'u buraya yazabilirsiniz.|`None`|
|`bugun`|`page=1` (Sayfa)|Bugün feed'ini döndürür. Tek sayfada (giriş yapmadıysanız) 50 tane başlık olmalıdır|`Liste[Topic]`|
|`gundem`|`page=1` (Sayfa)|Gündem feed'ini döndürür. Tek sayfada (giriş yapmadıysanız) 50 tane başlık olmalıdır|`Liste[Topic]`|
|`autocomplete`|`aranacak kelime`|Ekşi sözlük arama, autocomplete. |`JSON`|

### Sınıf: `Kullanici`
|Fonksiyon|Parametre|Açıklama|Dönen Değer
|--|--|--|--|
|`__init__`|`save_cookies=True`|True yazarsanız sonraki kullanımlarda giriş yapmak yerine cookies kaydeder|`None`|
|`login`|`email: str`, `password: str`|Eposta ve şifre ile giriş yapar|`User`|
|`send_entry`|`baslik: Topic`, `entry: str`|Entry gönderir, Başlık `Topic` modeli olmalıdır. |`Entry (modeli)`|
|`fav_entry`|`entry: int, Entry`|Entry favoriler, başarılı olursa son favori sayısını döndürür|`int`|
|`unfav_entry`|`entry: int, Entry`|Entry favori geri çeker, başarılı olursa son favori sayısını döndürür|`int`|
|`delete_entry`|`entry: int, Entry`|Entry siler, başarılı olursa True döner. |`boolean`|
|`get_messages`|`page: int`, `archive=False : boolean` |Mesaj kutunuzu Liste halinde döndürür. Arşivi almak isterseniz ikinci parametreyi True yapabilirsiniz. |`List[Message]`|
|`get_history`|`message: int, Message`|Kullanıcıyla yaptığınız mesajlaşmanın geçmişini getirir.|`List[MessageHistory]`|
|`delete_message`|`thread_id: int, Message`|Kullanıcıyla yaptığınız mesajlaşmanızı siler.|`Boolean`|
|`archive_message`|`thread_id: int, Message`|Kullanıcıyla yaptığınız mesajlaşmanızı arşivler.|`Boolean`|
|`search_message`|`keyword: str`, `page: int`|Mesajlaşma arar.|`List[Message]`|
|`send_message`|`user: User, str`, `message: str`|Belirttiğiniz kişiye mesaj gönderir.|`Boolean`|
|`upvote`|`entry: Entry`|Entry Upvote'lar.|`Boolean`|
|`downvote`|`entry: Entry`|Entry Downvote'lar.|`Boolean`|
|`get_user`|`user: str`|Kullanıcı getirir.|`User`|
|`get_user_entrys`|`user: str, User`, `page: int`|Kullanıcının entrylerini getirir.|`List[Entry]`|
|`logout`||Çıkış yapar.|`None`|

### Sınıf: `Baslik`
|Fonksiyon|Parametre|Açıklama|Dönen Değer
|--|--|--|--|
|`__init__`|`baslik: str`, `page: int`, `session: Session`|Başlığın sayfasını getirir.|`None`|
|`get_topic`||`Topic` olarak başlığı döndürür.|`Topic`|
|`get_entrys`|`a = None : str`|Entryleri getirir. `a` parametresi `popular` gibi a değişkenleri olabilir ya da boş bırakabilirsiniz. |`List[Entry]`|
|`autocomplete`|`aranacak kelime`|Ekşi sözlük arama, autocomplete. |`JSON`|

### Sınıf: `Giri`
|Fonksiyon|Parametre|Açıklama|Dönen Değer
|--|--|--|--|
|`__init__`|`entry: int`, `session: Session`|Entry sayfasını getirir.|`None`|
|`get_entry`||`Entry` olarak entryi döndürür.|`Entry`|

## 🛠 Modeller
### Sınıf: `Message`
|Değişken|Açıklama|
|--|--|
|`id`|Mesajlaşma numarası|
|`from_user`|Mesajı gönderen kişinin nick'i|
|`message`|Mesaj sayısı|
|`preview`|En son gönderilen mesaj|
|`date`|En son mesaj atılma zamanı|
|`read`|Mesajı okuduysanız True döndürür|
|`unread`|Mesajı okumadıysanız True döndürür|
|`thread_id`|Mesajı silmek veya arşivlemek için gerekli olan değişken|

### Sınıf: `MessageHistory`
|Değişken|Açıklama|
|--|--|
|`incoming`|Mesaj size geldiyse True döner|
|`outcoming`|Mesajı siz attıysanız True döner|
|`message`|Mesaj|
|`date`|Mesajın tarihi|

### Sınıf: `Topic`
|Değişken|Açıklama|
|--|--|
|`id`|Başlık numarası|
|`title`|Başlık|
|`giri`|Entry sayısı|
|`current_page`|Şu anki sayfanız|
|`max_page`|Maksimum sayfa|

|Fonksiyon|Açıklama|
|--|--|
|`url`|Başlığın adresini döndürür|
|`slug`|Başlığın slug halini döndürür|

### Sınıf: `Entry`
|Değişken|Açıklama|
|--|--|
|`id`|Entry numarası|
|`author`|Entry yazarı|
|`date`|Entry gönderilme tarihi (Unix)|
|`edited`|Düzenlendiyse Unix olarak düzenlenme zamanı döndürür|
|`fav`|Favori sayısını döndürür|
|`author_id`|Yazarın numarasını döndürür|
|`comment`|Yorum sayısını döndürür|
|`topic`|Başlığı döndürür|
|`entry`|Entry'i döndürür _(bununla almayın)_|

|Fonksiyon|Açıklama|
|--|--|
|`dict`|Entry'i dict olarak döndürür|
|`url`|Entry adresini döndürür|
|`text`|Entry yazı olarak döndürür|
|`md`|Markdown olarak entryi döndürür **(Önerilen)**|
|`html`|HTML olarak entryi döndürür|

### Sınıf: `User`
|Değişken|Açıklama|
|--|--|
|`id`|Kullanıcı numarası|
|`nick`|Kullanıcı adı|
|`total_entry`|Toplam entry sayısı|
|`last_month`|Geçen ay gönderdiği entry|
|`last_week`|Geçen hafta gönderdiği entry|
|`today`|Bugün gönderdiği entry|
|`last_entry`|En son entry gönderdiği zaman|
|`pinned_entry`|Başa tutturulan Entry.|
|`badges`|Profil rozetleri|

|Fonksiyon|Açıklama|
|--|--|
|`url`|Kullanıcının adresini döndürür|

## 🔷 Örnek Kullanımlar
Burdaki dosyada örnek kullanımları anlatmaya çalıştım.
> Ayrıca hemen birkaç örnek verelim.

**Başlık entrylerini getirelim:**
```python
import eksipy

# Başlığı getirelim
Entryler = eksipy.Baslik('php').get_entrys()
print(f'{Entryler[0].topic.title}\n')
for entry in Entryler:
    print(10 * '*')
    print(entry.text())
    print('Yazar: ' + entry.author)
```

**Giriş yapıp entry gönderelim:**
```python
import eksipy

User = eksipy.Kullanici()
User.login('eposta', 'sifre)
User.send_entry(eksipy.Baslik('php').get_topic(), 'dunyanin en iyi programlama dili')
```

## ☑️ To-Do
- [ ] Kendi Exception sınıflarımız.
- [ ] Olay.
- [ ] Daha iyi bir dokümantasyon (Bence şu anki gayet ii).
- [ ] Tüm kullanıcı istatistikleri, görseller, sorunsallar...
- [ ] Zengin bir CLI uygulaması

## 💻 Contributors
Developer [Quiec](https://t.me/fusuf), yusuf@quiec.tech

Idea [SelaxG](https://t.me/SelaxG),
## 📒 License
eksipy is available under the GPLv3 license. See the LICENSE file for more info.


