Skip to content

Module weheartpy.models

None

None

View Source
# The objects through which the results will be returned.

import requests

from bs4 import BeautifulSoup as bs

class Entry():

    '''

    Base class of a weheartit.com "post" or entry, as they like to call it.

    - attributes:

    - - id: `int` : entry id

    - - username: `str`: username of creator of the post.

    - - url: `str`: url of the post.

    - - image: `str`: a `.jpg` link to the image of the post.

    this class is not meant to be modified or instantiated by you, rather the API.

    you will be utilizing this object to deal with the results you get from `popular()` or `search_entries()`

    '''

    def __init__(self, id: int, username: str,entry: str, image: str, title: str=None) -> None:

        self.id = id

        self.username = username

        self.url = "https://weheartit.com" + entry

        self.image = image

        self.title = title

    def __repr__(self) -> str:

        return f"Entry(id={self.id}, username={self.username}, url={self.url}, image={self.image}, title={self.title})"

    def __eq__(self, __o: object) -> bool:

        return self.url == __o.url

    def __ne__(self, __o: object) -> bool:

        return self.url != __o.url

class Collection():

    '''

    The base `Collection` object through which you can access collections

    - attributes

    - - username: `str`: username of the collection creator

    - - link: `str`: link to the collection

    - - title: `str`: title of the collection

    - methods

    - - `get_full_collection`: returns the `Collection` object with (first page) images inside the collection and its description.

    '''

    def __init__(self, username: str, title: str, link: str) -> None:

        self.username = username

        self.title = title

        self.link = link

        self.description = None

        self.images = None

    def __repr__(self) -> str:

        return f"Collection(username={self.username}, title={self.title}, link={self.link}), description={self.description}, images={self.images}"

    def __eq__(self, __o: object) -> bool:

        return self.link.casefold() == __o.link.casefold()

    def __ne__(self, __o: object) -> bool:

        return self.link.casefold() != __o.link.casefold()

    def get_full_collection(self):

        '''

        return the `Collection` with the (first page) images inside and its description.

        ```

        cocs = whi.search_collections("egirl")

        for collection in cocs:

            print(collection.description, collection.images)

        ```

        '''

        res = requests.get(self.link)

        res = bs(res.text, features="lxml")

        desc = res.find_all('p', {'class': 'text-gray'})

        desc = "".join([d.text for d in desc])

        entries = []

        entrier = res.find_all('a', {'class': 'js-entry-detail-link js-blc js-blc-t-entry'})

        for e in entrier:

            entries.append("https://data.whicdn.com" + (e['href']).replace("entry", "images") + "/original.jpg")

        self.images = entries

        self.description = desc

        return self

class User():

    '''

    Base class for one weheartit user.

    - attributes

    - - username: `str`: username of the user.

    - - name: `str`: name of the user.

    - - avatar: link to the avatar of the user.

    '''

    def __init__(self, username: str, name: str, avatar: str) -> None:

        self.username = username

        self.name = name

        self.avatar = avatar

    def __repr__(self) -> str:

        return f"User(username={self.username}, name={self.name}, avatar={self.avatar})"

    def __eq__(self, __o: object) -> bool:

        return self.username.casefold() == __o.username.casefold()

    def __ne__(self, __o: object) -> bool:

        return self.username.casefold() != __o.username.casefold()

Classes

Collection

class Collection(
    username: str,
    title: str,
    link: str
)
View Source
class Collection():

    '''

    The base `Collection` object through which you can access collections

    - attributes

    - - username: `str`: username of the collection creator

    - - link: `str`: link to the collection

    - - title: `str`: title of the collection

    - methods

    - - `get_full_collection`: returns the `Collection` object with (first page) images inside the collection and its description.

    '''

    def __init__(self, username: str, title: str, link: str) -> None:

        self.username = username

        self.title = title

        self.link = link

        self.description = None

        self.images = None

    def __repr__(self) -> str:

        return f"Collection(username={self.username}, title={self.title}, link={self.link}), description={self.description}, images={self.images}"

    def __eq__(self, __o: object) -> bool:

        return self.link.casefold() == __o.link.casefold()

    def __ne__(self, __o: object) -> bool:

        return self.link.casefold() != __o.link.casefold()

    def get_full_collection(self):

        '''

        return the `Collection` with the (first page) images inside and its description.

        ```

        cocs = whi.search_collections("egirl")

        for collection in cocs:

            print(collection.description, collection.images)

        ```

        '''

        res = requests.get(self.link)

        res = bs(res.text, features="lxml")

        desc = res.find_all('p', {'class': 'text-gray'})

        desc = "".join([d.text for d in desc])

        entries = []

        entrier = res.find_all('a', {'class': 'js-entry-detail-link js-blc js-blc-t-entry'})

        for e in entrier:

            entries.append("https://data.whicdn.com" + (e['href']).replace("entry", "images") + "/original.jpg")

        self.images = entries

        self.description = desc

        return self

Methods

get_full_collection

def get_full_collection(
    self
)

return the Collection with the (first page) images inside and its description.

cocs = whi.search_collections("egirl")
for collection in cocs:
    print(collection.description, collection.images)
View Source
    def get_full_collection(self):

        '''

        return the `Collection` with the (first page) images inside and its description.

        ```

        cocs = whi.search_collections("egirl")

        for collection in cocs:

            print(collection.description, collection.images)

        ```

        '''

        res = requests.get(self.link)

        res = bs(res.text, features="lxml")

        desc = res.find_all('p', {'class': 'text-gray'})

        desc = "".join([d.text for d in desc])

        entries = []

        entrier = res.find_all('a', {'class': 'js-entry-detail-link js-blc js-blc-t-entry'})

        for e in entrier:

            entries.append("https://data.whicdn.com" + (e['href']).replace("entry", "images") + "/original.jpg")

        self.images = entries

        self.description = desc

        return self

Entry

class Entry(
    id: int,
    username: str,
    entry: str,
    image: str,
    title: str = None
)
View Source
class Entry():

    '''

    Base class of a weheartit.com "post" or entry, as they like to call it.

    - attributes:

    - - id: `int` : entry id

    - - username: `str`: username of creator of the post.

    - - url: `str`: url of the post.

    - - image: `str`: a `.jpg` link to the image of the post.

    this class is not meant to be modified or instantiated by you, rather the API.

    you will be utilizing this object to deal with the results you get from `popular()` or `search_entries()`

    '''

    def __init__(self, id: int, username: str,entry: str, image: str, title: str=None) -> None:

        self.id = id

        self.username = username

        self.url = "https://weheartit.com" + entry

        self.image = image

        self.title = title

    def __repr__(self) -> str:

        return f"Entry(id={self.id}, username={self.username}, url={self.url}, image={self.image}, title={self.title})"

    def __eq__(self, __o: object) -> bool:

        return self.url == __o.url

    def __ne__(self, __o: object) -> bool:

        return self.url != __o.url

User

class User(
    username: str,
    name: str,
    avatar: str
)
View Source
class User():

    '''

    Base class for one weheartit user.

    - attributes

    - - username: `str`: username of the user.

    - - name: `str`: name of the user.

    - - avatar: link to the avatar of the user.

    '''

    def __init__(self, username: str, name: str, avatar: str) -> None:

        self.username = username

        self.name = name

        self.avatar = avatar

    def __repr__(self) -> str:

        return f"User(username={self.username}, name={self.name}, avatar={self.avatar})"

    def __eq__(self, __o: object) -> bool:

        return self.username.casefold() == __o.username.casefold()

    def __ne__(self, __o: object) -> bool:

        return self.username.casefold() != __o.username.casefold()