Module eksipy.models

Expand source code
#!/usr/bin/python
# -*- coding: utf8 -*-

# Unofficial Ekşi Sözlük private API.

# Copyright (C) 2020 Yusuf Usta
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.

import re
import html
from typing import List


class Model(object):
    def __init__(self, client, **kwargs):
        self.client = client
        self.__dict__.update(kwargs)


class Message(Model):
    id = None
    from_user = None
    message = None
    preview = None
    date = None
    read = None
    unread = None
    thread_id = None

    def __init__(self, client, **kwargs):
        super().__init__(client, **kwargs)


class MessageHistory(Model):
    incoming = None
    outgoing = None
    message = None
    date = None


class Entry(Model):
    id = None
    author = None
    topic = None
    entry = None
    date = None
    edited = None
    fav_count = None
    comment = None

    def dict(self):
        return self.__dict__

    def url(self):
        return f'https://eksisozluk.com/entry/{self.id}'

    def text(self):
        """
        Entry yazı haline çevirir.
        """

        _ = self.entry.html()
        linkler = self.entry("a")
        for link in linkler.items():
            if link.attr('class') == "b":
                _ = _.replace(html.unescape(link.outerHtml()),
                              f"`{link.text()}`")
                continue
            _ = _.replace(link.outerHtml(),
                          f"[{link.attr('href')} {link.text()}]")
            _ = html.unescape(_).replace("<br/>", "\n")
        return _

    def html(self):
        return self.entry.html()

    def __str__(self):
        return self.text()  # md(str(self.entry).strip())[1:]

    def fav(self) -> int:
        """
        Entry favoriler.
        """

        return self.client.favEntry(self)

    def unfav(self) -> int:
        """
        Entry favorisi kaldırır.
        """

        return self.client.unfavEntry(self)

    def delete(self) -> bool:
        """
        Entry siler.
        """

        return self.client.deleteEntry(self)

    def up(self) -> bool:
        """
        Entry upvote atar.
        """

        return self.client.upVoteEntry(self)

    def down(self) -> bool:
        """
        Entry downvote atar.
        """

        return self.client.downVoteEntry(self)


class Topic(Model):
    id = None
    title = None
    giri = None
    current_page = None
    max_page = None
    slug = None
    url = None

    async def getUrl(self):
        """
        Başlığın adresini getirir.
        """

        if self.url == None:
            return (await self.client.convertToTopic(self.title))
        else:
            return self.url

    def dict(self):
        return self.__dict__

    def __str__(self):
        return self.title

    def __init__(self, client, **kwargs):
        super().__init__(client, **kwargs)

    def getEntrys(self, page=1, day=None, sukela=None) -> List[Entry]:
        """
        Başlığın entrylerini getirir.
        """

        return self.client.getEntrys(self, page, day, sukela)

    def sendEntry(self, entry: str, hidden: bool = False) -> Entry:
        """
        Entry gönderir.
        """

        return self.client.sendEntry(self, entry, hidden)


class User(Model):
    id = None
    nick = None
    total_entry = None
    last_month = None
    last_week = None
    today = None
    last_entry = None
    pinned_entry = None
    badges = []

    def url(self):
        return f'https://eksisozluk.com/biri/{self.nick}'

    def __str__(self):
        return f'https://eksisozluk.com/biri/{self.nick}'

Classes

class Entry (client, **kwargs)
Expand source code
class Entry(Model):
    id = None
    author = None
    topic = None
    entry = None
    date = None
    edited = None
    fav_count = None
    comment = None

    def dict(self):
        return self.__dict__

    def url(self):
        return f'https://eksisozluk.com/entry/{self.id}'

    def text(self):
        """
        Entry yazı haline çevirir.
        """

        _ = self.entry.html()
        linkler = self.entry("a")
        for link in linkler.items():
            if link.attr('class') == "b":
                _ = _.replace(html.unescape(link.outerHtml()),
                              f"`{link.text()}`")
                continue
            _ = _.replace(link.outerHtml(),
                          f"[{link.attr('href')} {link.text()}]")
            _ = html.unescape(_).replace("<br/>", "\n")
        return _

    def html(self):
        return self.entry.html()

    def __str__(self):
        return self.text()  # md(str(self.entry).strip())[1:]

    def fav(self) -> int:
        """
        Entry favoriler.
        """

        return self.client.favEntry(self)

    def unfav(self) -> int:
        """
        Entry favorisi kaldırır.
        """

        return self.client.unfavEntry(self)

    def delete(self) -> bool:
        """
        Entry siler.
        """

        return self.client.deleteEntry(self)

    def up(self) -> bool:
        """
        Entry upvote atar.
        """

        return self.client.upVoteEntry(self)

    def down(self) -> bool:
        """
        Entry downvote atar.
        """

        return self.client.downVoteEntry(self)

Ancestors

Class variables

var author
var comment
var date
var edited
var entry
var fav_count
var id
var topic

Methods

def delete(self) ‑> bool

Entry siler.

Expand source code
def delete(self) -> bool:
    """
    Entry siler.
    """

    return self.client.deleteEntry(self)
def dict(self)
Expand source code
def dict(self):
    return self.__dict__
def down(self) ‑> bool

Entry downvote atar.

Expand source code
def down(self) -> bool:
    """
    Entry downvote atar.
    """

    return self.client.downVoteEntry(self)
def fav(self) ‑> int

Entry favoriler.

Expand source code
def fav(self) -> int:
    """
    Entry favoriler.
    """

    return self.client.favEntry(self)
def html(self)
Expand source code
def html(self):
    return self.entry.html()
def text(self)

Entry yazı haline çevirir.

Expand source code
def text(self):
    """
    Entry yazı haline çevirir.
    """

    _ = self.entry.html()
    linkler = self.entry("a")
    for link in linkler.items():
        if link.attr('class') == "b":
            _ = _.replace(html.unescape(link.outerHtml()),
                          f"`{link.text()}`")
            continue
        _ = _.replace(link.outerHtml(),
                      f"[{link.attr('href')} {link.text()}]")
        _ = html.unescape(_).replace("<br/>", "\n")
    return _
def unfav(self) ‑> int

Entry favorisi kaldırır.

Expand source code
def unfav(self) -> int:
    """
    Entry favorisi kaldırır.
    """

    return self.client.unfavEntry(self)
def up(self) ‑> bool

Entry upvote atar.

Expand source code
def up(self) -> bool:
    """
    Entry upvote atar.
    """

    return self.client.upVoteEntry(self)
def url(self)
Expand source code
def url(self):
    return f'https://eksisozluk.com/entry/{self.id}'
class Message (client, **kwargs)
Expand source code
class Message(Model):
    id = None
    from_user = None
    message = None
    preview = None
    date = None
    read = None
    unread = None
    thread_id = None

    def __init__(self, client, **kwargs):
        super().__init__(client, **kwargs)

Ancestors

Class variables

var date
var from_user
var id
var message
var preview
var read
var thread_id
var unread
class MessageHistory (client, **kwargs)
Expand source code
class MessageHistory(Model):
    incoming = None
    outgoing = None
    message = None
    date = None

Ancestors

Class variables

var date
var incoming
var message
var outgoing
class Model (client, **kwargs)
Expand source code
class Model(object):
    def __init__(self, client, **kwargs):
        self.client = client
        self.__dict__.update(kwargs)

Subclasses

class Topic (client, **kwargs)
Expand source code
class Topic(Model):
    id = None
    title = None
    giri = None
    current_page = None
    max_page = None
    slug = None
    url = None

    async def getUrl(self):
        """
        Başlığın adresini getirir.
        """

        if self.url == None:
            return (await self.client.convertToTopic(self.title))
        else:
            return self.url

    def dict(self):
        return self.__dict__

    def __str__(self):
        return self.title

    def __init__(self, client, **kwargs):
        super().__init__(client, **kwargs)

    def getEntrys(self, page=1, day=None, sukela=None) -> List[Entry]:
        """
        Başlığın entrylerini getirir.
        """

        return self.client.getEntrys(self, page, day, sukela)

    def sendEntry(self, entry: str, hidden: bool = False) -> Entry:
        """
        Entry gönderir.
        """

        return self.client.sendEntry(self, entry, hidden)

Ancestors

Class variables

var current_page
var giri
var id
var max_page
var slug
var title
var url

Methods

def dict(self)
Expand source code
def dict(self):
    return self.__dict__
def getEntrys(self, page=1, day=None, sukela=None) ‑> List[Entry]

Başlığın entrylerini getirir.

Expand source code
def getEntrys(self, page=1, day=None, sukela=None) -> List[Entry]:
    """
    Başlığın entrylerini getirir.
    """

    return self.client.getEntrys(self, page, day, sukela)
async def getUrl(self)

Başlığın adresini getirir.

Expand source code
async def getUrl(self):
    """
    Başlığın adresini getirir.
    """

    if self.url == None:
        return (await self.client.convertToTopic(self.title))
    else:
        return self.url
def sendEntry(self, entry: str, hidden: bool = False) ‑> Entry

Entry gönderir.

Expand source code
def sendEntry(self, entry: str, hidden: bool = False) -> Entry:
    """
    Entry gönderir.
    """

    return self.client.sendEntry(self, entry, hidden)
class User (client, **kwargs)
Expand source code
class User(Model):
    id = None
    nick = None
    total_entry = None
    last_month = None
    last_week = None
    today = None
    last_entry = None
    pinned_entry = None
    badges = []

    def url(self):
        return f'https://eksisozluk.com/biri/{self.nick}'

    def __str__(self):
        return f'https://eksisozluk.com/biri/{self.nick}'

Ancestors

Class variables

var badges
var id
var last_entry
var last_month
var last_week
var nick
var pinned_entry
var today
var total_entry

Methods

def url(self)
Expand source code
def url(self):
    return f'https://eksisozluk.com/biri/{self.nick}'