aboutsummaryrefslogtreecommitdiffstats
path: root/webapi/holodex.py
blob: 9ecad6073c71563d11afdaec78bb886e5c07f330 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from webapi.web_api import WebAPI


class HolodexAPI(WebAPI):
    """
    Class for interacting with the Holodex API
    """

    def __init__(self, api_key: str = None, member_count: int = 300,
                 organization: str = "Nijisanji"):
        super().__init__(api_key = api_key, base_url = "https://holodex.net/api/v2/")
        self.member_count = member_count
        self.organization = organization
        self._inactive_channels = []

    def get_data_all_channels(self) -> list:
        """
        Gets data for all channels in a particular organization
        """
        members = self.member_count
        data = []
        filtered_data = []
        offset = 0
        while members > 0:
            data += self._download_url(
                f"channels?type=vtuber&offset={offset}&limit=100&org={self.organization}")
            members -= 100
            offset += 100
        for channel in data:
            if channel['inactive'] is False:
                channel['description'] = self.get_channel_description(channel['id'])
                filtered_data.append(channel)
            else:
                self._inactive_channels.append(channel['id'])
        return filtered_data

    def get_exclude_channels(self) -> list:
        """
        Gets the list of excluded channels
        """
        return self._inactive_channels

    def get_view_count(self, channel_id: str) -> int:
        """
        Gets the view count for a particular channel
        """
        data = self._download_url(f"channels/{channel_id}")
        return data['view_count']

    def get_channel_description(self, channel_id: str) -> str:
        """
        Gets the description for a particular channel
        """
        data = self._download_url(f"channels/{channel_id}")
        return data['description']
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage